Microsoft Graph Calendar API

Manage calendar events, meetings, and scheduling for Exchange Online users. Provides endpoints for creating, updating, and deleting events, managing attendees, and handling recurring meetings.

OpenAPI Specification

microsoft-exchange-graph-calendar-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Microsoft Exchange Microsoft Graph Calendar API
  description: >-
    Manage calendar events, meetings, and scheduling for Exchange Online users
    through the Microsoft Graph API. Provides endpoints for creating, updating,
    and deleting events, managing attendees, handling recurring meetings,
    finding meeting times, and getting free/busy schedules. Supports both user
    calendars and Microsoft 365 group calendars.
  version: 1.0.0
  contact:
    name: Microsoft Support
    url: https://support.microsoft.com
    email: [email protected]
  license:
    name: Microsoft API License
    url: https://www.microsoft.com/en-us/legal/terms-of-use
  x-date-modified: '2026-03-04'
servers:
  - url: https://graph.microsoft.com/v1.0
    description: Microsoft Graph v1.0 production endpoint
security:
  - oauth2: []
tags:
  - name: Calendars
    description: Operations for managing calendars
  - name: Events
    description: Operations for managing calendar events
  - name: Scheduling
    description: Operations for scheduling and free/busy information
paths:
  /me/calendars:
    get:
      operationId: listCalendars
      summary: Microsoft Exchange List calendars
      description: >-
        Get all the user's calendars, or the calendars in the default or
        other specific calendar group. Returns the calendar collection for
        the signed-in user.
      tags:
        - Calendars
      parameters:
        - $ref: '#/components/parameters/TopParam'
        - $ref: '#/components/parameters/SkipParam'
        - $ref: '#/components/parameters/SelectParam'
      responses:
        '200':
          description: Successfully retrieved calendars
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CalendarCollectionResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createCalendar
      summary: Microsoft Exchange Create calendar
      description: >-
        Create a new calendar in the default calendar group or specified
        calendar group for the user.
      tags:
        - Calendars
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Calendar'
      responses:
        '201':
          description: Successfully created calendar
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Calendar'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /me/calendars/{calendar-id}:
    get:
      operationId: getCalendar
      summary: Microsoft Exchange Get calendar
      description: >-
        Get the properties and relationships of a calendar object. The calendar
        can be one for a user or the default calendar of a Microsoft 365 group.
      tags:
        - Calendars
      parameters:
        - $ref: '#/components/parameters/CalendarIdParam'
        - $ref: '#/components/parameters/SelectParam'
      responses:
        '200':
          description: Successfully retrieved calendar
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Calendar'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: updateCalendar
      summary: Microsoft Exchange Update calendar
      description: >-
        Update the properties of a calendar object. The calendar can be one
        for a user or the default calendar of a Microsoft 365 group.
      tags:
        - Calendars
      parameters:
        - $ref: '#/components/parameters/CalendarIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Calendar'
      responses:
        '200':
          description: Successfully updated calendar
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Calendar'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteCalendar
      summary: Microsoft Exchange Delete calendar
      description: >-
        Delete a calendar other than the user's default calendar.
      tags:
        - Calendars
      parameters:
        - $ref: '#/components/parameters/CalendarIdParam'
      responses:
        '204':
          description: Successfully deleted calendar
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /me/events:
    get:
      operationId: listEvents
      summary: Microsoft Exchange List events
      description: >-
        Retrieve a list of event objects in the user's mailbox. The list
        contains single-instance meetings and series masters. Supports OData
        query parameters to filter, order, and page results.
      tags:
        - Events
      parameters:
        - $ref: '#/components/parameters/TopParam'
        - $ref: '#/components/parameters/SkipParam'
        - $ref: '#/components/parameters/SelectParam'
        - $ref: '#/components/parameters/FilterParam'
        - $ref: '#/components/parameters/OrderByParam'
      responses:
        '200':
          description: Successfully retrieved events
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventCollectionResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createEvent
      summary: Microsoft Exchange Create event
      description: >-
        Create a new event in the user's default calendar or specified calendar.
        Supports creating single-instance and recurring events, and events with
        online meeting information.
      tags:
        - Events
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Event'
      responses:
        '201':
          description: Successfully created event
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Event'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /me/events/{event-id}:
    get:
      operationId: getEvent
      summary: Microsoft Exchange Get event
      description: >-
        Get the properties and relationships of an event object. Returns the
        event details including attendees, location, recurrence, and online
        meeting information.
      tags:
        - Events
      parameters:
        - $ref: '#/components/parameters/EventIdParam'
        - $ref: '#/components/parameters/SelectParam'
      responses:
        '200':
          description: Successfully retrieved event
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Event'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: updateEvent
      summary: Microsoft Exchange Update event
      description: >-
        Update the properties of an event object. When updating the start or
        end time zones, use the list of supported time zones.
      tags:
        - Events
      parameters:
        - $ref: '#/components/parameters/EventIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Event'
      responses:
        '200':
          description: Successfully updated event
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Event'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteEvent
      summary: Microsoft Exchange Delete event
      description: >-
        Delete an event from the user's calendar. If the event is a meeting
        and the user is the organizer, a cancellation message is sent to
        all attendees.
      tags:
        - Events
      parameters:
        - $ref: '#/components/parameters/EventIdParam'
      responses:
        '204':
          description: Successfully deleted event
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /me/events/{event-id}/accept:
    post:
      operationId: acceptEvent
      summary: Microsoft Exchange Accept event
      description: >-
        Accept the specified event in a user calendar. Optionally sends a
        response to the organizer indicating the user has accepted.
      tags:
        - Events
      parameters:
        - $ref: '#/components/parameters/EventIdParam'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                comment:
                  type: string
                  description: A comment to include in the acceptance response
                sendResponse:
                  type: boolean
                  description: Whether to send a response to the organizer
                  default: true
      responses:
        '202':
          description: Event accepted
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /me/events/{event-id}/tentativelyAccept:
    post:
      operationId: tentativelyAcceptEvent
      summary: Microsoft Exchange Tentatively accept event
      description: >-
        Tentatively accept the specified event in a user calendar.
      tags:
        - Events
      parameters:
        - $ref: '#/components/parameters/EventIdParam'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                comment:
                  type: string
                  description: A comment to include in the response
                sendResponse:
                  type: boolean
                  description: Whether to send a response to the organizer
                  default: true
                proposedNewTime:
                  $ref: '#/components/schemas/TimeSlot'
      responses:
        '202':
          description: Event tentatively accepted
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /me/events/{event-id}/decline:
    post:
      operationId: declineEvent
      summary: Microsoft Exchange Decline event
      description: >-
        Decline invitation to the specified event in a user calendar.
      tags:
        - Events
      parameters:
        - $ref: '#/components/parameters/EventIdParam'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                comment:
                  type: string
                  description: A comment to include in the decline response
                sendResponse:
                  type: boolean
                  description: Whether to send a response to the organizer
                  default: true
                proposedNewTime:
                  $ref: '#/components/schemas/TimeSlot'
      responses:
        '202':
          description: Event declined
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /me/events/{event-id}/cancel:
    post:
      operationId: cancelEvent
      summary: Microsoft Exchange Cancel event
      description: >-
        Send a cancellation message from the organizer to all the attendees
        and cancel the specified meeting. Only the organizer can cancel a meeting.
      tags:
        - Events
      parameters:
        - $ref: '#/components/parameters/EventIdParam'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                comment:
                  type: string
                  description: A comment about the cancellation
      responses:
        '202':
          description: Event cancelled and cancellation messages sent
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /me/events/{event-id}/forward:
    post:
      operationId: forwardEvent
      summary: Microsoft Exchange Forward event
      description: >-
        Forward a meeting request to a new recipient. The organizer or
        attendee forwards the meeting request to a new recipient.
      tags:
        - Events
      parameters:
        - $ref: '#/components/parameters/EventIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                toRecipients:
                  type: array
                  items:
                    $ref: '#/components/schemas/Recipient'
                  description: The recipients to forward the event to
                comment:
                  type: string
                  description: A comment to include with the forwarded event
              required:
                - toRecipients
      responses:
        '202':
          description: Event forwarded
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /me/events/{event-id}/instances:
    get:
      operationId: listEventInstances
      summary: Microsoft Exchange List event instances
      description: >-
        Get the occurrences of a recurring series within a specified time range.
        If the event is a seriesMaster type, this returns the occurrences and
        exceptions of that series.
      tags:
        - Events
      parameters:
        - $ref: '#/components/parameters/EventIdParam'
        - name: startDateTime
          in: query
          required: true
          description: The start date and time of the time range in ISO 8601 format
          schema:
            type: string
            format: date-time
        - name: endDateTime
          in: query
          required: true
          description: The end date and time of the time range in ISO 8601 format
          schema:
            type: string
            format: date-time
        - $ref: '#/components/parameters/TopParam'
        - $ref: '#/components/parameters/SkipParam'
      responses:
        '200':
          description: Successfully retrieved event instances
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventCollectionResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /me/events/{event-id}/attachments:
    get:
      operationId: listEventAttachments
      summary: Microsoft Exchange List event attachments
      description: >-
        Retrieve a list of attachment objects attached to an event.
      tags:
        - Events
      parameters:
        - $ref: '#/components/parameters/EventIdParam'
        - $ref: '#/components/parameters/SelectParam'
      responses:
        '200':
          description: Successfully retrieved attachments
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AttachmentCollectionResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      operationId: addEventAttachment
      summary: Microsoft Exchange Add event attachment
      description: >-
        Add a file, item, or reference attachment to an event. This operation
        limits the size of the attachment to 3 MB.
      tags:
        - Events
      parameters:
        - $ref: '#/components/parameters/EventIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Attachment'
      responses:
        '201':
          description: Successfully added attachment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Attachment'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /me/calendarView:
    get:
      operationId: listCalendarView
      summary: Microsoft Exchange List calendar view
      description: >-
        Get the occurrences, exceptions, and single instances of events in a
        calendar view defined by a time range, from the user's primary calendar.
        Recurring events are expanded into their occurrences within the time range.
      tags:
        - Events
        - Scheduling
      parameters:
        - name: startDateTime
          in: query
          required: true
          description: The start date and time of the time range in ISO 8601 format
          schema:
            type: string
            format: date-time
        - name: endDateTime
          in: query
          required: true
          description: The end date and time of the time range in ISO 8601 format
          schema:
            type: string
            format: date-time
        - $ref: '#/components/parameters/TopParam'
        - $ref: '#/components/parameters/SkipParam'
        - $ref: '#/components/parameters/SelectParam'
        - $ref: '#/components/parameters/FilterParam'
      responses:
        '200':
          description: Successfully retrieved calendar view
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventCollectionResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /me/calendars/{calendar-id}/events:
    get:
      operationId: listCalendarEvents
      summary: Microsoft Exchange List events in calendar
      description: >-
        Retrieve a list of events in a specified calendar. The list contains
        single-instance meetings and series masters.
      tags:
        - Calendars
        - Events
      parameters:
        - $ref: '#/components/parameters/CalendarIdParam'
        - $ref: '#/components/parameters/TopParam'
        - $ref: '#/components/parameters/SkipParam'
        - $ref: '#/components/parameters/SelectParam'
        - $ref: '#/components/parameters/FilterParam'
        - $ref: '#/components/parameters/OrderByParam'
      responses:
        '200':
          description: Successfully retrieved events
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventCollectionResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      operationId: createEventInCalendar
      summary: Microsoft Exchange Create event in calendar
      description: >-
        Create a new event in the specified calendar.
      tags:
        - Calendars
        - Events
      parameters:
        - $ref: '#/components/parameters/CalendarIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Event'
      responses:
        '201':
          description: Successfully created event
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Event'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /me/calendar/getSchedule:
    post:
      operationId: getSchedule
      summary: Microsoft Exchange Get free/busy schedule
      description: >-
        Get the free/busy availability information for a collection of users,
        distribution lists, or resources for a specified time period.
      tags:
        - Scheduling
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                schedules:
                  type: array
                  items:
                    type: string
                  description: Collection of SMTP addresses of users, distribution lists, or resources
                startTime:
                  $ref: '#/components/schemas/DateTimeTimeZone'
                endTime:
                  $ref: '#/components/schemas/DateTimeTimeZone'
                availabilityViewInterval:
                  type: integer
                  description: Duration of each time slot in minutes (default 30, minimum 5, maximum 1440)
              required:
                - schedules
                - startTime
                - endTime
      responses:
        '200':
          description: Successfully retrieved schedule information
          content:
            application/json:
              schema:
                type: object
                properties:
                  '@odata.context':
                    type: string
                  value:
                    type: array
                    items:
                      $ref: '#/components/schemas/ScheduleInformation'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /me/findMeetingTimes:
    post:
      operationId: findMeetingTimes
      summary: Microsoft Exchange Find meeting times
      description: >-
        Suggest meeting times and locations based on organizer and attendee
        availability, and time or location constraints specified as parameters.
      tags:
        - Scheduling
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                attendees:
                  type: array
                  items:
                    $ref: '#/components/schemas/AttendeeBase'
                  description: Collection of attendees or resources for the meeting
                timeConstraint:
                  $ref: '#/components/schemas/TimeConstraint'
                locationConstraint:
                  $ref: '#/components/schemas/LocationConstraint'
                meetingDuration:
                  type: string
                  description: The length of the meeting in ISO 8601 duration format
                maxCandidates:
                  type: integer
                  description: Maximum number of meeting time suggestions to return
                isOrganizerOptional:
                  type: boolean
                  description: Indicates whether the organizer's attendance is optional
                returnSuggestionReasons:
                  type: boolean
                  description: Whether to return a reason for each suggestion
                minimumAttendeePercentage:
                  type: number
                  format: double
                  description: Minimum percentage of attendees that must be available
      responses:
        '200':
          description: Successfully found meeting times
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MeetingTimeSuggestionsResult'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  securitySchemes:
    oauth2:
      type: oauth2
      description: OAuth 2.0 authorization with Microsoft identity platform
      flows:
        authorizationCode:
          authorizationUrl: https://login.microsoftonline.com/common/oauth2/v2.0/authorize
          tokenUrl: https://login.microsoftonline.com/common/oauth2/v2.0/token
          scopes:
            Calendars.Read: Read user calendars
            Calendars.ReadWrite: Read and write access to user calendars
            Calendars.Read.Shared: Read shared calendars
            Calendars.ReadWrite.Shared: Read and write shared calendars
  parameters:
    CalendarIdParam:
      name: calendar-id
      in: path
      required: true
      description: The unique identifier of the calendar
      schema:
        type: string
    EventIdParam:
      name: event-id
      in: path
      required: true
      description: The unique identifier of the event
      schema:
        type: string
    TopParam:
      name: $top
      in: query
      description: The number of items to return
      schema:
        type: integer
        minimum: 1
    SkipParam:
      name: $skip
      in: query
      description: The number of items to skip
      schema:
        type: integer
        minimum: 0
    SelectParam:
      name: $select
      in: query
      description: Comma-separated list of properties to include in the response
      schema:
        type: string
    FilterParam:
      name: $filter
      in: query
      description: OData filter expression
      schema:
        type: string
    OrderByParam:
      name: $orderby
      in: query
      description: Comma-separated list of properties to sort by
      schema:
        type: string
  schemas:
    Calendar:
      type: object
      description: A container for event resources. Can be a user calendar or a group calendar.
      properties:
        id:
          type: string
          readOnly: true
          description: The calendar's unique identifier
        name:
          type: string
          description: The calendar name
        color:
          type: string
          enum:
            - auto
            - lightBlue
            - lightGreen
            - lightOrange
            - lightGray
            - lightYellow
            - lightTeal
            - lightPink
            - lightBrown
            - lightRed
            - maxColor
          description: Specifies the color theme of the calendar in the UI
        hexColor:
          type: string
          readOnly: true
          description: The calendar color in hex format
        isDefaultCalendar:
          type: boolean
          description: Whether this is the default calendar for new events
        changeKey:
          type: string
          readOnly: true
          description: Identifies the version of the calendar object
        canEdit:
          type: boolean
          readOnly: true
          description: Whether the user can write to the calendar
        canShare:
          type: boolean
          readOnly: true
          description: Whether the user can share the calendar
        canViewPrivateItems:
          type: boolean
          readOnly: true
          description: Whether the user can read private calendar items
        isRemovable:
          type: boolean
          readOnly: true
          description: Whether this user calendar can be deleted
        isTallyingResponses:
          type: boolean
          readOnly: true
          description: Whether this calendar supports tracking meeting responses
        owner:
          $ref: '#/components/schemas/EmailAddress'
        allowedOnlineMeetingProviders:
          type: array
          items:
            type: string
            enum:
              - unknown
              - skypeForBusiness
              - skypeForConsumer
              - teamsForBusiness
          description: Online meeting providers available for this calendar
        defaultOnlineMeetingProvider:
          type: string
          enum:
            - unknown
            - skypeForBusiness
            - skypeForConsumer
            - teamsForBusiness
          description: Default online meeting provider for this calendar
    Event:
      type: object
      description: An event in a user calendar or the default calendar of a Microsoft 365 group
      properties:
        id:
          type: string
          readOnly: true
          description: Unique identifier for the event
        subject:
          type: string
          description: The text of the event's subject line
        body:
          $ref: '#/components/schemas/ItemBody'
        bodyPreview:
          type: string
          readOnly: true
          description: The preview of the message associated with the event in text format
        start:
          $ref: '#/components/schemas/DateTimeTimeZone'
        end:
          $ref: '#/components/schemas/DateTimeTimeZone'
        location:
          $ref: '#/components/schemas/Location'
        locations:
          type: array
          items:
            $ref: '#/components/schemas/Location'
          description: The locations where the event is held or attended from
        attendees:
          type: array
          items:
            $ref: '#/components/schemas/Attendee'
          description: The collection of attendees for the event
        organizer:
          $ref: '#/components/schemas/Recipient'
        isAllDay:
          type: boolean
          description: Whether the event lasts all day
        isCancelled:
          type: boolean
          readOnly: true
          description: Whether the event has been canceled
        isDraft:
          type: boolean
          readOnly: true
          description: Whether the user has updated the event but not sent updates to attendees
        isOnlineMeeting:
          type: boolean
          description: Whether this event has online meeting information
        isOrganizer:
          type: boolean
          readOnly: true
          description: Whether the calendar owner is the organizer
        isReminderOn:
          type: boolean
          description: Whether an alert is set to remind the user
        onlineMeeting:
          $ref: '#/components/schemas/OnlineMeetingInfo'
        onlineMeetingProvider:
          type: string
          enum:
            - unknown
            - teamsForBusiness
            - skypeForBusiness
            - skypeForConsumer
          description: The online meeting service provider
        onlineMeetingUrl:
          type: string
          readOnly: true
          description: URL for an online meeting
        recurrence:
          $ref: '#/components/schemas/PatternedRecurrence'
        reminderMinutesBeforeStart:
          type: integer
          description: Minutes before start time that the reminder alert occurs
        responseRequested:
          type: boolean
          description: Whether the organizer requests invitees to send a response
        responseStatus:
          $ref: '#/components/schemas/ResponseStatus'
        sensitivity:
          type: string
          enum:
            - normal
            - personal
            - private
            - confidential
          description: The event sensitivity level
        seriesMasterId:
          type: string
          readOnly: true
          description: The ID for the recurring series master if this is part of a series
        showAs:
          type: string
          enum:
            - free
            - tentative
            - busy
            - oof
            - workingElsewhere
            - unknown
          description: The status to show for the event
        type:
          type: string
          readOnly: true
          enum:
            - singleInstance
            - occurrence
            - exception
            - seriesMaster
          description: The event type
        importance:
          type: string
          enum:
            - low
            - normal
            - high
          description: The importance of the event
        hasAttachments:
          type: boolean
          readOnly: true
          description: Whether the event has attachments
        categories:
          type: array
          items:
            type: string
          description: The categories associated with the event
        allowNewTimeProposals:
          type: boolean
          des

# --- truncated at 32 KB (48 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/microsoft-exchange/refs/heads/main/openapi/microsoft-exchange-graph-calendar-openapi.yml