Purple Calendar API Documentation

Machine-readable OpenAPI 3.0 specification: https://marketplace.moveworks.com/api/purple-suite/calendar/openapi.json

The consolidated all-apps document at https://marketplace.moveworks.com/api/purple-suite/openapi.json can be narrowed to this app with ?apps=calendar, or combined with other apps comma-separated (e.g. ?apps=calendar,itsm).

Overview

Microsoft Graph-compatible Calendar API for Purple Suite --- **Acting as a user (`X-PS-Impersonate-User`).** Every endpoint accepts an optional `X-PS-Impersonate-User` request header whose value is the email of the instance user to act as. The effective user resolves in this order: the header if present, else the instance's configured default MCP user, else none. User-scoped paths additionally accept the literal `me` in place of an email, and Graph-style apps also serve `/me/…` twins of their `/users/{email}/…` paths that resolve the same way. This header is honored by all operations but is intentionally omitted from each operation's parameter list so it is not surfaced as a per-tool argument by MCP clients; see the `ImpersonateUser` entry under `components.parameters`.

Endpoints

GET /api/purple-suite/calendar/events

List Purple Calendar events

Every meeting and appointment stored in Purple Calendar, across all users, as Microsoft Graph-shaped Event objects in a `value` array. This op only pages with _top/_skip — when the question is about a person or a date range, prefer the calendarView tools, which take startDateTime/endDateTime.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
$topqueryintegernoNumber of items to return
$skipqueryintegernoNumber of items to skip
limitqueryintegernoAlias for $top — max items per page (default 50)

Responses

200
Paginated list of events

application/json

  • value array

    array of:

    Event

    • id string
    • subject string
    • body object

      ItemBody

      • contentType string
      • content string
    • bodyPreview string
    • start object

      DateTimeTimeZone

      • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
      • timeZone string requiredIANA or Windows timezone name
    • end object

      DateTimeTimeZone

      • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
      • timeZone string requiredIANA or Windows timezone name
    • location object

      Location

      • displayName string
      • locationType string
      • uniqueId string
      • uniqueIdType string
    • locations array

      array of:

      Location

      • displayName string
      • locationType string
      • uniqueId string
      • uniqueIdType string
    • attendees array

      array of:

      Attendee

      • emailAddress object

        EmailAddress

        • name string
        • address string
      • type string
      • status object
        • response string
        • time string
    • organizer object
      • emailAddress object

        EmailAddress

        • name string
        • address string
    • isAllDay boolean
    • isCancelled boolean
    • isDraft boolean
    • isOnlineMeeting boolean
    • isOrganizer boolean
    • isReminderOn boolean
    • onlineMeeting object
      • joinUrl string
      • conferenceId string
      • tollNumber string
    • onlineMeetingProvider string
    • importance string
    • sensitivity string
    • showAs string
    • recurrence object

      PatternedRecurrence

      • pattern object
        • type string
        • interval integer
        • daysOfWeek array

          array of:

          string

        • dayOfMonth integer
        • month integer
        • firstDayOfWeek string
        • index string
      • range object
        • type string
        • startDate string
        • endDate string
        • numberOfOccurrences integer
        • recurrenceTimeZone string
    • categories array

      array of:

      string

    • allowNewTimeProposals boolean
    • hideAttendees boolean
    • reminderMinutesBeforeStart integer
    • responseRequested boolean
    • responseStatus object
      • response string
      • time string
    • type string
    • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
    • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
    • iCalUId string
    • webLink string
    • changeKey string
    • hasAttachments boolean
    • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
    • calendarId stringCalendar this event belongs to
    • createdDateTime string
    • lastModifiedDateTime string
  • @odata.nextLink stringOData next-page link, absent on the last page

POST /api/purple-suite/calendar/events

Schedule a calendar event

Creates a meeting in Purple Calendar — subject, start/end as DateTimeTimeZone, attendees, location or room, and optional recurrence (which makes it a series master). It does not check availability: use the free/busy schedule or findMeetingTimes tools first if the time isn't already agreed.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

Event

  • id string
  • subject string
  • body object

    ItemBody

    • contentType string
    • content string
  • bodyPreview string
  • start object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • end object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • location object

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • locations array

    array of:

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • attendees array

    array of:

    Attendee

    • emailAddress object

      EmailAddress

      • name string
      • address string
    • type string
    • status object
      • response string
      • time string
  • organizer object
    • emailAddress object

      EmailAddress

      • name string
      • address string
  • isAllDay boolean
  • isCancelled boolean
  • isDraft boolean
  • isOnlineMeeting boolean
  • isOrganizer boolean
  • isReminderOn boolean
  • onlineMeeting object
    • joinUrl string
    • conferenceId string
    • tollNumber string
  • onlineMeetingProvider string
  • importance string
  • sensitivity string
  • showAs string
  • recurrence object

    PatternedRecurrence

    • pattern object
      • type string
      • interval integer
      • daysOfWeek array

        array of:

        string

      • dayOfMonth integer
      • month integer
      • firstDayOfWeek string
      • index string
    • range object
      • type string
      • startDate string
      • endDate string
      • numberOfOccurrences integer
      • recurrenceTimeZone string
  • categories array

    array of:

    string

  • allowNewTimeProposals boolean
  • hideAttendees boolean
  • reminderMinutesBeforeStart integer
  • responseRequested boolean
  • responseStatus object
    • response string
    • time string
  • type string
  • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
  • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
  • iCalUId string
  • webLink string
  • changeKey string
  • hasAttachments boolean
  • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
  • calendarId stringCalendar this event belongs to
  • createdDateTime string
  • lastModifiedDateTime string

Responses

201
Created

application/json

Event

  • id string
  • subject string
  • body object

    ItemBody

    • contentType string
    • content string
  • bodyPreview string
  • start object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • end object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • location object

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • locations array

    array of:

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • attendees array

    array of:

    Attendee

    • emailAddress object

      EmailAddress

      • name string
      • address string
    • type string
    • status object
      • response string
      • time string
  • organizer object
    • emailAddress object

      EmailAddress

      • name string
      • address string
  • isAllDay boolean
  • isCancelled boolean
  • isDraft boolean
  • isOnlineMeeting boolean
  • isOrganizer boolean
  • isReminderOn boolean
  • onlineMeeting object
    • joinUrl string
    • conferenceId string
    • tollNumber string
  • onlineMeetingProvider string
  • importance string
  • sensitivity string
  • showAs string
  • recurrence object

    PatternedRecurrence

    • pattern object
      • type string
      • interval integer
      • daysOfWeek array

        array of:

        string

      • dayOfMonth integer
      • month integer
      • firstDayOfWeek string
      • index string
    • range object
      • type string
      • startDate string
      • endDate string
      • numberOfOccurrences integer
      • recurrenceTimeZone string
  • categories array

    array of:

    string

  • allowNewTimeProposals boolean
  • hideAttendees boolean
  • reminderMinutesBeforeStart integer
  • responseRequested boolean
  • responseStatus object
    • response string
    • time string
  • type string
  • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
  • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
  • iCalUId string
  • webLink string
  • changeKey string
  • hasAttachments boolean
  • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
  • calendarId stringCalendar this event belongs to
  • createdDateTime string
  • lastModifiedDateTime string

GET /api/purple-suite/calendar/events/{id}

Get event

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

Event

  • id string
  • subject string
  • body object

    ItemBody

    • contentType string
    • content string
  • bodyPreview string
  • start object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • end object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • location object

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • locations array

    array of:

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • attendees array

    array of:

    Attendee

    • emailAddress object

      EmailAddress

      • name string
      • address string
    • type string
    • status object
      • response string
      • time string
  • organizer object
    • emailAddress object

      EmailAddress

      • name string
      • address string
  • isAllDay boolean
  • isCancelled boolean
  • isDraft boolean
  • isOnlineMeeting boolean
  • isOrganizer boolean
  • isReminderOn boolean
  • onlineMeeting object
    • joinUrl string
    • conferenceId string
    • tollNumber string
  • onlineMeetingProvider string
  • importance string
  • sensitivity string
  • showAs string
  • recurrence object

    PatternedRecurrence

    • pattern object
      • type string
      • interval integer
      • daysOfWeek array

        array of:

        string

      • dayOfMonth integer
      • month integer
      • firstDayOfWeek string
      • index string
    • range object
      • type string
      • startDate string
      • endDate string
      • numberOfOccurrences integer
      • recurrenceTimeZone string
  • categories array

    array of:

    string

  • allowNewTimeProposals boolean
  • hideAttendees boolean
  • reminderMinutesBeforeStart integer
  • responseRequested boolean
  • responseStatus object
    • response string
    • time string
  • type string
  • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
  • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
  • iCalUId string
  • webLink string
  • changeKey string
  • hasAttachments boolean
  • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
  • calendarId stringCalendar this event belongs to
  • createdDateTime string
  • lastModifiedDateTime string
404
Not found

DELETE /api/purple-suite/calendar/events/{id}

Delete a calendar event

Permanently removes an event from Purple Calendar. Destructive and irreversible, and it leaves attendees no cancellation record — use the cancel tool instead whenever a meeting is simply called off.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

204
No content
404
Not found

PATCH /api/purple-suite/calendar/events/{id}

Update a calendar event

Partially updates an existing Purple Calendar event — reschedule its times, change the subject/body, or amend the attendee list. To call a meeting off, prefer the cancel tool, which keeps the record and marks it isCancelled.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json — required

Event

  • id string
  • subject string
  • body object

    ItemBody

    • contentType string
    • content string
  • bodyPreview string
  • start object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • end object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • location object

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • locations array

    array of:

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • attendees array

    array of:

    Attendee

    • emailAddress object

      EmailAddress

      • name string
      • address string
    • type string
    • status object
      • response string
      • time string
  • organizer object
    • emailAddress object

      EmailAddress

      • name string
      • address string
  • isAllDay boolean
  • isCancelled boolean
  • isDraft boolean
  • isOnlineMeeting boolean
  • isOrganizer boolean
  • isReminderOn boolean
  • onlineMeeting object
    • joinUrl string
    • conferenceId string
    • tollNumber string
  • onlineMeetingProvider string
  • importance string
  • sensitivity string
  • showAs string
  • recurrence object

    PatternedRecurrence

    • pattern object
      • type string
      • interval integer
      • daysOfWeek array

        array of:

        string

      • dayOfMonth integer
      • month integer
      • firstDayOfWeek string
      • index string
    • range object
      • type string
      • startDate string
      • endDate string
      • numberOfOccurrences integer
      • recurrenceTimeZone string
  • categories array

    array of:

    string

  • allowNewTimeProposals boolean
  • hideAttendees boolean
  • reminderMinutesBeforeStart integer
  • responseRequested boolean
  • responseStatus object
    • response string
    • time string
  • type string
  • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
  • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
  • iCalUId string
  • webLink string
  • changeKey string
  • hasAttachments boolean
  • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
  • calendarId stringCalendar this event belongs to
  • createdDateTime string
  • lastModifiedDateTime string

Responses

200
Updated

application/json

Event

  • id string
  • subject string
  • body object

    ItemBody

    • contentType string
    • content string
  • bodyPreview string
  • start object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • end object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • location object

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • locations array

    array of:

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • attendees array

    array of:

    Attendee

    • emailAddress object

      EmailAddress

      • name string
      • address string
    • type string
    • status object
      • response string
      • time string
  • organizer object
    • emailAddress object

      EmailAddress

      • name string
      • address string
  • isAllDay boolean
  • isCancelled boolean
  • isDraft boolean
  • isOnlineMeeting boolean
  • isOrganizer boolean
  • isReminderOn boolean
  • onlineMeeting object
    • joinUrl string
    • conferenceId string
    • tollNumber string
  • onlineMeetingProvider string
  • importance string
  • sensitivity string
  • showAs string
  • recurrence object

    PatternedRecurrence

    • pattern object
      • type string
      • interval integer
      • daysOfWeek array

        array of:

        string

      • dayOfMonth integer
      • month integer
      • firstDayOfWeek string
      • index string
    • range object
      • type string
      • startDate string
      • endDate string
      • numberOfOccurrences integer
      • recurrenceTimeZone string
  • categories array

    array of:

    string

  • allowNewTimeProposals boolean
  • hideAttendees boolean
  • reminderMinutesBeforeStart integer
  • responseRequested boolean
  • responseStatus object
    • response string
    • time string
  • type string
  • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
  • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
  • iCalUId string
  • webLink string
  • changeKey string
  • hasAttachments boolean
  • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
  • calendarId stringCalendar this event belongs to
  • createdDateTime string
  • lastModifiedDateTime string
404
Not found

POST /api/purple-suite/calendar/users/{email}/events/{id}/accept

