# Outlook Routing Reference

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

## API Path Pattern

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

## Common Endpoints

### User Profile
```bash
GET /outlook/v1.0/me
```

### Mail Folders

#### List Mail Folders
```bash
GET /outlook/v1.0/me/mailFolders
```

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

#### Get Mail Folder
```bash
GET /outlook/v1.0/me/mailFolders/{folderId}
```

#### Create Mail Folder
```bash
POST /outlook/v1.0/me/mailFolders
Content-Type: application/json

{
  "displayName": "My Folder"
}
```

### Messages

#### List Messages
```bash
GET /outlook/v1.0/me/messages
```

From specific folder:
```bash
GET /outlook/v1.0/me/mailFolders/Inbox/messages
```

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

#### Get Message
```bash
GET /outlook/v1.0/me/messages/{messageId}
```

#### Send Message
```bash
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": "[REDACTED_EMAIL]"
        }
      }
    ]
  },
  "saveToSentItems": true
}
```

#### Create Draft
```bash
POST /outlook/v1.0/me/messages
Content-Type: application/json

{
  "subject": "Hello",
  "body": {
    "contentType": "Text",
    "content": "This is the email body."
  },
  "toRecipients": [
    {
      "emailAddress": {
        "address": "[REDACTED_EMAIL]"
      }
    }
  ]
}
```

#### Send Existing Draft
```bash
POST /outlook/v1.0/me/messages/{messageId}/send
```

#### Update Message (Mark as Read)
```bash
PATCH /outlook/v1.0/me/messages/{messageId}
Content-Type: application/json

{
  "isRead": true
}
```

#### Delete Message
```bash
DELETE /outlook/v1.0/me/messages/{messageId}
```

#### Move Message
```bash
POST /outlook/v1.0/me/messages/{messageId}/move
Content-Type: application/json

{
  "destinationId": "{folderId}"
}
```

### Calendar

#### List Calendars
```bash
GET /outlook/v1.0/me/calendars
```

#### List Events
```bash
GET /outlook/v1.0/me/calendar/events
```

With filter:
```bash
GET /outlook/v1.0/me/calendar/events?$filter=start/dateTime ge '[REDACTED_PHONE]'&$top=10
```

#### Create Event
```bash
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": "[REDACTED_EMAIL]"
      },
      "type": "required"
    }
  ]
}
```

#### Delete Event
```bash
DELETE /outlook/v1.0/me/events/{eventId}
```

### Contacts

#### List Contacts
```bash
GET /outlook/v1.0/me/contacts
```

#### Create Contact
```bash
POST /outlook/v1.0/me/contacts
Content-Type: application/json

{
  "givenName": "John",
  "surname": "Doe",
  "emailAddresses": [
    {
      "address": "[REDACTED_EMAIL]"
    }
  ]
}
```

#### Delete Contact
```bash
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

- [Microsoft Graph API Overview](https://learn.microsoft.com/en-us/graph/api/overview)
- [Mail API](https://learn.microsoft.com/en-us/graph/api/resources/mail-api-overview)
- [Calendar API](https://learn.microsoft.com/en-us/graph/api/resources/calendar)
- [Contacts API](https://learn.microsoft.com/en-us/graph/api/resources/contact)
- [Query Parameters](https://learn.microsoft.com/en-us/graph/query-parameters)