Microsoft Office 365 Calendar API

Access and manage Outlook calendar events, calendars, and calendar groups. Supports scheduling, meeting management, and free/busy lookups.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

microsoft-office-365-calendar-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Microsoft Office 365 Microsoft Graph Calendar API
  description: The Microsoft Graph API provides a unified programmability model to access data, intelligence, and insights from Microsoft 365, Windows, and Enterprise Mobility + Security. It serves as the gateway to data and intelligence in Microsoft 365, enabling applications to interact with users, groups, mail, calendars, files, and other organizational resources through a single REST endpoint.
  version: 1.0.0
  termsOfService: https://docs.microsoft.com/en-us/legal/microsoft-apis/terms-of-use
  contact:
    name: Microsoft Graph Support
    url: https://developer.microsoft.com/en-us/graph/support
  license:
    name: Microsoft API License
    url: https://docs.microsoft.com/en-us/legal/microsoft-apis/terms-of-use
  x-documentation:
    url: https://learn.microsoft.com/en-us/graph/overview
  x-api-explorer:
    url: https://developer.microsoft.com/en-us/graph/graph-explorer
servers:
- url: https://graph.microsoft.com/v1.0
  description: Microsoft Graph v1.0 production endpoint
- url: https://graph.microsoft.com/beta
  description: Microsoft Graph beta endpoint (preview features)
security:
- oauth2: []
- bearerAuth: []
tags:
- name: Calendar
  description: Access and manage Outlook calendar events, calendars, and calendar groups. Supports scheduling, meeting management, and free/busy lookups.
  externalDocs:
    url: https://learn.microsoft.com/en-us/graph/api/resources/calendar?view=graph-rest-1.0
