Skip to content

Latest commit

 

History

History
238 lines (194 loc) · 4.08 KB

File metadata and controls

238 lines (194 loc) · 4.08 KB

Outlook Routing Reference

App name: outlook Base URL proxied: graph.microsoft.com

API Path Pattern

/outlook/v1.0/me/{resource}

Common Endpoints

User Profile

GET /outlook/v1.0/me

Mail Folders

List Mail Folders

GET /outlook/v1.0/me/mailFolders

Well-known folder names: Inbox, Drafts, SentItems, DeletedItems, Archive, JunkEmail

Get Mail Folder

GET /outlook/v1.0/me/mailFolders/{folderId}

Create Mail Folder

POST /outlook/v1.0/me/mailFolders
Content-Type: application/json

{
  "displayName": "My Folder"
}

Messages

List Messages

GET /outlook/v1.0/me/messages

From specific folder:

GET /outlook/v1.0/me/mailFolders/Inbox/messages

With filter:

GET /outlook/v1.0/me/messages?$filter=isRead eq false&$top=10

Get Message

GET /outlook/v1.0/me/messages/{messageId}

Send Message

POST /outlook/v1.0/me/sendMail
Content-Type: application/json

{
  "message": {
    "subject": "Hello",
    "body": {
      "contentType": "Text",
      "content": "This is the email body."
    },
    "toRecipients": [
      {
        "emailAddress": {
          "address": "recipient@example.com"
        }
      }
    ]
  },
  "saveToSentItems": true
}

Create Draft

POST /outlook/v1.0/me/messages
Content-Type: application/json

{
  "subject": "Hello",
  "body": {
    "contentType": "Text",
    "content": "This is the email body."
  },
  "toRecipients": [
    {
      "emailAddress": {
        "address": "recipient@example.com"
      }
    }
  ]
}

Send Existing Draft

POST /outlook/v1.0/me/messages/{messageId}/send

Update Message (Mark as Read)

PATCH /outlook/v1.0/me/messages/{messageId}
Content-Type: application/json

{
  "isRead": true
}

Delete Message

DELETE /outlook/v1.0/me/messages/{messageId}

Move Message

POST /outlook/v1.0/me/messages/{messageId}/move
Content-Type: application/json

{
  "destinationId": "{folderId}"
}

Calendar

List Calendars

GET /outlook/v1.0/me/calendars

List Events

GET /outlook/v1.0/me/calendar/events

With filter:

GET /outlook/v1.0/me/calendar/events?$filter=start/dateTime ge '2024-01-01'&$top=10

Create Event

POST /outlook/v1.0/me/calendar/events
Content-Type: application/json

{
  "subject": "Meeting",
  "start": {
    "dateTime": "2024-01-15T10:00:00",
    "timeZone": "UTC"
  },
  "end": {
    "dateTime": "2024-01-15T11:00:00",
    "timeZone": "UTC"
  },
  "attendees": [
    {
      "emailAddress": {
        "address": "attendee@example.com"
      },
      "type": "required"
    }
  ]
}

Delete Event

DELETE /outlook/v1.0/me/events/{eventId}

Contacts

List Contacts

GET /outlook/v1.0/me/contacts

Create Contact

POST /outlook/v1.0/me/contacts
Content-Type: application/json

{
  "givenName": "John",
  "surname": "Doe",
  "emailAddresses": [
    {
      "address": "john.doe@example.com"
    }
  ]
}

Delete Contact

DELETE /outlook/v1.0/me/contacts/{contactId}

OData Query Parameters

  • $top=10 - Limit results
  • $skip=20 - Skip results (pagination)
  • $select=subject,from - Select specific fields
  • $filter=isRead eq false - Filter results
  • $orderby=receivedDateTime desc - Sort results
  • $search="keyword" - Search content

Notes

  • Use me as the user identifier for the authenticated user
  • Message body content types: Text or HTML
  • Well-known folder names work as folder IDs: Inbox, Drafts, SentItems, etc.
  • Calendar events use ISO 8601 datetime format

Resources