Accept event invitation

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
emailpathstringyesUser email — or the literal "me" to act as the current impersonated user (the X-PS-Impersonate-User header, or the instance's configured default MCP user).
idpathstringyes

Request body

application/json

  • comment string
  • sendResponse boolean

Responses

202
Accepted
404
Not found

POST /api/purple-suite/calendar/users/{email}/events/{id}/decline

Decline event invitation

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
emailpathstringyesUser email — or the literal "me" to act as the current impersonated user (the X-PS-Impersonate-User header, or the instance's configured default MCP user).
idpathstringyes

Request body

application/json

  • comment string
  • sendResponse boolean
  • proposedNewTime object

Responses

202
Accepted
404
Not found

POST /api/purple-suite/calendar/users/{email}/events/{id}/tentativelyAccept

Tentatively accept event invitation

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
emailpathstringyesUser email — or the literal "me" to act as the current impersonated user (the X-PS-Impersonate-User header, or the instance's configured default MCP user).
idpathstringyes

Request body

application/json

  • comment string
  • sendResponse boolean
  • proposedNewTime object

Responses

202
Accepted
404
Not found

POST /api/purple-suite/calendar/events/{id}/cancel

Cancel event (bare path alias)

Cancels the event (sets isCancelled: true, showAs: free). Does not delete the event. Cancelling a seriesMaster cancels the whole series; cancelling a generated occurrence (id in the form seriesMasterId_yyyymmdd) cancels just that date by materializing an exception. Also available at /users/{email}/events/{id}/cancel.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

application/json

  • comment stringCancellation message

Responses

202
Accepted
404
Not found

POST /api/purple-suite/calendar/users/{email}/events/{id}/cancel

Cancel event (user-scoped path)

Cancels the event (sets isCancelled: true, showAs: free). Does not delete the event. Cancelling a seriesMaster cancels the whole series; cancelling a generated occurrence (id in the form seriesMasterId_yyyymmdd) cancels just that date by materializing an exception.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
emailpathstringyesUser email — or the literal "me" to act as the current impersonated user (the X-PS-Impersonate-User header, or the instance's configured default MCP user).
idpathstringyes

Request body

application/json

  • comment stringCancellation message

Responses

202
Accepted
404
Not found

GET /api/purple-suite/calendar/events/{id}/instances

List occurrences of an event series (bare path alias)

Expands a seriesMaster into its occurrence instances within the time window (stored exceptions included). For a non-recurring event, returns the event itself when it intersects the window. Also available at /users/{email}/events/{id}/instances.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes
startDateTimequerystringyes
endDateTimequerystringyes

Responses

200
Occurrences in range

application/json

  • value array

    array of:

    Event

    • id string
    • subject string
    • body object

      ItemBody

      • contentType string
      • content string
    • bodyPreview string
    • start object

      DateTimeTimeZone

      • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
      • timeZone string requiredIANA or Windows timezone name
    • end object

      DateTimeTimeZone

      • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
      • timeZone string requiredIANA or Windows timezone name
    • location object

      Location

      • displayName string
      • locationType string
      • uniqueId string
      • uniqueIdType string
    • locations array

      array of:

      Location

      • displayName string
      • locationType string
      • uniqueId string
      • uniqueIdType string
    • attendees array

      array of:

      Attendee

      • emailAddress object

        EmailAddress

        • name string
        • address string
      • type string
      • status object
        • response string
        • time string
    • organizer object
      • emailAddress object

        EmailAddress

        • name string
        • address string
    • isAllDay boolean
    • isCancelled boolean
    • isDraft boolean
    • isOnlineMeeting boolean
    • isOrganizer boolean
    • isReminderOn boolean
    • onlineMeeting object
      • joinUrl string
      • conferenceId string
      • tollNumber string
    • onlineMeetingProvider string
    • importance string
    • sensitivity string
    • showAs string
    • recurrence object

      PatternedRecurrence

      • pattern object
        • type string
        • interval integer
        • daysOfWeek array

          array of:

          string

        • dayOfMonth integer
        • month integer
        • firstDayOfWeek string
        • index string
      • range object
        • type string
        • startDate string
        • endDate string
        • numberOfOccurrences integer
        • recurrenceTimeZone string
    • categories array

      array of:

      string

    • allowNewTimeProposals boolean
    • hideAttendees boolean
    • reminderMinutesBeforeStart integer
    • responseRequested boolean
    • responseStatus object
      • response string
      • time string
    • type string
    • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
    • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
    • iCalUId string
    • webLink string
    • changeKey string
    • hasAttachments boolean
    • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
    • calendarId stringCalendar this event belongs to
    • createdDateTime string
    • lastModifiedDateTime string
400
startDateTime and endDateTime are required
404
Not found

GET /api/purple-suite/calendar/users/{email}/events/{id}/instances

List occurrences of an event series (user-scoped path)

Expands a seriesMaster into its occurrence instances within the time window (stored exceptions included). For a non-recurring event, returns the event itself when it intersects the window.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
emailpathstringyesUser email — or the literal "me" to act as the current impersonated user (the X-PS-Impersonate-User header, or the instance's configured default MCP user).
idpathstringyes
startDateTimequerystringyes
endDateTimequerystringyes

Responses

200
Occurrences in range

application/json

  • value array

    array of:

    Event

    • id string
    • subject string
    • body object

      ItemBody

      • contentType string
      • content string
    • bodyPreview string
    • start object

      DateTimeTimeZone

      • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
      • timeZone string requiredIANA or Windows timezone name
    • end object

      DateTimeTimeZone

      • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
      • timeZone string requiredIANA or Windows timezone name
    • location object

      Location

      • displayName string
      • locationType string
      • uniqueId string
      • uniqueIdType string
    • locations array

      array of:

      Location

      • displayName string
      • locationType string
      • uniqueId string
      • uniqueIdType string
    • attendees array

      array of:

      Attendee

      • emailAddress object

        EmailAddress

        • name string
        • address string
      • type string
      • status object
        • response string
        • time string
    • organizer object
      • emailAddress object

        EmailAddress

        • name string
        • address string
    • isAllDay boolean
    • isCancelled boolean
    • isDraft boolean
    • isOnlineMeeting boolean
    • isOrganizer boolean
    • isReminderOn boolean
    • onlineMeeting object
      • joinUrl string
      • conferenceId string
      • tollNumber string
    • onlineMeetingProvider string
    • importance string
    • sensitivity string
    • showAs string
    • recurrence object

      PatternedRecurrence

      • pattern object
        • type string
        • interval integer
        • daysOfWeek array

          array of:

          string

        • dayOfMonth integer
        • month integer
        • firstDayOfWeek string
        • index string
      • range object
        • type string
        • startDate string
        • endDate string
        • numberOfOccurrences integer
        • recurrenceTimeZone string
    • categories array

      array of:

      string

    • allowNewTimeProposals boolean
    • hideAttendees boolean
    • reminderMinutesBeforeStart integer
    • responseRequested boolean
    • responseStatus object
      • response string
      • time string
    • type string
    • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
    • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
    • iCalUId string
    • webLink string
    • changeKey string
    • hasAttachments boolean
    • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
    • calendarId stringCalendar this event belongs to
    • createdDateTime string
    • lastModifiedDateTime string
400
startDateTime and endDateTime are required
404
Not found

POST /api/purple-suite/calendar/findMeetingTimes

Find meeting time suggestions (bare path)

Suggests meeting times when all attendees are available, based on their calendar events. Also available at /users/{email}/findMeetingTimes.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
PreferheaderstringnoOptional response timezone override, e.g. `outlook.timezone="Pacific Standard Time"`

Request body

application/json — required

  • attendees array

    array of:

    • emailAddress object

      EmailAddress

      • name string
      • address string
    • type string
  • timeConstraint object
    • activityDomain string
    • timeSlots array

      array of:

      • start object

        DateTimeTimeZone

        • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
        • timeZone string requiredIANA or Windows timezone name
      • end object

        DateTimeTimeZone

        • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
        • timeZone string requiredIANA or Windows timezone name
  • meetingDuration stringISO 8601 duration, e.g. PT1H, PT30M
  • maxCandidates integer
  • minimumAttendeePercentage number
  • isOrganizerOptional boolean
  • returnSuggestionReasons boolean

Responses

200
Meeting time suggestions

application/json

  • emptySuggestionsReason string
  • meetingTimeSuggestions array

    array of:

    • confidence number
    • order integer
    • organizerAvailability string
    • suggestionReason string
    • attendeeAvailability array

      array of:

      • attendee object
      • availability string
    • locations array

      array of:

      object

    • meetingTimeSlot object
      • start object

        DateTimeTimeZone

        • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
        • timeZone string requiredIANA or Windows timezone name
      • end object

        DateTimeTimeZone

        • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
        • timeZone string requiredIANA or Windows timezone name

POST /api/purple-suite/calendar/users/{email}/findMeetingTimes

Find meeting time suggestions (user-scoped path)

Organizer-scoped variant. Uses the organizer's timezone from their mailboxSettings for activityDomain filtering.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
emailpathstringyesUser email — or the literal "me" to act as the current impersonated user (the X-PS-Impersonate-User header, or the instance's configured default MCP user).
PreferheaderstringnoOptional response timezone override, e.g. `outlook.timezone="Pacific Standard Time"`

Request body

application/json — required

  • attendees array

    array of:

    • emailAddress object

      EmailAddress

      • name string
      • address string
    • type string
  • timeConstraint object
    • activityDomain string
    • timeSlots array

      array of:

      • start object

        DateTimeTimeZone

        • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
        • timeZone string requiredIANA or Windows timezone name
      • end object

        DateTimeTimeZone

        • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
        • timeZone string requiredIANA or Windows timezone name
  • meetingDuration stringISO 8601 duration, e.g. PT1H, PT30M
  • maxCandidates integer
  • minimumAttendeePercentage number
  • isOrganizerOptional boolean
  • returnSuggestionReasons boolean

Responses

200
Meeting time suggestions

application/json

  • emptySuggestionsReason string
  • meetingTimeSuggestions array

    array of:

    • confidence number
    • order integer
    • organizerAvailability string
    • suggestionReason string
    • attendeeAvailability array

      array of:

      • attendee object
      • availability string
    • locations array

      array of:

      object

    • meetingTimeSlot object
      • start object

        DateTimeTimeZone

        • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
        • timeZone string requiredIANA or Windows timezone name
      • end object

        DateTimeTimeZone

        • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
        • timeZone string requiredIANA or Windows timezone name

GET /api/purple-suite/calendar/calendarView

Get calendar view — all events in time range

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
startDateTimequerystringyes
endDateTimequerystringyes
$topqueryintegernoNumber of items to return
$skipqueryintegernoNumber of items to skip
limitqueryintegernoAlias for $top — max items per page (default 50)

Responses

200
Events in range

application/json

  • value array

    array of:

    Event

    • id string
    • subject string
    • body object

      ItemBody

      • contentType string
      • content string
    • bodyPreview string
    • start object

      DateTimeTimeZone

      • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
      • timeZone string requiredIANA or Windows timezone name
    • end object

      DateTimeTimeZone

      • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
      • timeZone string requiredIANA or Windows timezone name
    • location object

      Location

      • displayName string
      • locationType string
      • uniqueId string
      • uniqueIdType string
    • locations array

      array of:

      Location

      • displayName string
      • locationType string
      • uniqueId string
      • uniqueIdType string
    • attendees array

      array of:

      Attendee

      • emailAddress object

        EmailAddress

        • name string
        • address string
      • type string
      • status object
        • response string
        • time string
    • organizer object
      • emailAddress object

        EmailAddress

        • name string
        • address string
    • isAllDay boolean
    • isCancelled boolean
    • isDraft boolean
    • isOnlineMeeting boolean
    • isOrganizer boolean
    • isReminderOn boolean
    • onlineMeeting object
      • joinUrl string
      • conferenceId string
      • tollNumber string
    • onlineMeetingProvider string
    • importance string
    • sensitivity string
    • showAs string
    • recurrence object

      PatternedRecurrence

      • pattern object
        • type string
        • interval integer
        • daysOfWeek array

          array of:

          string

        • dayOfMonth integer
        • month integer
        • firstDayOfWeek string
        • index string
      • range object
        • type string
        • startDate string
        • endDate string
        • numberOfOccurrences integer
        • recurrenceTimeZone string
    • categories array

      array of:

      string

    • allowNewTimeProposals boolean
    • hideAttendees boolean
    • reminderMinutesBeforeStart integer
    • responseRequested boolean
    • responseStatus object
      • response string
      • time string
    • type string
    • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
    • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
    • iCalUId string
    • webLink string
    • changeKey string
    • hasAttachments boolean
    • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
    • calendarId stringCalendar this event belongs to
    • createdDateTime string
    • lastModifiedDateTime string
  • @odata.nextLink stringOData next-page link, absent on the last page
400
startDateTime and endDateTime are required

GET /api/purple-suite/calendar/users/{email}/calendarView

Get calendar view for a specific user (events in time range)

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
emailpathstringyesUser email — or the literal "me" to act as the current impersonated user (the X-PS-Impersonate-User header, or the instance's configured default MCP user).
startDateTimequerystringyes
endDateTimequerystringyes

Responses

200
User events in range

application/json

  • value array

    array of:

    Event

    • id string
    • subject string
    • body object

      ItemBody

      • contentType string
      • content string
    • bodyPreview string
    • start object

      DateTimeTimeZone

      • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
      • timeZone string requiredIANA or Windows timezone name
    • end object

      DateTimeTimeZone

      • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
      • timeZone string requiredIANA or Windows timezone name
    • location object

      Location

      • displayName string
      • locationType string
      • uniqueId string
      • uniqueIdType string
    • locations array

      array of:

      Location

      • displayName string
      • locationType string
      • uniqueId string
      • uniqueIdType string
    • attendees array

      array of:

      Attendee

      • emailAddress object

        EmailAddress

        • name string
        • address string
      • type string
      • status object
        • response string
        • time string
    • organizer object
      • emailAddress object

        EmailAddress

        • name string
        • address string
    • isAllDay boolean
    • isCancelled boolean
    • isDraft boolean
    • isOnlineMeeting boolean
    • isOrganizer boolean
    • isReminderOn boolean
    • onlineMeeting object
      • joinUrl string
      • conferenceId string
      • tollNumber string
    • onlineMeetingProvider string
    • importance string
    • sensitivity string
    • showAs string
    • recurrence object

      PatternedRecurrence

      • pattern object
        • type string
        • interval integer
        • daysOfWeek array

          array of:

          string

        • dayOfMonth integer
        • month integer
        • firstDayOfWeek string
        • index string
      • range object
        • type string
        • startDate string
        • endDate string
        • numberOfOccurrences integer
        • recurrenceTimeZone string
    • categories array

      array of:

      string

    • allowNewTimeProposals boolean
    • hideAttendees boolean
    • reminderMinutesBeforeStart integer
    • responseRequested boolean
    • responseStatus object
      • response string
      • time string
    • type string
    • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
    • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
    • iCalUId string
    • webLink string
    • changeKey string
    • hasAttachments boolean
    • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
    • calendarId stringCalendar this event belongs to
    • createdDateTime string
    • lastModifiedDateTime string
400
startDateTime and endDateTime are required

GET /api/purple-suite/calendar/users/{email}/events

List all events for a specific user

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
emailpathstringyesUser email — or the literal "me" to act as the current impersonated user (the X-PS-Impersonate-User header, or the instance's configured default MCP user).
$topqueryintegernoNumber of items to return
$skipqueryintegernoNumber of items to skip
limitqueryintegernoAlias for $top — max items per page (default 50)

Responses

200
User events

application/json

  • value array

    array of:

    Event

    • id string
    • subject string
    • body object

      ItemBody

      • contentType string
      • content string
    • bodyPreview string
    • start object

      DateTimeTimeZone

      • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
      • timeZone string requiredIANA or Windows timezone name
    • end object

      DateTimeTimeZone

      • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
      • timeZone string requiredIANA or Windows timezone name
    • location object

      Location

      • displayName string
      • locationType string
      • uniqueId string
      • uniqueIdType string
    • locations array

      array of:

      Location

      • displayName string
      • locationType string
      • uniqueId string
      • uniqueIdType string
    • attendees array

      array of:

      Attendee

      • emailAddress object

        EmailAddress

        • name string
        • address string
      • type string
      • status object
        • response string
        • time string
    • organizer object
      • emailAddress object

        EmailAddress

        • name string
        • address string
    • isAllDay boolean
    • isCancelled boolean
    • isDraft boolean
    • isOnlineMeeting boolean
    • isOrganizer boolean
    • isReminderOn boolean
    • onlineMeeting object
      • joinUrl string
      • conferenceId string
      • tollNumber string
    • onlineMeetingProvider string
    • importance string
    • sensitivity string
    • showAs string
    • recurrence object

      PatternedRecurrence

      • pattern object
        • type string
        • interval integer
        • daysOfWeek array

          array of:

          string

        • dayOfMonth integer
        • month integer
        • firstDayOfWeek string
        • index string
      • range object
        • type string
        • startDate string
        • endDate string
        • numberOfOccurrences integer
        • recurrenceTimeZone string
    • categories array

      array of:

      string

    • allowNewTimeProposals boolean
    • hideAttendees boolean
    • reminderMinutesBeforeStart integer
    • responseRequested boolean
    • responseStatus object
      • response string
      • time string
    • type string
    • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
    • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
    • iCalUId string
    • webLink string
    • changeKey string
    • hasAttachments boolean
    • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
    • calendarId stringCalendar this event belongs to
    • createdDateTime string
    • lastModifiedDateTime string
  • @odata.nextLink stringOData next-page link, absent on the last page

POST /api/purple-suite/calendar/users/{email}/events

Create event (user-scoped path)

User-scoped twin of POST /events. Defaults the organizer to the resolved user when the body doesn't set one.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
emailpathstringyesUser email — or the literal "me" to act as the current impersonated user (the X-PS-Impersonate-User header, or the instance's configured default MCP user).

Request body

application/json — required

Event

  • id string
  • subject string
  • body object

    ItemBody

    • contentType string
    • content string
  • bodyPreview string
  • start object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • end object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • location object

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • locations array

    array of:

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • attendees array

    array of:

    Attendee

    • emailAddress object

      EmailAddress

      • name string
      • address string
    • type string
    • status object
      • response string
      • time string
  • organizer object
    • emailAddress object

      EmailAddress

      • name string
      • address string
  • isAllDay boolean
  • isCancelled boolean
  • isDraft boolean
  • isOnlineMeeting boolean
  • isOrganizer boolean
  • isReminderOn boolean
  • onlineMeeting object
    • joinUrl string
    • conferenceId string
    • tollNumber string
  • onlineMeetingProvider string
  • importance string
  • sensitivity string
  • showAs string
  • recurrence object

    PatternedRecurrence

    • pattern object
      • type string
      • interval integer
      • daysOfWeek array

        array of:

        string

      • dayOfMonth integer
      • month integer
      • firstDayOfWeek string
      • index string
    • range object
      • type string
      • startDate string
      • endDate string
      • numberOfOccurrences integer
      • recurrenceTimeZone string
  • categories array

    array of:

    string

  • allowNewTimeProposals boolean
  • hideAttendees boolean
  • reminderMinutesBeforeStart integer
  • responseRequested boolean
  • responseStatus object
    • response string
    • time string
  • type string
  • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
  • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
  • iCalUId string
  • webLink string
  • changeKey string
  • hasAttachments boolean
  • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
  • calendarId stringCalendar this event belongs to
  • createdDateTime string
  • lastModifiedDateTime string

Responses

201
Created

application/json

Event

  • id string
  • subject string
  • body object

    ItemBody

    • contentType string
    • content string
  • bodyPreview string
  • start object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • end object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • location object

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • locations array

    array of:

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • attendees array

    array of:

    Attendee

    • emailAddress object

      EmailAddress

      • name string
      • address string
    • type string
    • status object
      • response string
      • time string
  • organizer object
    • emailAddress object

      EmailAddress

      • name string
      • address string
  • isAllDay boolean
  • isCancelled boolean
  • isDraft boolean
  • isOnlineMeeting boolean
  • isOrganizer boolean
  • isReminderOn boolean
  • onlineMeeting object
    • joinUrl string
    • conferenceId string
    • tollNumber string
  • onlineMeetingProvider string
  • importance string
  • sensitivity string
  • showAs string
  • recurrence object

    PatternedRecurrence

    • pattern object
      • type string
      • interval integer
      • daysOfWeek array

        array of:

        string

      • dayOfMonth integer
      • month integer
      • firstDayOfWeek string
      • index string
    • range object
      • type string
      • startDate string
      • endDate string
      • numberOfOccurrences integer
      • recurrenceTimeZone string
  • categories array

    array of:

    string

  • allowNewTimeProposals boolean
  • hideAttendees boolean
  • reminderMinutesBeforeStart integer
  • responseRequested boolean
  • responseStatus object
    • response string
    • time string
  • type string
  • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
  • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
  • iCalUId string
  • webLink string
  • changeKey string
  • hasAttachments boolean
  • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
  • calendarId stringCalendar this event belongs to
  • createdDateTime string
  • lastModifiedDateTime string

GET /api/purple-suite/calendar/users/{email}/events/{id}

Get event (user-scoped path)

User-scoped twin of GET /events/{id}.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
emailpathstringyesUser email — or the literal "me" to act as the current impersonated user (the X-PS-Impersonate-User header, or the instance's configured default MCP user).
idpathstringyes

Responses

200
Found

application/json

Event

  • id string
  • subject string
  • body object

    ItemBody

    • contentType string
    • content string
  • bodyPreview string
  • start object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • end object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • location object

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • locations array

    array of:

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • attendees array

    array of:

    Attendee

    • emailAddress object

      EmailAddress

      • name string
      • address string
    • type string
    • status object
      • response string
      • time string
  • organizer object
    • emailAddress object

      EmailAddress

      • name string
      • address string
  • isAllDay boolean
  • isCancelled boolean
  • isDraft boolean
  • isOnlineMeeting boolean
  • isOrganizer boolean
  • isReminderOn boolean
  • onlineMeeting object
    • joinUrl string
    • conferenceId string
    • tollNumber string
  • onlineMeetingProvider string
  • importance string
  • sensitivity string
  • showAs string
  • recurrence object

    PatternedRecurrence

    • pattern object
      • type string
      • interval integer
      • daysOfWeek array

        array of:

        string

      • dayOfMonth integer
      • month integer
      • firstDayOfWeek string
      • index string
    • range object
      • type string
      • startDate string
      • endDate string
      • numberOfOccurrences integer
      • recurrenceTimeZone string
  • categories array

    array of:

    string

  • allowNewTimeProposals boolean
  • hideAttendees boolean
  • reminderMinutesBeforeStart integer
  • responseRequested boolean
  • responseStatus object
    • response string
    • time string
  • type string
  • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
  • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
  • iCalUId string
  • webLink string
  • changeKey string
  • hasAttachments boolean
  • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
  • calendarId stringCalendar this event belongs to
  • createdDateTime string
  • lastModifiedDateTime string
404
Not found

DELETE /api/purple-suite/calendar/users/{email}/events/{id}

Delete event (user-scoped path)

User-scoped twin of DELETE /events/{id}.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
emailpathstringyesUser email — or the literal "me" to act as the current impersonated user (the X-PS-Impersonate-User header, or the instance's configured default MCP user).
idpathstringyes

Responses

204
No content
404
Not found

PATCH /api/purple-suite/calendar/users/{email}/events/{id}

Update event (user-scoped path)

User-scoped twin of PATCH /events/{id}.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
emailpathstringyesUser email — or the literal "me" to act as the current impersonated user (the X-PS-Impersonate-User header, or the instance's configured default MCP user).
idpathstringyes

Request body

Fields to update (partial)

application/json — required

Event

  • id string
  • subject string
  • body object

    ItemBody

    • contentType string
    • content string
  • bodyPreview string
  • start object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • end object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • location object

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • locations array

    array of:

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • attendees array

    array of:

    Attendee

    • emailAddress object

      EmailAddress

      • name string
      • address string
    • type string
    • status object
      • response string
      • time string
  • organizer object
    • emailAddress object

      EmailAddress

      • name string
      • address string
  • isAllDay boolean
  • isCancelled boolean
  • isDraft boolean
  • isOnlineMeeting boolean
  • isOrganizer boolean
  • isReminderOn boolean
  • onlineMeeting object
    • joinUrl string
    • conferenceId string
    • tollNumber string
  • onlineMeetingProvider string
  • importance string
  • sensitivity string
  • showAs string
  • recurrence object

    PatternedRecurrence

    • pattern object
      • type string
      • interval integer
      • daysOfWeek array

        array of:

        string

      • dayOfMonth integer
      • month integer
      • firstDayOfWeek string
      • index string
    • range object
      • type string
      • startDate string
      • endDate string
      • numberOfOccurrences integer
      • recurrenceTimeZone string
  • categories array

    array of:

    string

  • allowNewTimeProposals boolean
  • hideAttendees boolean
  • reminderMinutesBeforeStart integer
  • responseRequested boolean
  • responseStatus object
    • response string
    • time string
  • type string
  • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
  • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
  • iCalUId string
  • webLink string
  • changeKey string
  • hasAttachments boolean
  • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
  • calendarId stringCalendar this event belongs to
  • createdDateTime string
  • lastModifiedDateTime string

Responses

200
Updated

application/json

Event

  • id string
  • subject string
  • body object

    ItemBody

    • contentType string
    • content string
  • bodyPreview string
  • start object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • end object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • location object

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • locations array

    array of:

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • attendees array

    array of:

    Attendee

    • emailAddress object

      EmailAddress

      • name string
      • address string
    • type string
    • status object
      • response string
      • time string
  • organizer object
    • emailAddress object

      EmailAddress

      • name string
      • address string
  • isAllDay boolean
  • isCancelled boolean
  • isDraft boolean
  • isOnlineMeeting boolean
  • isOrganizer boolean
  • isReminderOn boolean
  • onlineMeeting object
    • joinUrl string
    • conferenceId string
    • tollNumber string
  • onlineMeetingProvider string
  • importance string
  • sensitivity string
  • showAs string
  • recurrence object

    PatternedRecurrence

    • pattern object
      • type string
      • interval integer
      • daysOfWeek array

        array of:

        string

      • dayOfMonth integer
      • month integer
      • firstDayOfWeek string
      • index string
    • range object
      • type string
      • startDate string
      • endDate string
      • numberOfOccurrences integer
      • recurrenceTimeZone string
  • categories array

    array of:

    string

  • allowNewTimeProposals boolean
  • hideAttendees boolean
  • reminderMinutesBeforeStart integer
  • responseRequested boolean
  • responseStatus object
    • response string
    • time string
  • type string
  • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
  • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
  • iCalUId string
  • webLink string
  • changeKey string
  • hasAttachments boolean
  • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
  • calendarId stringCalendar this event belongs to
  • createdDateTime string
  • lastModifiedDateTime string
404
Not found

GET /api/purple-suite/calendar/users/{email}/calendars

List all calendars (user-scoped alias — returns all instance calendars)

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
emailpathstringyesUser email — or the literal "me" to act as the current impersonated user (the X-PS-Impersonate-User header, or the instance's configured default MCP user).
$topqueryintegernoNumber of items to return
$skipqueryintegernoNumber of items to skip
limitqueryintegernoAlias for $top — max items per page (default 50)

Responses

200
Collection of calendars

application/json

  • value array

    array of:

    Calendar

    • id string
    • name string
    • color string
    • hexColor string
    • isDefaultCalendar boolean
    • canEdit boolean
    • canShare boolean
    • canViewPrivateItems boolean
    • allowedOnlineMeetingProviders array

      array of:

      string

    • defaultOnlineMeetingProvider string
    • isRemovable boolean
    • isTallyingResponses boolean
    • owner object

      EmailAddress

      • name string
      • address string
    • changeKey string
    • createdDateTime string
    • lastModifiedDateTime string
  • @odata.nextLink stringOData next-page link, absent on the last page

POST /api/purple-suite/calendar/users/{email}/calendars

Create calendar (user-scoped path)

User-scoped twin of POST /calendars. Defaults the owner to the resolved user when the body doesn't set one.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
emailpathstringyesUser email — or the literal "me" to act as the current impersonated user (the X-PS-Impersonate-User header, or the instance's configured default MCP user).

Request body

application/json — required

Calendar

  • id string
  • name string
  • color string
  • hexColor string
  • isDefaultCalendar boolean
  • canEdit boolean
  • canShare boolean
  • canViewPrivateItems boolean
  • allowedOnlineMeetingProviders array

    array of:

    string

  • defaultOnlineMeetingProvider string
  • isRemovable boolean
  • isTallyingResponses boolean
  • owner object

    EmailAddress

    • name string
    • address string
  • changeKey string
  • createdDateTime string
  • lastModifiedDateTime string

Responses

201
Created

application/json

Calendar

  • id string
  • name string
  • color string
  • hexColor string
  • isDefaultCalendar boolean
  • canEdit boolean
  • canShare boolean
  • canViewPrivateItems boolean
  • allowedOnlineMeetingProviders array

    array of:

    string

  • defaultOnlineMeetingProvider string
  • isRemovable boolean
  • isTallyingResponses boolean
  • owner object

    EmailAddress

    • name string
    • address string
  • changeKey string
  • createdDateTime string
  • lastModifiedDateTime string

GET /api/purple-suite/calendar/users/{email}/calendars/{id}

Get calendar (user-scoped path)

User-scoped twin of GET /calendars/{id}.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
emailpathstringyesUser email — or the literal "me" to act as the current impersonated user (the X-PS-Impersonate-User header, or the instance's configured default MCP user).
idpathstringyes

Responses

200
Found

application/json

Calendar

  • id string
  • name string
  • color string
  • hexColor string
  • isDefaultCalendar boolean
  • canEdit boolean
  • canShare boolean
  • canViewPrivateItems boolean
  • allowedOnlineMeetingProviders array

    array of:

    string

  • defaultOnlineMeetingProvider string
  • isRemovable boolean
  • isTallyingResponses boolean
  • owner object

    EmailAddress

    • name string
    • address string
  • changeKey string
  • createdDateTime string
  • lastModifiedDateTime string
404
Not found

DELETE /api/purple-suite/calendar/users/{email}/calendars/{id}

Delete calendar (user-scoped path)

User-scoped twin of DELETE /calendars/{id}.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
emailpathstringyesUser email — or the literal "me" to act as the current impersonated user (the X-PS-Impersonate-User header, or the instance's configured default MCP user).
idpathstringyes

Responses

204
No content
404
Not found

PATCH /api/purple-suite/calendar/users/{email}/calendars/{id}

Update calendar (user-scoped path)

User-scoped twin of PATCH /calendars/{id}.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
emailpathstringyesUser email — or the literal "me" to act as the current impersonated user (the X-PS-Impersonate-User header, or the instance's configured default MCP user).
idpathstringyes

Request body

Fields to update (partial)

application/json — required

Calendar

  • id string
  • name string
  • color string
  • hexColor string
  • isDefaultCalendar boolean
  • canEdit boolean
  • canShare boolean
  • canViewPrivateItems boolean
  • allowedOnlineMeetingProviders array

    array of:

    string

  • defaultOnlineMeetingProvider string
  • isRemovable boolean
  • isTallyingResponses boolean
  • owner object

    EmailAddress

    • name string
    • address string
  • changeKey string
  • createdDateTime string
  • lastModifiedDateTime string

Responses

200
Updated

application/json

Calendar

  • id string
  • name string
  • color string
  • hexColor string
  • isDefaultCalendar boolean
  • canEdit boolean
  • canShare boolean
  • canViewPrivateItems boolean
  • allowedOnlineMeetingProviders array

    array of:

    string

  • defaultOnlineMeetingProvider string
  • isRemovable boolean
  • isTallyingResponses boolean
  • owner object

    EmailAddress

    • name string
    • address string
  • changeKey string
  • createdDateTime string
  • lastModifiedDateTime string
404
Not found

GET /api/purple-suite/calendar/users/{email}/calendars/{id}/events

List events for a specific calendar (user-scoped path)

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
emailpathstringyesUser email — or the literal "me" to act as the current impersonated user (the X-PS-Impersonate-User header, or the instance's configured default MCP user).
idpathstringyesCalendar id
startDateTimequerystringno
endDateTimequerystringno

Responses

200
Events for the calendar

application/json

  • value array

    array of:

    Event

    • id string
    • subject string
    • body object

      ItemBody

      • contentType string
      • content string
    • bodyPreview string
    • start object

      DateTimeTimeZone

      • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
      • timeZone string requiredIANA or Windows timezone name
    • end object

      DateTimeTimeZone

      • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
      • timeZone string requiredIANA or Windows timezone name
    • location object

      Location

      • displayName string
      • locationType string
      • uniqueId string
      • uniqueIdType string
    • locations array

      array of:

      Location

      • displayName string
      • locationType string
      • uniqueId string
      • uniqueIdType string
    • attendees array

      array of:

      Attendee

      • emailAddress object

        EmailAddress

        • name string
        • address string
      • type string
      • status object
        • response string
        • time string
    • organizer object
      • emailAddress object

        EmailAddress

        • name string
        • address string
    • isAllDay boolean
    • isCancelled boolean
    • isDraft boolean
    • isOnlineMeeting boolean
    • isOrganizer boolean
    • isReminderOn boolean
    • onlineMeeting object
      • joinUrl string
      • conferenceId string
      • tollNumber string
    • onlineMeetingProvider string
    • importance string
    • sensitivity string
    • showAs string
    • recurrence object

      PatternedRecurrence

      • pattern object
        • type string
        • interval integer
        • daysOfWeek array

          array of:

          string

        • dayOfMonth integer
        • month integer
        • firstDayOfWeek string
        • index string
      • range object
        • type string
        • startDate string
        • endDate string
        • numberOfOccurrences integer
        • recurrenceTimeZone string
    • categories array

      array of:

      string

    • allowNewTimeProposals boolean
    • hideAttendees boolean
    • reminderMinutesBeforeStart integer
    • responseRequested boolean
    • responseStatus object
      • response string
      • time string
    • type string
    • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
    • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
    • iCalUId string
    • webLink string
    • changeKey string
    • hasAttachments boolean
    • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
    • calendarId stringCalendar this event belongs to
    • createdDateTime string
    • lastModifiedDateTime string
404
Calendar not found

POST /api/purple-suite/calendar/users/{email}/calendars/{id}/events

Create event in a specific calendar (user-scoped path)

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
emailpathstringyesUser email — or the literal "me" to act as the current impersonated user (the X-PS-Impersonate-User header, or the instance's configured default MCP user).
idpathstringyesCalendar id

Request body

application/json — required

Event

  • id string
  • subject string
  • body object

    ItemBody

    • contentType string
    • content string
  • bodyPreview string
  • start object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • end object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • location object

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • locations array

    array of:

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • attendees array

    array of:

    Attendee

    • emailAddress object

      EmailAddress

      • name string
      • address string
    • type string
    • status object
      • response string
      • time string
  • organizer object
    • emailAddress object

      EmailAddress

      • name string
      • address string
  • isAllDay boolean
  • isCancelled boolean
  • isDraft boolean
  • isOnlineMeeting boolean
  • isOrganizer boolean
  • isReminderOn boolean
  • onlineMeeting object
    • joinUrl string
    • conferenceId string
    • tollNumber string
  • onlineMeetingProvider string
  • importance string
  • sensitivity string
  • showAs string
  • recurrence object

    PatternedRecurrence

    • pattern object
      • type string
      • interval integer
      • daysOfWeek array

        array of:

        string

      • dayOfMonth integer
      • month integer
      • firstDayOfWeek string
      • index string
    • range object
      • type string
      • startDate string
      • endDate string
      • numberOfOccurrences integer
      • recurrenceTimeZone string
  • categories array

    array of:

    string

  • allowNewTimeProposals boolean
  • hideAttendees boolean
  • reminderMinutesBeforeStart integer
  • responseRequested boolean
  • responseStatus object
    • response string
    • time string
  • type string
  • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
  • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
  • iCalUId string
  • webLink string
  • changeKey string
  • hasAttachments boolean
  • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
  • calendarId stringCalendar this event belongs to
  • createdDateTime string
  • lastModifiedDateTime string

Responses

201
Created event

application/json

Event

  • id string
  • subject string
  • body object

    ItemBody

    • contentType string
    • content string
  • bodyPreview string
  • start object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • end object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • location object

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • locations array

    array of:

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • attendees array

    array of:

    Attendee

    • emailAddress object

      EmailAddress

      • name string
      • address string
    • type string
    • status object
      • response string
      • time string
  • organizer object
    • emailAddress object

      EmailAddress

      • name string
      • address string
  • isAllDay boolean
  • isCancelled boolean
  • isDraft boolean
  • isOnlineMeeting boolean
  • isOrganizer boolean
  • isReminderOn boolean
  • onlineMeeting object
    • joinUrl string
    • conferenceId string
    • tollNumber string
  • onlineMeetingProvider string
  • importance string
  • sensitivity string
  • showAs string
  • recurrence object

    PatternedRecurrence

    • pattern object
      • type string
      • interval integer
      • daysOfWeek array

        array of:

        string

      • dayOfMonth integer
      • month integer
      • firstDayOfWeek string
      • index string
    • range object
      • type string
      • startDate string
      • endDate string
      • numberOfOccurrences integer
      • recurrenceTimeZone string
  • categories array

    array of:

    string

  • allowNewTimeProposals boolean
  • hideAttendees boolean
  • reminderMinutesBeforeStart integer
  • responseRequested boolean
  • responseStatus object
    • response string
    • time string
  • type string
  • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
  • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
  • iCalUId string
  • webLink string
  • changeKey string
  • hasAttachments boolean
  • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
  • calendarId stringCalendar this event belongs to
  • createdDateTime string
  • lastModifiedDateTime string
404
Calendar not found

GET /api/purple-suite/calendar/calendars

List Purple Calendar calendars

The calendar containers in this instance — each person's default calendar plus any shared or resource calendars, with owner, colour and sharing flags. These are the buckets events live in, not the events themselves; use it to resolve a calendar id before listing or creating events inside one.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
$topqueryintegernoNumber of items to return
$skipqueryintegernoNumber of items to skip
limitqueryintegernoAlias for $top — max items per page (default 50)

Responses

200
Paginated list of calendars

application/json

  • value array

    array of:

    Calendar

    • id string
    • name string
    • color string
    • hexColor string
    • isDefaultCalendar boolean
    • canEdit boolean
    • canShare boolean
    • canViewPrivateItems boolean
    • allowedOnlineMeetingProviders array

      array of:

      string

    • defaultOnlineMeetingProvider string
    • isRemovable boolean
    • isTallyingResponses boolean
    • owner object

      EmailAddress

      • name string
      • address string
    • changeKey string
    • createdDateTime string
    • lastModifiedDateTime string
  • @odata.nextLink stringOData next-page link, absent on the last page

POST /api/purple-suite/calendar/calendars

Create calendar

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

Calendar

  • id string
  • name string
  • color string
  • hexColor string
  • isDefaultCalendar boolean
  • canEdit boolean
  • canShare boolean
  • canViewPrivateItems boolean
  • allowedOnlineMeetingProviders array

    array of:

    string

  • defaultOnlineMeetingProvider string
  • isRemovable boolean
  • isTallyingResponses boolean
  • owner object

    EmailAddress

    • name string
    • address string
  • changeKey string
  • createdDateTime string
  • lastModifiedDateTime string

Responses

201
Created

application/json

Calendar

  • id string
  • name string
  • color string
  • hexColor string
  • isDefaultCalendar boolean
  • canEdit boolean
  • canShare boolean
  • canViewPrivateItems boolean
  • allowedOnlineMeetingProviders array

    array of:

    string

  • defaultOnlineMeetingProvider string
  • isRemovable boolean
  • isTallyingResponses boolean
  • owner object

    EmailAddress

    • name string
    • address string
  • changeKey string
  • createdDateTime string
  • lastModifiedDateTime string

GET /api/purple-suite/calendar/calendars/{id}

Get calendar

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

Calendar

  • id string
  • name string
  • color string
  • hexColor string
  • isDefaultCalendar boolean
  • canEdit boolean
  • canShare boolean
  • canViewPrivateItems boolean
  • allowedOnlineMeetingProviders array

    array of:

    string

  • defaultOnlineMeetingProvider string
  • isRemovable boolean
  • isTallyingResponses boolean
  • owner object

    EmailAddress

    • name string
    • address string
  • changeKey string
  • createdDateTime string
  • lastModifiedDateTime string
404
Not found

DELETE /api/purple-suite/calendar/calendars/{id}

Delete calendar

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

204
No content
404
Not found

PATCH /api/purple-suite/calendar/calendars/{id}

Update calendar

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json — required

Calendar

  • id string
  • name string
  • color string
  • hexColor string
  • isDefaultCalendar boolean
  • canEdit boolean
  • canShare boolean
  • canViewPrivateItems boolean
  • allowedOnlineMeetingProviders array

    array of:

    string

  • defaultOnlineMeetingProvider string
  • isRemovable boolean
  • isTallyingResponses boolean
  • owner object

    EmailAddress

    • name string
    • address string
  • changeKey string
  • createdDateTime string
  • lastModifiedDateTime string

Responses

200
Updated

application/json

Calendar

  • id string
  • name string
  • color string
  • hexColor string
  • isDefaultCalendar boolean
  • canEdit boolean
  • canShare boolean
  • canViewPrivateItems boolean
  • allowedOnlineMeetingProviders array

    array of:

    string

  • defaultOnlineMeetingProvider string
  • isRemovable boolean
  • isTallyingResponses boolean
  • owner object

    EmailAddress

    • name string
    • address string
  • changeKey string
  • createdDateTime string
  • lastModifiedDateTime string
404
Not found

GET /api/purple-suite/calendar/calendars/{id}/events

List events for a specific calendar

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes
startDateTimequerystringno
endDateTimequerystringno

Responses

200
Events for the calendar

application/json

  • value array

    array of:

    Event

    • id string
    • subject string
    • body object

      ItemBody

      • contentType string
      • content string
    • bodyPreview string
    • start object

      DateTimeTimeZone

      • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
      • timeZone string requiredIANA or Windows timezone name
    • end object

      DateTimeTimeZone

      • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
      • timeZone string requiredIANA or Windows timezone name
    • location object

      Location

      • displayName string
      • locationType string
      • uniqueId string
      • uniqueIdType string
    • locations array

      array of:

      Location

      • displayName string
      • locationType string
      • uniqueId string
      • uniqueIdType string
    • attendees array

      array of:

      Attendee

      • emailAddress object

        EmailAddress

        • name string
        • address string
      • type string
      • status object
        • response string
        • time string
    • organizer object
      • emailAddress object

        EmailAddress

        • name string
        • address string
    • isAllDay boolean
    • isCancelled boolean
    • isDraft boolean
    • isOnlineMeeting boolean
    • isOrganizer boolean
    • isReminderOn boolean
    • onlineMeeting object
      • joinUrl string
      • conferenceId string
      • tollNumber string
    • onlineMeetingProvider string
    • importance string
    • sensitivity string
    • showAs string
    • recurrence object

      PatternedRecurrence

      • pattern object
        • type string
        • interval integer
        • daysOfWeek array

          array of:

          string

        • dayOfMonth integer
        • month integer
        • firstDayOfWeek string
        • index string
      • range object
        • type string
        • startDate string
        • endDate string
        • numberOfOccurrences integer
        • recurrenceTimeZone string
    • categories array

      array of:

      string

    • allowNewTimeProposals boolean
    • hideAttendees boolean
    • reminderMinutesBeforeStart integer
    • responseRequested boolean
    • responseStatus object
      • response string
      • time string
    • type string
    • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
    • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
    • iCalUId string
    • webLink string
    • changeKey string
    • hasAttachments boolean
    • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
    • calendarId stringCalendar this event belongs to
    • createdDateTime string
    • lastModifiedDateTime string
404
Calendar not found

POST /api/purple-suite/calendar/calendars/{id}/events

Create event in a specific calendar

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

application/json — required

Event

  • id string
  • subject string
  • body object

    ItemBody

    • contentType string
    • content string
  • bodyPreview string
  • start object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • end object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • location object

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • locations array

    array of:

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • attendees array

    array of:

    Attendee

    • emailAddress object

      EmailAddress

      • name string
      • address string
    • type string
    • status object
      • response string
      • time string
  • organizer object
    • emailAddress object

      EmailAddress

      • name string
      • address string
  • isAllDay boolean
  • isCancelled boolean
  • isDraft boolean
  • isOnlineMeeting boolean
  • isOrganizer boolean
  • isReminderOn boolean
  • onlineMeeting object
    • joinUrl string
    • conferenceId string
    • tollNumber string
  • onlineMeetingProvider string
  • importance string
  • sensitivity string
  • showAs string
  • recurrence object

    PatternedRecurrence

    • pattern object
      • type string
      • interval integer
      • daysOfWeek array

        array of:

        string

      • dayOfMonth integer
      • month integer
      • firstDayOfWeek string
      • index string
    • range object
      • type string
      • startDate string
      • endDate string
      • numberOfOccurrences integer
      • recurrenceTimeZone string
  • categories array

    array of:

    string

  • allowNewTimeProposals boolean
  • hideAttendees boolean
  • reminderMinutesBeforeStart integer
  • responseRequested boolean
  • responseStatus object
    • response string
    • time string
  • type string
  • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
  • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
  • iCalUId string
  • webLink string
  • changeKey string
  • hasAttachments boolean
  • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
  • calendarId stringCalendar this event belongs to
  • createdDateTime string
  • lastModifiedDateTime string

Responses

201
Created event

application/json

Event

  • id string
  • subject string
  • body object

    ItemBody

    • contentType string
    • content string
  • bodyPreview string
  • start object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • end object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • location object

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • locations array

    array of:

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • attendees array

    array of:

    Attendee

    • emailAddress object

      EmailAddress

      • name string
      • address string
    • type string
    • status object
      • response string
      • time string
  • organizer object
    • emailAddress object

      EmailAddress

      • name string
      • address string
  • isAllDay boolean
  • isCancelled boolean
  • isDraft boolean
  • isOnlineMeeting boolean
  • isOrganizer boolean
  • isReminderOn boolean
  • onlineMeeting object
    • joinUrl string
    • conferenceId string
    • tollNumber string
  • onlineMeetingProvider string
  • importance string
  • sensitivity string
  • showAs string
  • recurrence object

    PatternedRecurrence

    • pattern object
      • type string
      • interval integer
      • daysOfWeek array

        array of:

        string

      • dayOfMonth integer
      • month integer
      • firstDayOfWeek string
      • index string
    • range object
      • type string
      • startDate string
      • endDate string
      • numberOfOccurrences integer
      • recurrenceTimeZone string
  • categories array

    array of:

    string

  • allowNewTimeProposals boolean
  • hideAttendees boolean
  • reminderMinutesBeforeStart integer
  • responseRequested boolean
  • responseStatus object
    • response string
    • time string
  • type string
  • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
  • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
  • iCalUId string
  • webLink string
  • changeKey string
  • hasAttachments boolean
  • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
  • calendarId stringCalendar this event belongs to
  • createdDateTime string
  • lastModifiedDateTime string
404
Calendar not found

POST /api/purple-suite/calendar/calendar/getSchedule

Get free/busy schedule for users (bare path alias)

Returns availability view and schedule items for each requested SMTP address. Also available at /users/{email}/calendar/getSchedule.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

  • schedules array requiredSMTP addresses to query
    SMTP addresses to query

    array of:

    string

  • startTime required

    allOf:

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • endTime required

    allOf:

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • availabilityViewInterval integerMinutes per availability slot

Responses

200
Schedule information

application/json

  • value array

    array of:

    ScheduleInformation

    • scheduleId string
    • availabilityView stringEncoded string: 0=free, 1=tentative, 2=busy, 3=oof, 4=workingElsewhere
    • scheduleItems array

      array of:

      • status string
      • subject string
      • location string
      • start object

        DateTimeTimeZone

        • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
        • timeZone string requiredIANA or Windows timezone name
      • end object

        DateTimeTimeZone

        • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
        • timeZone string requiredIANA or Windows timezone name
      • isPrivate boolean
    • workingHours object
      • daysOfWeek array

        array of:

        string

      • startTime string
      • endTime string
      • timeZone object
        • name string
400
schedules, startTime, and endTime are required

POST /api/purple-suite/calendar/users/{email}/calendar/getSchedule

Get free/busy schedule for users (user-scoped path)

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
emailpathstringyesUser email — or the literal "me" to act as the current impersonated user (the X-PS-Impersonate-User header, or the instance's configured default MCP user).

Request body

application/json — required

  • schedules array requiredSMTP addresses to query
    SMTP addresses to query

    array of:

    string

  • startTime required

    allOf:

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • endTime required

    allOf:

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • availabilityViewInterval integerMinutes per availability slot

Responses

200
Schedule information

application/json

  • value array

    array of:

    ScheduleInformation

    • scheduleId string
    • availabilityView stringEncoded string: 0=free, 1=tentative, 2=busy, 3=oof, 4=workingElsewhere
    • scheduleItems array

      array of:

      • status string
      • subject string
      • location string
      • start object

        DateTimeTimeZone

        • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
        • timeZone string requiredIANA or Windows timezone name
      • end object

        DateTimeTimeZone

        • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
        • timeZone string requiredIANA or Windows timezone name
      • isPrivate boolean
    • workingHours object
      • daysOfWeek array

        array of:

        string

      • startTime string
      • endTime string
      • timeZone object
        • name string

GET /api/purple-suite/calendar/places

List bookable meeting rooms

Physical meeting rooms in Purple Calendar — display name, room mailbox address, capacity, building/floor, accessibility and equipment tags (whiteboard, tv, video_conferencing). Use it to pick a room to attach as an event location or resource attendee; it is not an office/site directory and holds no people. Pages with _top/_skip.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
$topqueryintegernoNumber of items to return
$skipqueryintegernoNumber of items to skip
limitqueryintegernoAlias for $top — max items per page (default 50)

Responses

200
Paginated list of rooms

application/json

  • value array

    array of:

    Room

    • @odata.type string
    • id string
    • displayName string
    • emailAddress string
    • capacity integer
    • building string
    • floorNumber integer
    • floorLabel string
    • nickname string
    • label string
    • bookingType string
    • isWheelChairAccessible boolean
    • phone string
    • tags arrayEquipment tags (e.g. whiteboard, tv, video_conferencing, phone)
      Equipment tags (e.g. whiteboard, tv, video_conferencing, phone)

      array of:

      string

    • audioDeviceName string
    • videoDeviceName string
    • displayDeviceName string
    • address object
      • street string
      • city string
      • state string
      • postalCode string
      • countryOrRegion string
    • geoCoordinates object
    • createdDateTime string
    • lastModifiedDateTime string
  • @odata.nextLink stringOData next-page link, absent on the last page

POST /api/purple-suite/calendar/places

Create room

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

Room

  • @odata.type string
  • id string
  • displayName string
  • emailAddress string
  • capacity integer
  • building string
  • floorNumber integer
  • floorLabel string
  • nickname string
  • label string
  • bookingType string
  • isWheelChairAccessible boolean
  • phone string
  • tags arrayEquipment tags (e.g. whiteboard, tv, video_conferencing, phone)
    Equipment tags (e.g. whiteboard, tv, video_conferencing, phone)

    array of:

    string

  • audioDeviceName string
  • videoDeviceName string
  • displayDeviceName string
  • address object
    • street string
    • city string
    • state string
    • postalCode string
    • countryOrRegion string
  • geoCoordinates object
  • createdDateTime string
  • lastModifiedDateTime string

Responses

201
Created

application/json

Room

  • @odata.type string
  • id string
  • displayName string
  • emailAddress string
  • capacity integer
  • building string
  • floorNumber integer
  • floorLabel string
  • nickname string
  • label string
  • bookingType string
  • isWheelChairAccessible boolean
  • phone string
  • tags arrayEquipment tags (e.g. whiteboard, tv, video_conferencing, phone)
    Equipment tags (e.g. whiteboard, tv, video_conferencing, phone)

    array of:

    string

  • audioDeviceName string
  • videoDeviceName string
  • displayDeviceName string
  • address object
    • street string
    • city string
    • state string
    • postalCode string
    • countryOrRegion string
  • geoCoordinates object
  • createdDateTime string
  • lastModifiedDateTime string

GET /api/purple-suite/calendar/places/{id}

Get room

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

Room

  • @odata.type string
  • id string
  • displayName string
  • emailAddress string
  • capacity integer
  • building string
  • floorNumber integer
  • floorLabel string
  • nickname string
  • label string
  • bookingType string
  • isWheelChairAccessible boolean
  • phone string
  • tags arrayEquipment tags (e.g. whiteboard, tv, video_conferencing, phone)
    Equipment tags (e.g. whiteboard, tv, video_conferencing, phone)

    array of:

    string

  • audioDeviceName string
  • videoDeviceName string
  • displayDeviceName string
  • address object
    • street string
    • city string
    • state string
    • postalCode string
    • countryOrRegion string
  • geoCoordinates object
  • createdDateTime string
  • lastModifiedDateTime string
404
Not found

DELETE /api/purple-suite/calendar/places/{id}

Delete room

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

204
No content
404
Not found

PATCH /api/purple-suite/calendar/places/{id}

Update room

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json — required

Room

  • @odata.type string
  • id string
  • displayName string
  • emailAddress string
  • capacity integer
  • building string
  • floorNumber integer
  • floorLabel string
  • nickname string
  • label string
  • bookingType string
  • isWheelChairAccessible boolean
  • phone string
  • tags arrayEquipment tags (e.g. whiteboard, tv, video_conferencing, phone)
    Equipment tags (e.g. whiteboard, tv, video_conferencing, phone)

    array of:

    string

  • audioDeviceName string
  • videoDeviceName string
  • displayDeviceName string
  • address object
    • street string
    • city string
    • state string
    • postalCode string
    • countryOrRegion string
  • geoCoordinates object
  • createdDateTime string
  • lastModifiedDateTime string

Responses

200
Updated

application/json

Room

  • @odata.type string
  • id string
  • displayName string
  • emailAddress string
  • capacity integer
  • building string
  • floorNumber integer
  • floorLabel string
  • nickname string
  • label string
  • bookingType string
  • isWheelChairAccessible boolean
  • phone string
  • tags arrayEquipment tags (e.g. whiteboard, tv, video_conferencing, phone)
    Equipment tags (e.g. whiteboard, tv, video_conferencing, phone)

    array of:

    string

  • audioDeviceName string
  • videoDeviceName string
  • displayDeviceName string
  • address object
    • street string
    • city string
    • state string
    • postalCode string
    • countryOrRegion string
  • geoCoordinates object
  • createdDateTime string
  • lastModifiedDateTime string
404
Not found

GET /api/purple-suite/calendar/users/{email}/mailboxSettings

Get user mailbox settings

Returns a Graph-compatible MailboxSettings projection of the stored UserSettings record. Returns sensible defaults for unknown users.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
emailpathstringyesUser email — or the literal "me" to act as the current impersonated user (the X-PS-Impersonate-User header, or the instance's configured default MCP user).

Responses

200
Mailbox settings

application/json

MailboxSettings

Graph-compatible mailbox settings projection of UserSettings. GET/PATCH via /users/{email}/mailboxSettings.
  • timeZone string
  • dateFormat string
  • timeFormat string
  • language object
    • locale string
    • displayName string
  • workingHours object
    • daysOfWeek array

      array of:

      string

    • startTime string
    • endTime string
    • timeZone object
      • name string
  • automaticRepliesSetting object
    • status string
    • externalAudience string
    • internalReplyMessage string
    • externalReplyMessage string
  • delegateMeetingMessageDeliveryOptions string
  • userPurpose string

PATCH /api/purple-suite/calendar/users/{email}/mailboxSettings

Update user mailbox settings

Merges the provided fields into the user's settings. Creates a record if none exists. Validates timeZone and workingHours.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
emailpathstringyesUser email — or the literal "me" to act as the current impersonated user (the X-PS-Impersonate-User header, or the instance's configured default MCP user).

Request body

application/json — required

MailboxSettings

Graph-compatible mailbox settings projection of UserSettings. GET/PATCH via /users/{email}/mailboxSettings.
  • timeZone string
  • dateFormat string
  • timeFormat string
  • language object
    • locale string
    • displayName string
  • workingHours object
    • daysOfWeek array

      array of:

      string

    • startTime string
    • endTime string
    • timeZone object
      • name string
  • automaticRepliesSetting object
    • status string
    • externalAudience string
    • internalReplyMessage string
    • externalReplyMessage string
  • delegateMeetingMessageDeliveryOptions string
  • userPurpose string

Responses

200
Updated mailbox settings

application/json

MailboxSettings

Graph-compatible mailbox settings projection of UserSettings. GET/PATCH via /users/{email}/mailboxSettings.
  • timeZone string
  • dateFormat string
  • timeFormat string
  • language object
    • locale string
    • displayName string
  • workingHours object
    • daysOfWeek array

      array of:

      string

    • startTime string
    • endTime string
    • timeZone object
      • name string
  • automaticRepliesSetting object
    • status string
    • externalAudience string
    • internalReplyMessage string
    • externalReplyMessage string
  • delegateMeetingMessageDeliveryOptions string
  • userPurpose string
422
Invalid timeZone or workingHours

GET /api/purple-suite/calendar/distribution_lists

List email distribution lists

Named email groups in Purple Calendar (e.g. engineering-all@acme.com) with their member addresses and memberCount — used to invite a whole group to a meeting. These are mailing groups, not chat channels (see the chat app) or HR departments (see the hris app). Supports server-side querying with _filter/_search/_orderby/_select/_top/_skip/_count (OData $-params, renamed with a leading underscore for MCP).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
limitqueryintegernoMax items per page (default 50)
cursorquerystringnoPass the previous response's nextCursor to fetch the next page
$filterquerystringnoOData filter expression. Comparison operators: eq, ne, gt, ge, lt, le. Logical: and, or, not, with parentheses for grouping. String functions: contains(field,'x'), startswith(field,'x'), endswith(field,'x'). Membership: field in ('a','b'). Case-insensitive matching via tolower(field) / toupper(field). Nested fields use a slash, e.g. pto_balance/vacation_days. String literals use single quotes; dates are ISO-8601. Examples: "status eq 'active'"; "salary gt 50000 and department eq 'Engineering'"; "contains(tolower(name),'acme')"; "closeDate gt 2026-01-01".
$selectquerystringnoComma-separated list of fields to return, e.g. "id,firstName,email". Nested fields via slash ("pto_balance/vacation_days"). The id field is always included.
$orderbyquerystringnoSort clause(s), comma-separated, each "field [asc|desc]" (asc is the default). Example: "createdAt desc, lastName asc". Null values sort last.
$searchquerystringnoFree-text, case-insensitive substring match across the resource's searchable fields.
$topqueryintegernoMaximum number of items to return (page size).
$skipqueryintegernoNumber of matching items to skip before returning results (offset paging). Combine with $top.
$countquerybooleannoWhen true, include @odata.count (total matches after $filter/$search, before paging) in the response.

Responses

200
Paginated list of distribution lists

application/json

  • data array

    array of:

    DistributionList

    • id string
    • name string
    • email string
    • description string
    • type string
    • members arrayMember email addresses
      Member email addresses

      array of:

      string

    • memberCount integerMaintained automatically when members are added/removed
    • createdAt string
    • updatedAt string
  • nextCursor stringCursor for the next page, or null on the last page
  • total integerTotal documents in the collection

POST /api/purple-suite/calendar/distribution_lists

Create distribution list

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

DistributionList

  • id string
  • name string
  • email string
  • description string
  • type string
  • members arrayMember email addresses
    Member email addresses

    array of:

    string

  • memberCount integerMaintained automatically when members are added/removed
  • createdAt string
  • updatedAt string

Responses

201
Created

application/json

DistributionList

  • id string
  • name string
  • email string
  • description string
  • type string
  • members arrayMember email addresses
    Member email addresses

    array of:

    string

  • memberCount integerMaintained automatically when members are added/removed
  • createdAt string
  • updatedAt string

GET /api/purple-suite/calendar/distribution_lists/{id}

Get distribution list

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

DistributionList

  • id string
  • name string
  • email string
  • description string
  • type string
  • members arrayMember email addresses
    Member email addresses

    array of:

    string

  • memberCount integerMaintained automatically when members are added/removed
  • createdAt string
  • updatedAt string
404
Not found

DELETE /api/purple-suite/calendar/distribution_lists/{id}

Delete distribution list

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Deleted

application/json

  • success boolean
404
Not found

PATCH /api/purple-suite/calendar/distribution_lists/{id}

Update distribution list

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json

DistributionList

  • id string
  • name string
  • email string
  • description string
  • type string
  • members arrayMember email addresses
    Member email addresses

    array of:

    string

  • memberCount integerMaintained automatically when members are added/removed
  • createdAt string
  • updatedAt string

Responses

200
Updated

application/json

DistributionList

  • id string
  • name string
  • email string
  • description string
  • type string
  • members arrayMember email addresses
    Member email addresses

    array of:

    string

  • memberCount integerMaintained automatically when members are added/removed
  • createdAt string
  • updatedAt string
404
Not found

POST /api/purple-suite/calendar/distribution_lists/{id}/members

Add members to a distribution list

Appends new email addresses to the members array (duplicates are silently skipped). Updates memberCount.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

application/json — required

  • emails array required

    array of:

    string

Responses

200
Updated distribution list

application/json

DistributionList

  • id string
  • name string
  • email string
  • description string
  • type string
  • members arrayMember email addresses
    Member email addresses

    array of:

    string

  • memberCount integerMaintained automatically when members are added/removed
  • createdAt string
  • updatedAt string
404
Not found
422
emails array is required and must not be empty

DELETE /api/purple-suite/calendar/distribution_lists/{id}/members/{email}

Remove a member from a distribution list

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes
emailpathstringyesEmail address of the member to remove

Responses

200
Updated distribution list

application/json

DistributionList

  • id string
  • name string
  • email string
  • description string
  • type string
  • members arrayMember email addresses
    Member email addresses

    array of:

    string

  • memberCount integerMaintained automatically when members are added/removed
  • createdAt string
  • updatedAt string
404
Not found (list or member)

GET /api/purple-suite/calendar/user_settings

List calendar user (mailbox) settings

Raw UserSettings records — one per mailbox in Purple Calendar — holding each person's email, display name, timezone, working hours, date/time format, locale and auto-reply setting. This is the storage-level view and the way to enumerate who has a mailbox; for one known user prefer the Graph-shaped mailboxSettings tool. Supports server-side querying with _filter/_search/_orderby/_select/_top/_skip/_count (OData $-params, renamed with a leading underscore for MCP).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
limitqueryintegernoMax items per page (default 50)
cursorquerystringnoPass the previous response's nextCursor to fetch the next page
$filterquerystringnoOData filter expression. Comparison operators: eq, ne, gt, ge, lt, le. Logical: and, or, not, with parentheses for grouping. String functions: contains(field,'x'), startswith(field,'x'), endswith(field,'x'). Membership: field in ('a','b'). Case-insensitive matching via tolower(field) / toupper(field). Nested fields use a slash, e.g. pto_balance/vacation_days. String literals use single quotes; dates are ISO-8601. Examples: "status eq 'active'"; "salary gt 50000 and department eq 'Engineering'"; "contains(tolower(name),'acme')"; "closeDate gt 2026-01-01".
$selectquerystringnoComma-separated list of fields to return, e.g. "id,firstName,email". Nested fields via slash ("pto_balance/vacation_days"). The id field is always included.
$orderbyquerystringnoSort clause(s), comma-separated, each "field [asc|desc]" (asc is the default). Example: "createdAt desc, lastName asc". Null values sort last.
$searchquerystringnoFree-text, case-insensitive substring match across the resource's searchable fields.
$topqueryintegernoMaximum number of items to return (page size).
$skipqueryintegernoNumber of matching items to skip before returning results (offset paging). Combine with $top.
$countquerybooleannoWhen true, include @odata.count (total matches after $filter/$search, before paging) in the response.

Responses

200
Paginated list of user settings

application/json

  • data array

    array of:

    UserSettings

    • id string
    • email string
    • displayName string
    • title string
    • avatarColor stringHex color used for the user avatar in the UI
    • timeZone stringIANA timezone string
    • dateFormat string
    • timeFormat string
    • language object
      • locale string
      • displayName string
    • workingHours object
      • daysOfWeek array

        array of:

        string

      • startTime stringHH:MM:SS.0000000 format
      • endTime stringHH:MM:SS.0000000 format
      • timeZone object
        • name string
    • automaticRepliesSetting object
      • status string
      • externalAudience string
      • internalReplyMessage string
      • externalReplyMessage string
    • delegateMeetingMessageDeliveryOptions string
    • userPurpose string
    • createdAt string
    • updatedAt string
  • nextCursor stringCursor for the next page, or null on the last page
  • total integerTotal documents in the collection

POST /api/purple-suite/calendar/user_settings

Create user settings record

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

UserSettings

  • id string
  • email string
  • displayName string
  • title string
  • avatarColor stringHex color used for the user avatar in the UI
  • timeZone stringIANA timezone string
  • dateFormat string
  • timeFormat string
  • language object
    • locale string
    • displayName string
  • workingHours object
    • daysOfWeek array

      array of:

      string

    • startTime stringHH:MM:SS.0000000 format
    • endTime stringHH:MM:SS.0000000 format
    • timeZone object
      • name string
  • automaticRepliesSetting object
    • status string
    • externalAudience string
    • internalReplyMessage string
    • externalReplyMessage string
  • delegateMeetingMessageDeliveryOptions string
  • userPurpose string
  • createdAt string
  • updatedAt string

Responses

201
Created

application/json

UserSettings

  • id string
  • email string
  • displayName string
  • title string
  • avatarColor stringHex color used for the user avatar in the UI
  • timeZone stringIANA timezone string
  • dateFormat string
  • timeFormat string
  • language object
    • locale string
    • displayName string
  • workingHours object
    • daysOfWeek array

      array of:

      string

    • startTime stringHH:MM:SS.0000000 format
    • endTime stringHH:MM:SS.0000000 format
    • timeZone object
      • name string
  • automaticRepliesSetting object
    • status string
    • externalAudience string
    • internalReplyMessage string
    • externalReplyMessage string
  • delegateMeetingMessageDeliveryOptions string
  • userPurpose string
  • createdAt string
  • updatedAt string

GET /api/purple-suite/calendar/user_settings/{id}

Get user settings record

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

UserSettings

  • id string
  • email string
  • displayName string
  • title string
  • avatarColor stringHex color used for the user avatar in the UI
  • timeZone stringIANA timezone string
  • dateFormat string
  • timeFormat string
  • language object
    • locale string
    • displayName string
  • workingHours object
    • daysOfWeek array

      array of:

      string

    • startTime stringHH:MM:SS.0000000 format
    • endTime stringHH:MM:SS.0000000 format
    • timeZone object
      • name string
  • automaticRepliesSetting object
    • status string
    • externalAudience string
    • internalReplyMessage string
    • externalReplyMessage string
  • delegateMeetingMessageDeliveryOptions string
  • userPurpose string
  • createdAt string
  • updatedAt string
404
Not found

DELETE /api/purple-suite/calendar/user_settings/{id}

Delete user settings record

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Deleted

application/json

  • success boolean
404
Not found

PATCH /api/purple-suite/calendar/user_settings/{id}

Update a calendar user settings record

Partially updates one raw UserSettings record by its document id (timezone, working hours, locale, auto-replies). Use the mailboxSettings update tool instead when you have the person's email address rather than the record id.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json

UserSettings

  • id string
  • email string
  • displayName string
  • title string
  • avatarColor stringHex color used for the user avatar in the UI
  • timeZone stringIANA timezone string
  • dateFormat string
  • timeFormat string
  • language object
    • locale string
    • displayName string
  • workingHours object
    • daysOfWeek array

      array of:

      string

    • startTime stringHH:MM:SS.0000000 format
    • endTime stringHH:MM:SS.0000000 format
    • timeZone object
      • name string
  • automaticRepliesSetting object
    • status string
    • externalAudience string
    • internalReplyMessage string
    • externalReplyMessage string
  • delegateMeetingMessageDeliveryOptions string
  • userPurpose string
  • createdAt string
  • updatedAt string

Responses

200
Updated

application/json

UserSettings

  • id string
  • email string
  • displayName string
  • title string
  • avatarColor stringHex color used for the user avatar in the UI
  • timeZone stringIANA timezone string
  • dateFormat string
  • timeFormat string
  • language object
    • locale string
    • displayName string
  • workingHours object
    • daysOfWeek array

      array of:

      string

    • startTime stringHH:MM:SS.0000000 format
    • endTime stringHH:MM:SS.0000000 format
    • timeZone object
      • name string
  • automaticRepliesSetting object
    • status string
    • externalAudience string
    • internalReplyMessage string
    • externalReplyMessage string
  • delegateMeetingMessageDeliveryOptions string
  • userPurpose string
  • createdAt string
  • updatedAt string
404
Not found

POST /api/purple-suite/calendar/me/events/{id}/accept

Accept event invitation (/me alias)

Alias of /users/{email}/events/{id}/accept: acts as the impersonated user (X-PS-Impersonate-User header, or the instance's default MCP user).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

application/json

  • comment string
  • sendResponse boolean

Responses

202
Accepted
404
Not found

POST /api/purple-suite/calendar/me/events/{id}/decline

Decline event invitation (/me alias)

Alias of /users/{email}/events/{id}/decline: acts as the impersonated user (X-PS-Impersonate-User header, or the instance's default MCP user).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

application/json

  • comment string
  • sendResponse boolean
  • proposedNewTime object

Responses

202
Accepted
404
Not found

POST /api/purple-suite/calendar/me/events/{id}/tentativelyAccept

Tentatively accept event invitation (/me alias)

Alias of /users/{email}/events/{id}/tentativelyAccept: acts as the impersonated user (X-PS-Impersonate-User header, or the instance's default MCP user).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

application/json

  • comment string
  • sendResponse boolean
  • proposedNewTime object

Responses

202
Accepted
404
Not found

POST /api/purple-suite/calendar/me/events/{id}/cancel

Cancel event (user-scoped path) (/me alias)

Cancels the event (sets isCancelled: true, showAs: free). Does not delete the event. Cancelling a seriesMaster cancels the whole series; cancelling a generated occurrence (id in the form seriesMasterId_yyyymmdd) cancels just that date by materializing an exception. Alias of /users/{email}/events/{id}/cancel: acts as the impersonated user (X-PS-Impersonate-User header, or the instance's default MCP user).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

application/json

  • comment stringCancellation message

Responses

202
Accepted
404
Not found

GET /api/purple-suite/calendar/me/events/{id}/instances

List occurrences of an event series (user-scoped path) (/me alias)

Expands a seriesMaster into its occurrence instances within the time window (stored exceptions included). For a non-recurring event, returns the event itself when it intersects the window. Alias of /users/{email}/events/{id}/instances: acts as the impersonated user (X-PS-Impersonate-User header, or the instance's default MCP user).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes
startDateTimequerystringyes
endDateTimequerystringyes

Responses

200
Occurrences in range

application/json

  • value array

    array of:

    Event

    • id string
    • subject string
    • body object

      ItemBody

      • contentType string
      • content string
    • bodyPreview string
    • start object

      DateTimeTimeZone

      • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
      • timeZone string requiredIANA or Windows timezone name
    • end object

      DateTimeTimeZone

      • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
      • timeZone string requiredIANA or Windows timezone name
    • location object

      Location

      • displayName string
      • locationType string
      • uniqueId string
      • uniqueIdType string
    • locations array

      array of:

      Location

      • displayName string
      • locationType string
      • uniqueId string
      • uniqueIdType string
    • attendees array

      array of:

      Attendee

      • emailAddress object

        EmailAddress

        • name string
        • address string
      • type string
      • status object
        • response string
        • time string
    • organizer object
      • emailAddress object

        EmailAddress

        • name string
        • address string
    • isAllDay boolean
    • isCancelled boolean
    • isDraft boolean
    • isOnlineMeeting boolean
    • isOrganizer boolean
    • isReminderOn boolean
    • onlineMeeting object
      • joinUrl string
      • conferenceId string
      • tollNumber string
    • onlineMeetingProvider string
    • importance string
    • sensitivity string
    • showAs string
    • recurrence object

      PatternedRecurrence

      • pattern object
        • type string
        • interval integer
        • daysOfWeek array

          array of:

          string

        • dayOfMonth integer
        • month integer
        • firstDayOfWeek string
        • index string
      • range object
        • type string
        • startDate string
        • endDate string
        • numberOfOccurrences integer
        • recurrenceTimeZone string
    • categories array

      array of:

      string

    • allowNewTimeProposals boolean
    • hideAttendees boolean
    • reminderMinutesBeforeStart integer
    • responseRequested boolean
    • responseStatus object
      • response string
      • time string
    • type string
    • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
    • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
    • iCalUId string
    • webLink string
    • changeKey string
    • hasAttachments boolean
    • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
    • calendarId stringCalendar this event belongs to
    • createdDateTime string
    • lastModifiedDateTime string
400
startDateTime and endDateTime are required
404
Not found

POST /api/purple-suite/calendar/me/findMeetingTimes

Find meeting time suggestions (user-scoped path) (/me alias)

Organizer-scoped variant. Uses the organizer's timezone from their mailboxSettings for activityDomain filtering. Alias of /users/{email}/findMeetingTimes: acts as the impersonated user (X-PS-Impersonate-User header, or the instance's default MCP user).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
PreferheaderstringnoOptional response timezone override, e.g. `outlook.timezone="Pacific Standard Time"`

Request body

application/json — required

  • attendees array

    array of:

    • emailAddress object

      EmailAddress

      • name string
      • address string
    • type string
  • timeConstraint object
    • activityDomain string
    • timeSlots array

      array of:

      • start object

        DateTimeTimeZone

        • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
        • timeZone string requiredIANA or Windows timezone name
      • end object

        DateTimeTimeZone

        • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
        • timeZone string requiredIANA or Windows timezone name
  • meetingDuration stringISO 8601 duration, e.g. PT1H, PT30M
  • maxCandidates integer
  • minimumAttendeePercentage number
  • isOrganizerOptional boolean
  • returnSuggestionReasons boolean

Responses

200
Meeting time suggestions

application/json

  • emptySuggestionsReason string
  • meetingTimeSuggestions array

    array of:

    • confidence number
    • order integer
    • organizerAvailability string
    • suggestionReason string
    • attendeeAvailability array

      array of:

      • attendee object
      • availability string
    • locations array

      array of:

      object

    • meetingTimeSlot object
      • start object

        DateTimeTimeZone

        • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
        • timeZone string requiredIANA or Windows timezone name
      • end object

        DateTimeTimeZone

        • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
        • timeZone string requiredIANA or Windows timezone name

GET /api/purple-suite/calendar/me/calendarView

Get calendar view for a specific user (events in time range) (/me alias)

Alias of /users/{email}/calendarView: acts as the impersonated user (X-PS-Impersonate-User header, or the instance's default MCP user).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
startDateTimequerystringyes
endDateTimequerystringyes

Responses

200
User events in range

application/json

  • value array

    array of:

    Event

    • id string
    • subject string
    • body object

      ItemBody

      • contentType string
      • content string
    • bodyPreview string
    • start object

      DateTimeTimeZone

      • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
      • timeZone string requiredIANA or Windows timezone name
    • end object

      DateTimeTimeZone

      • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
      • timeZone string requiredIANA or Windows timezone name
    • location object

      Location

      • displayName string
      • locationType string
      • uniqueId string
      • uniqueIdType string
    • locations array

      array of:

      Location

      • displayName string
      • locationType string
      • uniqueId string
      • uniqueIdType string
    • attendees array

      array of:

      Attendee

      • emailAddress object

        EmailAddress

        • name string
        • address string
      • type string
      • status object
        • response string
        • time string
    • organizer object
      • emailAddress object

        EmailAddress

        • name string
        • address string
    • isAllDay boolean
    • isCancelled boolean
    • isDraft boolean
    • isOnlineMeeting boolean
    • isOrganizer boolean
    • isReminderOn boolean
    • onlineMeeting object
      • joinUrl string
      • conferenceId string
      • tollNumber string
    • onlineMeetingProvider string
    • importance string
    • sensitivity string
    • showAs string
    • recurrence object

      PatternedRecurrence

      • pattern object
        • type string
        • interval integer
        • daysOfWeek array

          array of:

          string

        • dayOfMonth integer
        • month integer
        • firstDayOfWeek string
        • index string
      • range object
        • type string
        • startDate string
        • endDate string
        • numberOfOccurrences integer
        • recurrenceTimeZone string
    • categories array

      array of:

      string

    • allowNewTimeProposals boolean
    • hideAttendees boolean
    • reminderMinutesBeforeStart integer
    • responseRequested boolean
    • responseStatus object
      • response string
      • time string
    • type string
    • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
    • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
    • iCalUId string
    • webLink string
    • changeKey string
    • hasAttachments boolean
    • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
    • calendarId stringCalendar this event belongs to
    • createdDateTime string
    • lastModifiedDateTime string
400
startDateTime and endDateTime are required

GET /api/purple-suite/calendar/me/events

List all events for a specific user (/me alias)

Alias of /users/{email}/events: acts as the impersonated user (X-PS-Impersonate-User header, or the instance's default MCP user).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
$topqueryintegernoNumber of items to return
$skipqueryintegernoNumber of items to skip
limitqueryintegernoAlias for $top — max items per page (default 50)

Responses

200
User events

application/json

  • value array

    array of:

    Event

    • id string
    • subject string
    • body object

      ItemBody

      • contentType string
      • content string
    • bodyPreview string
    • start object

      DateTimeTimeZone

      • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
      • timeZone string requiredIANA or Windows timezone name
    • end object

      DateTimeTimeZone

      • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
      • timeZone string requiredIANA or Windows timezone name
    • location object

      Location

      • displayName string
      • locationType string
      • uniqueId string
      • uniqueIdType string
    • locations array

      array of:

      Location

      • displayName string
      • locationType string
      • uniqueId string
      • uniqueIdType string
    • attendees array

      array of:

      Attendee

      • emailAddress object

        EmailAddress

        • name string
        • address string
      • type string
      • status object
        • response string
        • time string
    • organizer object
      • emailAddress object

        EmailAddress

        • name string
        • address string
    • isAllDay boolean
    • isCancelled boolean
    • isDraft boolean
    • isOnlineMeeting boolean
    • isOrganizer boolean
    • isReminderOn boolean
    • onlineMeeting object
      • joinUrl string
      • conferenceId string
      • tollNumber string
    • onlineMeetingProvider string
    • importance string
    • sensitivity string
    • showAs string
    • recurrence object

      PatternedRecurrence

      • pattern object
        • type string
        • interval integer
        • daysOfWeek array

          array of:

          string

        • dayOfMonth integer
        • month integer
        • firstDayOfWeek string
        • index string
      • range object
        • type string
        • startDate string
        • endDate string
        • numberOfOccurrences integer
        • recurrenceTimeZone string
    • categories array

      array of:

      string

    • allowNewTimeProposals boolean
    • hideAttendees boolean
    • reminderMinutesBeforeStart integer
    • responseRequested boolean
    • responseStatus object
      • response string
      • time string
    • type string
    • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
    • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
    • iCalUId string
    • webLink string
    • changeKey string
    • hasAttachments boolean
    • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
    • calendarId stringCalendar this event belongs to
    • createdDateTime string
    • lastModifiedDateTime string
  • @odata.nextLink stringOData next-page link, absent on the last page

POST /api/purple-suite/calendar/me/events

Create event (user-scoped path) (/me alias)

User-scoped twin of POST /events. Defaults the organizer to the resolved user when the body doesn't set one. Alias of /users/{email}/events: acts as the impersonated user (X-PS-Impersonate-User header, or the instance's default MCP user).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

Event

  • id string
  • subject string
  • body object

    ItemBody

    • contentType string
    • content string
  • bodyPreview string
  • start object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • end object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • location object

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • locations array

    array of:

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • attendees array

    array of:

    Attendee

    • emailAddress object

      EmailAddress

      • name string
      • address string
    • type string
    • status object
      • response string
      • time string
  • organizer object
    • emailAddress object

      EmailAddress

      • name string
      • address string
  • isAllDay boolean
  • isCancelled boolean
  • isDraft boolean
  • isOnlineMeeting boolean
  • isOrganizer boolean
  • isReminderOn boolean
  • onlineMeeting object
    • joinUrl string
    • conferenceId string
    • tollNumber string
  • onlineMeetingProvider string
  • importance string
  • sensitivity string
  • showAs string
  • recurrence object

    PatternedRecurrence

    • pattern object
      • type string
      • interval integer
      • daysOfWeek array

        array of:

        string

      • dayOfMonth integer
      • month integer
      • firstDayOfWeek string
      • index string
    • range object
      • type string
      • startDate string
      • endDate string
      • numberOfOccurrences integer
      • recurrenceTimeZone string
  • categories array

    array of:

    string

  • allowNewTimeProposals boolean
  • hideAttendees boolean
  • reminderMinutesBeforeStart integer
  • responseRequested boolean
  • responseStatus object
    • response string
    • time string
  • type string
  • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
  • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
  • iCalUId string
  • webLink string
  • changeKey string
  • hasAttachments boolean
  • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
  • calendarId stringCalendar this event belongs to
  • createdDateTime string
  • lastModifiedDateTime string

Responses

201
Created

application/json

Event

  • id string
  • subject string
  • body object

    ItemBody

    • contentType string
    • content string
  • bodyPreview string
  • start object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • end object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • location object

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • locations array

    array of:

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • attendees array

    array of:

    Attendee

    • emailAddress object

      EmailAddress

      • name string
      • address string
    • type string
    • status object
      • response string
      • time string
  • organizer object
    • emailAddress object

      EmailAddress

      • name string
      • address string
  • isAllDay boolean
  • isCancelled boolean
  • isDraft boolean
  • isOnlineMeeting boolean
  • isOrganizer boolean
  • isReminderOn boolean
  • onlineMeeting object
    • joinUrl string
    • conferenceId string
    • tollNumber string
  • onlineMeetingProvider string
  • importance string
  • sensitivity string
  • showAs string
  • recurrence object

    PatternedRecurrence

    • pattern object
      • type string
      • interval integer
      • daysOfWeek array

        array of:

        string

      • dayOfMonth integer
      • month integer
      • firstDayOfWeek string
      • index string
    • range object
      • type string
      • startDate string
      • endDate string
      • numberOfOccurrences integer
      • recurrenceTimeZone string
  • categories array

    array of:

    string

  • allowNewTimeProposals boolean
  • hideAttendees boolean
  • reminderMinutesBeforeStart integer
  • responseRequested boolean
  • responseStatus object
    • response string
    • time string
  • type string
  • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
  • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
  • iCalUId string
  • webLink string
  • changeKey string
  • hasAttachments boolean
  • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
  • calendarId stringCalendar this event belongs to
  • createdDateTime string
  • lastModifiedDateTime string

GET /api/purple-suite/calendar/me/events/{id}

Get event (user-scoped path) (/me alias)

User-scoped twin of GET /events/{id}. Alias of /users/{email}/events/{id}: acts as the impersonated user (X-PS-Impersonate-User header, or the instance's default MCP user).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

Event

  • id string
  • subject string
  • body object

    ItemBody

    • contentType string
    • content string
  • bodyPreview string
  • start object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • end object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • location object

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • locations array

    array of:

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • attendees array

    array of:

    Attendee

    • emailAddress object

      EmailAddress

      • name string
      • address string
    • type string
    • status object
      • response string
      • time string
  • organizer object
    • emailAddress object

      EmailAddress

      • name string
      • address string
  • isAllDay boolean
  • isCancelled boolean
  • isDraft boolean
  • isOnlineMeeting boolean
  • isOrganizer boolean
  • isReminderOn boolean
  • onlineMeeting object
    • joinUrl string
    • conferenceId string
    • tollNumber string
  • onlineMeetingProvider string
  • importance string
  • sensitivity string
  • showAs string
  • recurrence object

    PatternedRecurrence

    • pattern object
      • type string
      • interval integer
      • daysOfWeek array

        array of:

        string

      • dayOfMonth integer
      • month integer
      • firstDayOfWeek string
      • index string
    • range object
      • type string
      • startDate string
      • endDate string
      • numberOfOccurrences integer
      • recurrenceTimeZone string
  • categories array

    array of:

    string

  • allowNewTimeProposals boolean
  • hideAttendees boolean
  • reminderMinutesBeforeStart integer
  • responseRequested boolean
  • responseStatus object
    • response string
    • time string
  • type string
  • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
  • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
  • iCalUId string
  • webLink string
  • changeKey string
  • hasAttachments boolean
  • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
  • calendarId stringCalendar this event belongs to
  • createdDateTime string
  • lastModifiedDateTime string
404
Not found

DELETE /api/purple-suite/calendar/me/events/{id}

Delete event (user-scoped path) (/me alias)

User-scoped twin of DELETE /events/{id}. Alias of /users/{email}/events/{id}: acts as the impersonated user (X-PS-Impersonate-User header, or the instance's default MCP user).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

204
No content
404
Not found

PATCH /api/purple-suite/calendar/me/events/{id}

Update event (user-scoped path) (/me alias)

User-scoped twin of PATCH /events/{id}. Alias of /users/{email}/events/{id}: acts as the impersonated user (X-PS-Impersonate-User header, or the instance's default MCP user).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json — required

Event

  • id string
  • subject string
  • body object

    ItemBody

    • contentType string
    • content string
  • bodyPreview string
  • start object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • end object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • location object

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • locations array

    array of:

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • attendees array

    array of:

    Attendee

    • emailAddress object

      EmailAddress

      • name string
      • address string
    • type string
    • status object
      • response string
      • time string
  • organizer object
    • emailAddress object

      EmailAddress

      • name string
      • address string
  • isAllDay boolean
  • isCancelled boolean
  • isDraft boolean
  • isOnlineMeeting boolean
  • isOrganizer boolean
  • isReminderOn boolean
  • onlineMeeting object
    • joinUrl string
    • conferenceId string
    • tollNumber string
  • onlineMeetingProvider string
  • importance string
  • sensitivity string
  • showAs string
  • recurrence object

    PatternedRecurrence

    • pattern object
      • type string
      • interval integer
      • daysOfWeek array

        array of:

        string

      • dayOfMonth integer
      • month integer
      • firstDayOfWeek string
      • index string
    • range object
      • type string
      • startDate string
      • endDate string
      • numberOfOccurrences integer
      • recurrenceTimeZone string
  • categories array

    array of:

    string

  • allowNewTimeProposals boolean
  • hideAttendees boolean
  • reminderMinutesBeforeStart integer
  • responseRequested boolean
  • responseStatus object
    • response string
    • time string
  • type string
  • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
  • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
  • iCalUId string
  • webLink string
  • changeKey string
  • hasAttachments boolean
  • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
  • calendarId stringCalendar this event belongs to
  • createdDateTime string
  • lastModifiedDateTime string

Responses

200
Updated

application/json

Event

  • id string
  • subject string
  • body object

    ItemBody

    • contentType string
    • content string
  • bodyPreview string
  • start object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • end object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • location object

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • locations array

    array of:

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • attendees array

    array of:

    Attendee

    • emailAddress object

      EmailAddress

      • name string
      • address string
    • type string
    • status object
      • response string
      • time string
  • organizer object
    • emailAddress object

      EmailAddress

      • name string
      • address string
  • isAllDay boolean
  • isCancelled boolean
  • isDraft boolean
  • isOnlineMeeting boolean
  • isOrganizer boolean
  • isReminderOn boolean
  • onlineMeeting object
    • joinUrl string
    • conferenceId string
    • tollNumber string
  • onlineMeetingProvider string
  • importance string
  • sensitivity string
  • showAs string
  • recurrence object

    PatternedRecurrence

    • pattern object
      • type string
      • interval integer
      • daysOfWeek array

        array of:

        string

      • dayOfMonth integer
      • month integer
      • firstDayOfWeek string
      • index string
    • range object
      • type string
      • startDate string
      • endDate string
      • numberOfOccurrences integer
      • recurrenceTimeZone string
  • categories array

    array of:

    string

  • allowNewTimeProposals boolean
  • hideAttendees boolean
  • reminderMinutesBeforeStart integer
  • responseRequested boolean
  • responseStatus object
    • response string
    • time string
  • type string
  • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
  • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
  • iCalUId string
  • webLink string
  • changeKey string
  • hasAttachments boolean
  • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
  • calendarId stringCalendar this event belongs to
  • createdDateTime string
  • lastModifiedDateTime string
404
Not found

GET /api/purple-suite/calendar/me/calendars

List all calendars (user-scoped alias — returns all instance calendars) (/me alias)

Alias of /users/{email}/calendars: acts as the impersonated user (X-PS-Impersonate-User header, or the instance's default MCP user).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
$topqueryintegernoNumber of items to return
$skipqueryintegernoNumber of items to skip
limitqueryintegernoAlias for $top — max items per page (default 50)

Responses

200
Collection of calendars

application/json

  • value array

    array of:

    Calendar

    • id string
    • name string
    • color string
    • hexColor string
    • isDefaultCalendar boolean
    • canEdit boolean
    • canShare boolean
    • canViewPrivateItems boolean
    • allowedOnlineMeetingProviders array

      array of:

      string

    • defaultOnlineMeetingProvider string
    • isRemovable boolean
    • isTallyingResponses boolean
    • owner object

      EmailAddress

      • name string
      • address string
    • changeKey string
    • createdDateTime string
    • lastModifiedDateTime string
  • @odata.nextLink stringOData next-page link, absent on the last page

POST /api/purple-suite/calendar/me/calendars

Create calendar (user-scoped path) (/me alias)

User-scoped twin of POST /calendars. Defaults the owner to the resolved user when the body doesn't set one. Alias of /users/{email}/calendars: acts as the impersonated user (X-PS-Impersonate-User header, or the instance's default MCP user).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

Calendar

  • id string
  • name string
  • color string
  • hexColor string
  • isDefaultCalendar boolean
  • canEdit boolean
  • canShare boolean
  • canViewPrivateItems boolean
  • allowedOnlineMeetingProviders array

    array of:

    string

  • defaultOnlineMeetingProvider string
  • isRemovable boolean
  • isTallyingResponses boolean
  • owner object

    EmailAddress

    • name string
    • address string
  • changeKey string
  • createdDateTime string
  • lastModifiedDateTime string

Responses

201
Created

application/json

Calendar

  • id string
  • name string
  • color string
  • hexColor string
  • isDefaultCalendar boolean
  • canEdit boolean
  • canShare boolean
  • canViewPrivateItems boolean
  • allowedOnlineMeetingProviders array

    array of:

    string

  • defaultOnlineMeetingProvider string
  • isRemovable boolean
  • isTallyingResponses boolean
  • owner object

    EmailAddress

    • name string
    • address string
  • changeKey string
  • createdDateTime string
  • lastModifiedDateTime string

GET /api/purple-suite/calendar/me/calendars/{id}

Get calendar (user-scoped path) (/me alias)

User-scoped twin of GET /calendars/{id}. Alias of /users/{email}/calendars/{id}: acts as the impersonated user (X-PS-Impersonate-User header, or the instance's default MCP user).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

Calendar

  • id string
  • name string
  • color string
  • hexColor string
  • isDefaultCalendar boolean
  • canEdit boolean
  • canShare boolean
  • canViewPrivateItems boolean
  • allowedOnlineMeetingProviders array

    array of:

    string

  • defaultOnlineMeetingProvider string
  • isRemovable boolean
  • isTallyingResponses boolean
  • owner object

    EmailAddress

    • name string
    • address string
  • changeKey string
  • createdDateTime string
  • lastModifiedDateTime string
404
Not found

DELETE /api/purple-suite/calendar/me/calendars/{id}

Delete calendar (user-scoped path) (/me alias)

User-scoped twin of DELETE /calendars/{id}. Alias of /users/{email}/calendars/{id}: acts as the impersonated user (X-PS-Impersonate-User header, or the instance's default MCP user).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

204
No content
404
Not found

PATCH /api/purple-suite/calendar/me/calendars/{id}

Update calendar (user-scoped path) (/me alias)

User-scoped twin of PATCH /calendars/{id}. Alias of /users/{email}/calendars/{id}: acts as the impersonated user (X-PS-Impersonate-User header, or the instance's default MCP user).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json — required

Calendar

  • id string
  • name string
  • color string
  • hexColor string
  • isDefaultCalendar boolean
  • canEdit boolean
  • canShare boolean
  • canViewPrivateItems boolean
  • allowedOnlineMeetingProviders array

    array of:

    string

  • defaultOnlineMeetingProvider string
  • isRemovable boolean
  • isTallyingResponses boolean
  • owner object

    EmailAddress

    • name string
    • address string
  • changeKey string
  • createdDateTime string
  • lastModifiedDateTime string

Responses

200
Updated

application/json

Calendar

  • id string
  • name string
  • color string
  • hexColor string
  • isDefaultCalendar boolean
  • canEdit boolean
  • canShare boolean
  • canViewPrivateItems boolean
  • allowedOnlineMeetingProviders array

    array of:

    string

  • defaultOnlineMeetingProvider string
  • isRemovable boolean
  • isTallyingResponses boolean
  • owner object

    EmailAddress

    • name string
    • address string
  • changeKey string
  • createdDateTime string
  • lastModifiedDateTime string
404
Not found

GET /api/purple-suite/calendar/me/calendars/{id}/events

List events for a specific calendar (user-scoped path) (/me alias)

Alias of /users/{email}/calendars/{id}/events: acts as the impersonated user (X-PS-Impersonate-User header, or the instance's default MCP user).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyesCalendar id
startDateTimequerystringno
endDateTimequerystringno

Responses

200
Events for the calendar

application/json

  • value array

    array of:

    Event

    • id string
    • subject string
    • body object

      ItemBody

      • contentType string
      • content string
    • bodyPreview string
    • start object

      DateTimeTimeZone

      • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
      • timeZone string requiredIANA or Windows timezone name
    • end object

      DateTimeTimeZone

      • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
      • timeZone string requiredIANA or Windows timezone name
    • location object

      Location

      • displayName string
      • locationType string
      • uniqueId string
      • uniqueIdType string
    • locations array

      array of:

      Location

      • displayName string
      • locationType string
      • uniqueId string
      • uniqueIdType string
    • attendees array

      array of:

      Attendee

      • emailAddress object

        EmailAddress

        • name string
        • address string
      • type string
      • status object
        • response string
        • time string
    • organizer object
      • emailAddress object

        EmailAddress

        • name string
        • address string
    • isAllDay boolean
    • isCancelled boolean
    • isDraft boolean
    • isOnlineMeeting boolean
    • isOrganizer boolean
    • isReminderOn boolean
    • onlineMeeting object
      • joinUrl string
      • conferenceId string
      • tollNumber string
    • onlineMeetingProvider string
    • importance string
    • sensitivity string
    • showAs string
    • recurrence object

      PatternedRecurrence

      • pattern object
        • type string
        • interval integer
        • daysOfWeek array

          array of:

          string

        • dayOfMonth integer
        • month integer
        • firstDayOfWeek string
        • index string
      • range object
        • type string
        • startDate string
        • endDate string
        • numberOfOccurrences integer
        • recurrenceTimeZone string
    • categories array

      array of:

      string

    • allowNewTimeProposals boolean
    • hideAttendees boolean
    • reminderMinutesBeforeStart integer
    • responseRequested boolean
    • responseStatus object
      • response string
      • time string
    • type string
    • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
    • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
    • iCalUId string
    • webLink string
    • changeKey string
    • hasAttachments boolean
    • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
    • calendarId stringCalendar this event belongs to
    • createdDateTime string
    • lastModifiedDateTime string
404
Calendar not found

POST /api/purple-suite/calendar/me/calendars/{id}/events

Create event in a specific calendar (user-scoped path) (/me alias)

Alias of /users/{email}/calendars/{id}/events: acts as the impersonated user (X-PS-Impersonate-User header, or the instance's default MCP user).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyesCalendar id

Request body

application/json — required

Event

  • id string
  • subject string
  • body object

    ItemBody

    • contentType string
    • content string
  • bodyPreview string
  • start object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • end object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • location object

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • locations array

    array of:

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • attendees array

    array of:

    Attendee

    • emailAddress object

      EmailAddress

      • name string
      • address string
    • type string
    • status object
      • response string
      • time string
  • organizer object
    • emailAddress object

      EmailAddress

      • name string
      • address string
  • isAllDay boolean
  • isCancelled boolean
  • isDraft boolean
  • isOnlineMeeting boolean
  • isOrganizer boolean
  • isReminderOn boolean
  • onlineMeeting object
    • joinUrl string
    • conferenceId string
    • tollNumber string
  • onlineMeetingProvider string
  • importance string
  • sensitivity string
  • showAs string
  • recurrence object

    PatternedRecurrence

    • pattern object
      • type string
      • interval integer
      • daysOfWeek array

        array of:

        string

      • dayOfMonth integer
      • month integer
      • firstDayOfWeek string
      • index string
    • range object
      • type string
      • startDate string
      • endDate string
      • numberOfOccurrences integer
      • recurrenceTimeZone string
  • categories array

    array of:

    string

  • allowNewTimeProposals boolean
  • hideAttendees boolean
  • reminderMinutesBeforeStart integer
  • responseRequested boolean
  • responseStatus object
    • response string
    • time string
  • type string
  • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
  • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
  • iCalUId string
  • webLink string
  • changeKey string
  • hasAttachments boolean
  • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
  • calendarId stringCalendar this event belongs to
  • createdDateTime string
  • lastModifiedDateTime string

Responses

201
Created event

application/json

Event

  • id string
  • subject string
  • body object

    ItemBody

    • contentType string
    • content string
  • bodyPreview string
  • start object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • end object

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • location object

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • locations array

    array of:

    Location

    • displayName string
    • locationType string
    • uniqueId string
    • uniqueIdType string
  • attendees array

    array of:

    Attendee

    • emailAddress object

      EmailAddress

      • name string
      • address string
    • type string
    • status object
      • response string
      • time string
  • organizer object
    • emailAddress object

      EmailAddress

      • name string
      • address string
  • isAllDay boolean
  • isCancelled boolean
  • isDraft boolean
  • isOnlineMeeting boolean
  • isOrganizer boolean
  • isReminderOn boolean
  • onlineMeeting object
    • joinUrl string
    • conferenceId string
    • tollNumber string
  • onlineMeetingProvider string
  • importance string
  • sensitivity string
  • showAs string
  • recurrence object

    PatternedRecurrence

    • pattern object
      • type string
      • interval integer
      • daysOfWeek array

        array of:

        string

      • dayOfMonth integer
      • month integer
      • firstDayOfWeek string
      • index string
    • range object
      • type string
      • startDate string
      • endDate string
      • numberOfOccurrences integer
      • recurrenceTimeZone string
  • categories array

    array of:

    string

  • allowNewTimeProposals boolean
  • hideAttendees boolean
  • reminderMinutesBeforeStart integer
  • responseRequested boolean
  • responseStatus object
    • response string
    • time string
  • type string
  • seriesMasterId stringFor occurrences and exceptions, the id of the recurring series master; null otherwise
  • cancellationComment stringCancellation message sent to attendees (set by POST /events/{id}/cancel)
  • iCalUId string
  • webLink string
  • changeKey string
  • hasAttachments boolean
  • roomId stringPurple Suite room id (ROOM-xxx); null if no room booked
  • calendarId stringCalendar this event belongs to
  • createdDateTime string
  • lastModifiedDateTime string
404
Calendar not found

POST /api/purple-suite/calendar/me/calendar/getSchedule

Get free/busy schedule for users (user-scoped path) (/me alias)

Alias of /users/{email}/calendar/getSchedule: acts as the impersonated user (X-PS-Impersonate-User header, or the instance's default MCP user).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

  • schedules array requiredSMTP addresses to query
    SMTP addresses to query

    array of:

    string

  • startTime required

    allOf:

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • endTime required

    allOf:

    DateTimeTimeZone

    • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
    • timeZone string requiredIANA or Windows timezone name
  • availabilityViewInterval integerMinutes per availability slot

Responses

200
Schedule information

application/json

  • value array

    array of:

    ScheduleInformation

    • scheduleId string
    • availabilityView stringEncoded string: 0=free, 1=tentative, 2=busy, 3=oof, 4=workingElsewhere
    • scheduleItems array

      array of:

      • status string
      • subject string
      • location string
      • start object

        DateTimeTimeZone

        • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
        • timeZone string requiredIANA or Windows timezone name
      • end object

        DateTimeTimeZone

        • dateTime string requiredNaive ISO 8601 date-time (no Z suffix when a timeZone is supplied)
        • timeZone string requiredIANA or Windows timezone name
      • isPrivate boolean
    • workingHours object
      • daysOfWeek array

        array of:

        string

      • startTime string
      • endTime string
      • timeZone object
        • name string

GET /api/purple-suite/calendar/me/mailboxSettings

Get user mailbox settings (/me alias)

Returns a Graph-compatible MailboxSettings projection of the stored UserSettings record. Returns sensible defaults for unknown users. Alias of /users/{email}/mailboxSettings: acts as the impersonated user (X-PS-Impersonate-User header, or the instance's default MCP user).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Responses

200
Mailbox settings

application/json

MailboxSettings

Graph-compatible mailbox settings projection of UserSettings. GET/PATCH via /users/{email}/mailboxSettings.
  • timeZone string
  • dateFormat string
  • timeFormat string
  • language object
    • locale string
    • displayName string
  • workingHours object
    • daysOfWeek array

      array of:

      string

    • startTime string
    • endTime string
    • timeZone object
      • name string
  • automaticRepliesSetting object
    • status string
    • externalAudience string
    • internalReplyMessage string
    • externalReplyMessage string
  • delegateMeetingMessageDeliveryOptions string
  • userPurpose string

PATCH /api/purple-suite/calendar/me/mailboxSettings

Update user mailbox settings (/me alias)

Merges the provided fields into the user's settings. Creates a record if none exists. Validates timeZone and workingHours. Alias of /users/{email}/mailboxSettings: acts as the impersonated user (X-PS-Impersonate-User header, or the instance's default MCP user).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

MailboxSettings

Graph-compatible mailbox settings projection of UserSettings. GET/PATCH via /users/{email}/mailboxSettings.
  • timeZone string
  • dateFormat string
  • timeFormat string
  • language object
    • locale string
    • displayName string
  • workingHours object
    • daysOfWeek array

      array of:

      string

    • startTime string
    • endTime string
    • timeZone object
      • name string
  • automaticRepliesSetting object
    • status string
    • externalAudience string
    • internalReplyMessage string
    • externalReplyMessage string
  • delegateMeetingMessageDeliveryOptions string
  • userPurpose string

Responses

200
Updated mailbox settings

application/json

MailboxSettings

Graph-compatible mailbox settings projection of UserSettings. GET/PATCH via /users/{email}/mailboxSettings.
  • timeZone string
  • dateFormat string
  • timeFormat string
  • language object
    • locale string
    • displayName string
  • workingHours object
    • daysOfWeek array

      array of:

      string

    • startTime string
    • endTime string
    • timeZone object
      • name string
  • automaticRepliesSetting object
    • status string
    • externalAudience string
    • internalReplyMessage string
    • externalReplyMessage string
  • delegateMeetingMessageDeliveryOptions string
  • userPurpose string
422
Invalid timeZone or workingHours