Microsoft Exchange Mailbox Discovery API

Operations for discovering mailbox structure and content

Documentation

Specifications

Other Resources

OpenAPI Specification

microsoft-exchange-mailbox-discovery-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Microsoft Exchange Exchange Online Admin Accepted Domains Mailbox Discovery API
  description: REST-based administrative API that enables a focused set of Exchange cmdlets and parameters as POST-only endpoints. Provides access to key tasks previously available through Exchange Web Services (EWS), including organization configuration, accepted domains, mailbox properties, mailbox folder permissions, and distribution group membership. Built as a complementary REST-first surface for specific administrative tasks caused by the EWS deprecation planned for October 2026.
  version: 2.0.0
  contact:
    name: Microsoft Support
    url: https://support.microsoft.com
    email: support@microsoft.com
  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://outlook.office365.com/adminapi/v2.0
  description: Exchange Online Admin API v2.0 endpoint
security:
- oauth2: []
tags:
- name: Mailbox Discovery
  description: Operations for discovering mailbox structure and content
paths:
  /users/{user-id}/mailboxes:
    get:
      operationId: listMailboxes
      summary: Microsoft Exchange List mailboxes
      description: Discover the mailboxes associated with a user, including primary mailbox and archive mailbox information. Returns mailbox metadata needed for import and export operations.
      tags:
      - Mailbox Discovery
      parameters:
      - $ref: '#/components/parameters/UserIdParam'
      responses:
        '200':
          description: Successfully retrieved mailbox information
          content:
            application/json:
              schema:
                type: object
                properties:
                  '@odata.context':
                    type: string
                  value:
                    type: array
                    items:
                      $ref: '#/components/schemas/Mailbox'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /users/{user-id}/mailboxes/{mailbox-id}/folders:
    get:
      operationId: listMailboxFolders
      summary: Microsoft Exchange List mailbox folders
      description: List all folders in the specified mailbox for content discovery. Returns folder hierarchy with metadata needed for targeted import and export operations.
      tags:
      - Mailbox Discovery
      parameters:
      - $ref: '#/components/parameters/UserIdParam'
      - $ref: '#/components/parameters/MailboxIdParam'
      - $ref: '#/components/parameters/TopParam'
      - $ref: '#/components/parameters/SkipParam'
      responses:
        '200':
          description: Successfully retrieved mailbox folders
          content:
            application/json:
              schema:
                type: object
                properties:
                  '@odata.context':
                    type: string
                  '@odata.nextLink':
                    type: string
                    format: uri
                  value:
                    type: array
                    items:
                      $ref: '#/components/schemas/MailboxFolder'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    Mailbox:
      type: object
      description: Represents a user's mailbox
      properties:
        id:
          type: string
          readOnly: true
          description: The mailbox unique identifier
        mailboxType:
          type: string
          enum:
          - primary
          - archive
          description: The type of mailbox
        displayName:
          type: string
          description: Display name of the mailbox
        primarySmtpAddress:
          type: string
          format: email
          description: The primary SMTP address of the mailbox
        totalItemCount:
          type: integer
          description: Total number of items in the mailbox
        totalItemSize:
          type: integer
          description: Total size of all items in bytes
    MailboxFolder:
      type: object
      description: A folder in a mailbox
      properties:
        id:
          type: string
          readOnly: true
          description: The folder unique identifier
        displayName:
          type: string
          description: Display name of the folder
        parentFolderId:
          type: string
          description: The ID of the parent folder
        folderType:
          type: string
          description: The type of folder (e.g. inbox, calendar, contacts)
        childFolderCount:
          type: integer
          description: Number of child folders
        totalItemCount:
          type: integer
          description: Total items in the folder
        unreadItemCount:
          type: integer
          description: Number of unread items
    ODataError:
      type: object
      description: OData error response
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
            innerError:
              type: object
              properties:
                request-id:
                  type: string
                date:
                  type: string
                  format: date-time
  parameters:
    MailboxIdParam:
      name: mailbox-id
      in: path
      required: true
      description: The unique identifier of the mailbox
      schema:
        type: string
    TopParam:
      name: $top
      in: query
      description: Number of items to return
      schema:
        type: integer
        minimum: 1
    UserIdParam:
      name: user-id
      in: path
      required: true
      description: The unique identifier or user principal name
      schema:
        type: string
    SkipParam:
      name: $skip
      in: query
      description: Number of items to skip
      schema:
        type: integer
        minimum: 0
  responses:
    Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ODataError'
    NotFound:
      description: Not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ODataError'
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ODataError'
  securitySchemes:
    oauth2:
      type: oauth2
      description: OAuth 2.0 authorization with Microsoft identity platform
      flows:
        clientCredentials:
          tokenUrl: https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
          scopes:
            https://outlook.office365.com/.default: Default scope for Exchange Online Admin API