paths:
  /me/events:
    get:
      operationId: listEvents
      summary: Microsoft Office 365 List Events
      description: Get the events in the signed-in user's default calendar or from a specified calendar. The list contains single instance meetings and series masters. To get expanded event instances, you can get the calendar view or the instances of an event. Requires Calendars.Read or Calendars.ReadWrite permission.
      tags:
      - Calendar
      parameters:
      - $ref: '#/components/parameters/top'
      - $ref: '#/components/parameters/skip'
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/select'
      - $ref: '#/components/parameters/orderby'
      responses:
        '200':
          description: A collection of event objects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventCollectionResponse'
              examples:
                Listevents200Example:
                  summary: Default listEvents 200 response
                  x-microcks-default: true
                  value:
                    '@odata.context': example_value
                    '@odata.count': 10
                    '@odata.nextLink': https://www.example.com
                    value:
                    - id: abc123
                      subject: example_value
                      bodyPreview: example_value
                      locations: {}
                      attendees: {}
                      isAllDay: true
                      isCancelled: true
                      isOrganizer: true
                      isOnlineMeeting: true
                      onlineMeetingProvider: unknown
                      onlineMeetingUrl: https://www.example.com
                      seriesMasterId: '500123'
                      type: singleInstance
                      showAs: free
                      importance: low
                      sensitivity: normal
                      responseRequested: true
                      allowNewTimeProposals: true
                      categories: {}
                      hasAttachments: true
                      iCalUId: '500123'
                      webLink: https://www.example.com
                      createdDateTime: '2026-01-15T10:30:00Z'
                      lastModifiedDateTime: '2026-01-15T10:30:00Z'
                      reminderMinutesBeforeStart: 10
                      transactionId: '500123'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      operationId: createEvent
      summary: Microsoft Office 365 Create Event
      description: Create an event in the signed-in user's default calendar or a specified calendar. By default, the allowNewTimeProposals property is set to true when an event is created. Requires Calendars.ReadWrite permission.
      tags:
      - Calendar
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EventCreateRequest'
            examples:
              CreateeventRequestExample:
                summary: Default createEvent request
                x-microcks-default: true
                value:
                  subject: example_value
                  body:
                    contentType: text
                    content: example_value
                  start:
                    dateTime: example_value
                    timeZone: example_value
                  end:
                    dateTime: example_value
                    timeZone: example_value
                  location:
                    displayName: example_value
                    locationType: default
                    locationUri: example_value
                    uniqueId: '500123'
                    uniqueIdType: unknown
                  locations:
                  - displayName: example_value
                    locationType: default
                    locationUri: example_value
                    uniqueId: '500123'
                    uniqueIdType: unknown
                  attendees:
                  - type: required
                  isAllDay: true
                  isOnlineMeeting: true
                  onlineMeetingProvider: teamsForBusiness
                  recurrence: {}
                  showAs: free
                  importance: low
                  sensitivity: normal
                  responseRequested: true
                  allowNewTimeProposals: true
                  categories:
                  - example_value
                  reminderMinutesBeforeStart: 10
                  transactionId: '500123'
      responses:
        '201':
          description: The created event object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Event'
              examples:
                Createevent201Example:
                  summary: Default createEvent 201 response
                  x-microcks-default: true
                  value:
                    id: abc123
                    subject: example_value
                    body:
                      contentType: text
                      content: example_value
                    bodyPreview: example_value
                    start:
                      dateTime: example_value
                      timeZone: example_value
                    end:
                      dateTime: example_value
                      timeZone: example_value
                    location:
                      displayName: example_value
                      locationType: default
                      locationUri: example_value
                      uniqueId: '500123'
                      uniqueIdType: unknown
                    locations:
                    - displayName: example_value
                      locationType: default
                      locationUri: example_value
                      uniqueId: '500123'
                      uniqueIdType: unknown
                    attendees:
                    - type: required
                    organizer: {}
                    isAllDay: true
                    isCancelled: true
                    isOrganizer: true
                    isOnlineMeeting: true
                    onlineMeetingProvider: unknown
                    onlineMeetingUrl: https://www.example.com
                    onlineMeeting:
                      joinUrl: https://www.example.com
                      conferenceId: '500123'
                      tollNumber: example_value
                      tollFreeNumbers:
                      - {}
                      quickDial: example_value
                      phones:
                      - {}
                    recurrence: {}
                    seriesMasterId: '500123'
                    type: singleInstance
                    showAs: free
                    importance: low
                    sensitivity: normal
                    responseStatus:
                      response: none
                      time: '2026-01-15T10:30:00Z'
                    responseRequested: true
                    allowNewTimeProposals: true
                    categories:
                    - example_value
                    hasAttachments: true
                    iCalUId: '500123'
                    webLink: https://www.example.com
                    createdDateTime: '2026-01-15T10:30:00Z'
                    lastModifiedDateTime: '2026-01-15T10:30:00Z'
                    reminderMinutesBeforeStart: 10
                    transactionId: '500123'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /me/events/{event-id}:
    get:
      operationId: getEvent
      summary: Microsoft Office 365 Get Event
      description: Get the properties and relationships of the specified event object. Returns the event body in HTML format by default. Requires Calendars.Read or Calendars.ReadWrite permission.
      tags:
      - Calendar
      parameters:
      - $ref: '#/components/parameters/eventId'
      - $ref: '#/components/parameters/select'
      - $ref: '#/components/parameters/expand'
      responses:
        '200':
          description: The requested event object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Event'
              examples:
                Getevent200Example:
                  summary: Default getEvent 200 response
                  x-microcks-default: true
                  value:
                    id: abc123
                    subject: example_value
                    body:
                      contentType: text
                      content: example_value
                    bodyPreview: example_value
                    start:
                      dateTime: example_value
                      timeZone: example_value
                    end:
                      dateTime: example_value
                      timeZone: example_value
                    location:
                      displayName: example_value
                      locationType: default
                      locationUri: example_value
                      uniqueId: '500123'
                      uniqueIdType: unknown
                    locations:
                    - displayName: example_value
                      locationType: default
                      locationUri: example_value
                      uniqueId: '500123'
                      uniqueIdType: unknown
                    attendees:
                    - type: required
                    organizer: {}
                    isAllDay: true
                    isCancelled: true
                    isOrganizer: true
                    isOnlineMeeting: true
                    onlineMeetingProvider: unknown
                    onlineMeetingUrl: https://www.example.com
                    onlineMeeting:
                      joinUrl: https://www.example.com
                      conferenceId: '500123'
                      tollNumber: example_value
                      tollFreeNumbers:
                      - {}
                      quickDial: example_value
                      phones:
                      - {}
                    recurrence: {}
                    seriesMasterId: '500123'
                    type: singleInstance
                    showAs: free
                    importance: low
                    sensitivity: normal
                    responseStatus:
                      response: none
                      time: '2026-01-15T10:30:00Z'
                    responseRequested: true
                    allowNewTimeProposals: true
                    categories:
                    - example_value
                    hasAttachments: true
                    iCalUId: '500123'
                    webLink: https://www.example.com
                    createdDateTime: '2026-01-15T10:30:00Z'
                    lastModifiedDateTime: '2026-01-15T10:30:00Z'
                    reminderMinutesBeforeStart: 10
                    transactionId: '500123'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    patch:
      operationId: updateEvent
      summary: Microsoft Office 365 Update Event
      description: Update the properties of an event object. Only the properties you specify are changed. Requires Calendars.ReadWrite permission.
      tags:
      - Calendar
      parameters:
      - $ref: '#/components/parameters/eventId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EventUpdateRequest'
            examples:
              UpdateeventRequestExample:
                summary: Default updateEvent request
                x-microcks-default: true
                value:
                  subject: example_value
                  body:
                    contentType: text
                    content: example_value
                  start:
                    dateTime: example_value
                    timeZone: example_value
                  end:
                    dateTime: example_value
                    timeZone: example_value
                  location:
                    displayName: example_value
                    locationType: default
                    locationUri: example_value
                    uniqueId: '500123'
                    uniqueIdType: unknown
                  locations:
                  - displayName: example_value
                    locationType: default
                    locationUri: example_value
                    uniqueId: '500123'
                    uniqueIdType: unknown
                  attendees:
                  - type: required
                  isAllDay: true
                  isOnlineMeeting: true
                  onlineMeetingProvider: teamsForBusiness
                  recurrence: {}
                  showAs: free
                  importance: low
                  sensitivity: normal
                  categories:
                  - example_value
                  reminderMinutesBeforeStart: 10
      responses:
        '200':
          description: The updated event object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Event'
              examples:
                Updateevent200Example:
                  summary: Default updateEvent 200 response
                  x-microcks-default: true
                  value:
                    id: abc123
                    subject: example_value
                    body:
                      contentType: text
                      content: example_value
                    bodyPreview: example_value
                    start:
                      dateTime: example_value
                      timeZone: example_value
                    end:
                      dateTime: example_value
                      timeZone: example_value
                    location:
                      displayName: example_value
                      locationType: default
                      locationUri: example_value
                      uniqueId: '500123'
                      uniqueIdType: unknown
                    locations:
                    - displayName: example_value
                      locationType: default
                      locationUri: example_value
                      uniqueId: '500123'
                      uniqueIdType: unknown
                    attendees:
                    - type: required
                    organizer: {}
                    isAllDay: true
                    isCancelled: true
                    isOrganizer: true
                    isOnlineMeeting: true
                    onlineMeetingProvider: unknown
                    onlineMeetingUrl: https://www.example.com
                    onlineMeeting:
                      joinUrl: https://www.example.com
                      conferenceId: '500123'
                      tollNumber: example_value
                      tollFreeNumbers:
                      - {}
                      quickDial: example_value
                      phones:
                      - {}
                    recurrence: {}
                    seriesMasterId: '500123'
                    type: singleInstance
                    showAs: free
                    importance: low
                    sensitivity: normal
                    responseStatus:
                      response: none
                      time: '2026-01-15T10:30:00Z'
                    responseRequested: true
                    allowNewTimeProposals: true
                    categories:
                    - example_value
                    hasAttachments: true
                    iCalUId: '500123'
                    webLink: https://www.example.com
                    createdDateTime: '2026-01-15T10:30:00Z'
                    lastModifiedDateTime: '2026-01-15T10:30:00Z'
                    reminderMinutesBeforeStart: 10
                    transactionId: '500123'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    delete:
      operationId: deleteEvent
      summary: Microsoft Office 365 Delete Event
      description: Remove the specified event from the user's calendar. If the event is a meeting, deleting it on the organizer's calendar sends a cancellation message to attendees. Requires Calendars.ReadWrite permission.
      tags:
      - Calendar
      parameters:
      - $ref: '#/components/parameters/eventId'
      responses:
        '204':
          description: Event deleted successfully. No content returned.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /me/calendars:
    get:
      operationId: listCalendars
      summary: Microsoft Office 365 List Calendars
      description: Get all the signed-in user's calendars from the default calendar group or from a specific calendar group. Requires Calendars.Read or Calendars.ReadWrite permission.
      tags:
      - Calendar
      parameters:
      - $ref: '#/components/parameters/top'
      - $ref: '#/components/parameters/skip'
      - $ref: '#/components/parameters/select'
      - $ref: '#/components/parameters/filter'
      responses:
        '200':
          description: A collection of calendar objects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CalendarCollectionResponse'
              examples:
                Listcalendars200Example:
                  summary: Default listCalendars 200 response
                  x-microcks-default: true
                  value:
                    '@odata.context': example_value
                    '@odata.nextLink': https://www.example.com
                    value:
                    - id: abc123
                      name: Example Title
                      color: auto
                      changeKey: example_value
                      canEdit: true
                      canShare: true
                      canViewPrivateItems: true
                      isDefaultCalendar: true
                      hexColor: example_value
                      isRemovable: true
                      isTallyingResponses: true
                      allowedOnlineMeetingProviders: {}
                      defaultOnlineMeetingProvider: example_value
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /me/calendarView:
    get:
      operationId: getCalendarView
      summary: Microsoft Office 365 Get 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 default calendar or from a specified calendar. Requires Calendars.Read or Calendars.ReadWrite permission.
      tags:
      - Calendar
      parameters:
      - name: startDateTime
        in: query
        required: true
        description: The start date and time of the time range, in ISO 8601 format (e.g. 2019-11-08T19:00:00-08:00).
        schema:
          type: string
          format: date-time
        example: '2026-01-15T10:30:00Z'
      - name: endDateTime
        in: query
        required: true
        description: The end date and time of the time range, in ISO 8601 format (e.g. 2019-11-08T20:00:00-08:00).
        schema:
          type: string
          format: date-time
        example: '2026-01-15T10:30:00Z'
      - $ref: '#/components/parameters/top'
      - $ref: '#/components/parameters/skip'
      - $ref: '#/components/parameters/select'
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/orderby'
      responses:
        '200':
          description: A collection of event objects within the specified time range.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventCollectionResponse'
              examples:
                Getcalendarview200Example:
                  summary: Default getCalendarView 200 response
                  x-microcks-default: true
                  value:
                    '@odata.context': example_value
                    '@odata.count': 10
                    '@odata.nextLink': https://www.example.com
                    value:
                    - id: abc123
                      subject: example_value
                      bodyPreview: example_value
                      locations: {}
                      attendees: {}
                      isAllDay: true
                      isCancelled: true
                      isOrganizer: true
                      isOnlineMeeting: true
                      onlineMeetingProvider: unknown
                      onlineMeetingUrl: https://www.example.com
                      seriesMasterId: '500123'
                      type: singleInstance
                      showAs: free
                      importance: low
                      sensitivity: normal
                      responseRequested: true
                      allowNewTimeProposals: true
                      categories: {}
                      hasAttachments: true
                      iCalUId: '500123'
                      webLink: https://www.example.com
                      createdDateTime: '2026-01-15T10:30:00Z'
                      lastModifiedDateTime: '2026-01-15T10:30:00Z'
                      reminderMinutesBeforeStart: 10
                      transactionId: '500123'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /me/events/{event-id}/accept:
    post:
      operationId: acceptEvent
      summary: Microsoft Office 365 Accept Event
      description: Accept the specified event in a user calendar. Requires Calendars.ReadWrite permission.
      tags:
      - Calendar
      parameters:
      - $ref: '#/components/parameters/eventId'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                comment:
                  type: string
                  description: Text included in the response. Optional.
                sendResponse:
                  type: boolean
                  description: Whether a response is to be sent to the organizer. Default is true.
                  default: true
            examples:
              AccepteventRequestExample:
                summary: Default acceptEvent request
                x-microcks-default: true
                value:
                  comment: example_value
                  sendResponse: true
      responses:
        '202':
          description: Event accepted. No content returned.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /me/events/{event-id}/decline:
    post:
      operationId: declineEvent
      summary: Microsoft Office 365 Decline Event
      description: Decline invitation to the specified event in a user calendar. Requires Calendars.ReadWrite permission.
      tags:
      - Calendar
      parameters:
      - $ref: '#/components/parameters/eventId'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                comment:
                  type: string
                  description: Text included in the response. Optional.
                sendResponse:
                  type: boolean
                  description: Whether a response is to be sent to the organizer. Default is true.
                  default: true
                proposedNewTime:
                  $ref: '#/components/schemas/TimeSlot'
            examples:
              DeclineeventRequestExample:
                summary: Default declineEvent request
                x-microcks-default: true
                value:
                  comment: example_value
                  sendResponse: true
                  proposedNewTime:
                    start:
                      dateTime: example_value
                      timeZone: example_value
                    end:
                      dateTime: example_value
                      timeZone: example_value
      responses:
        '202':
          description: Event declined. No content returned.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    ODataError:
      type: object
      description: The error response from the Microsoft Graph API following OData conventions.
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: The error code string.
            message:
              type: string
              description: A human-readable error message.
            innerError:
              type: object
              properties:
                date:
                  type: string
                  format: date-time
                request-id:
                  type: string
                client-request-id:
                  type: string
          example: example_value
    PatternedRecurrence:
      type: object
      description: The recurrence pattern and range.
      properties:
        pattern:
          $ref: '#/components/schemas/RecurrencePattern'
        range:
          $ref: '#/components/schemas/RecurrenceRange'
    OutlookGeoCoordinates:
      type: object
      description: The geographic coordinates and elevation of a location.
      properties:
        latitude:
          type: number
          format: double
          example: 42.5
        longitude:
          type: number
          format: double
          example: 42.5
        accuracy:
          type: number
          format: double
          example: 42.5
        altitude:
          type: number
          format: double
          example: 42.5
        altitudeAccuracy:
          type: number
          format: double
          example: 42.5
    RecurrencePattern:
      type: object
      description: Describes the frequency by which a recurring event repeats.
      properties:
        type:
          type: string
          enum:
          - daily
          - weekly
          - absoluteMonthly
          - relativeMonthly
          - absoluteYearly
          - relativeYearly
          description: The recurrence pattern type.
          example: daily
        interval:
          type: integer
          description: The number of units between occurrences, where units can be in days, weeks, months, or years.
          example: 10
        daysOfWeek:
          type: array
          items:
            type: string
            enum:
            - sunday
            - monday
            - tuesday
            - wednesday
            - thursday
            - friday
            - saturday
          description: A collection of the days of the week on which the event occurs.
          example: []
        dayOfMonth:
          type: integer
          description: The day of the month on which the event occurs.
          example: 10
        month:
          type: integer
          description: The month in which the event occurs (1-12).
          example: 10
        firstDayOfWeek:
          type: string
          enum:
          - sunday
          - monday
          - tuesday
          - wednesday
          - thursday
          - friday
          - saturday
          description: The first day of the week.
          example: sunday
        index:
          type: string
          enum:
          - first
          - second
          - third
          - fourth
          - last
          description: The week index for relative monthly and yearly patterns.
          example: first
    Recipient:
      type: object
      description: Represents information about a user in the sending or receiving end of a message or event.
      properties:
        emailAddress:
          $ref: '#/components/schemas/EmailAddress'
    Location:
      type: object
      description: Represents location information of an event.
      properties:
        displayName:
          type: string
          description: The name associated with the location.
          example: example_value
        locationType:
          type: string
          enum:
          - default
          - conferenceRoom
          - homeAddress
          - businessAddress
          - geoCoordinates
          - streetAddress
          - hotel
          - restaurant
          - localBusiness
          - postalAddress
          description: The type of location.
          example: default
        locationUri:
          type: string
          descr

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