Skip to content

Using Microsoft 365

Practical guide for working with Outlook, OneDrive, Calendar, Teams, and SharePoint through Fp Switchboard.

  • Use me for authenticated user or full UPN (user@domain.onmicrosoft.com)
  • All dates must be ISO 8601 with timezone (2024-03-15T09:00:00Z)
  • Attachments under 4MB inline, over 4MB require upload session
  • Rate limit: 10,000 requests/10 min per mailbox
  • Use @odata.nextLink for pagination

User ID vs UPN vs Mail Critical

Section titled “User ID vs UPN vs Mail ”

Graph API accepts user ID (GUID), userPrincipalName (UPN), or me. Email does not always equal UPN.

Example
Wrong/users/john@company.com/messages
Correct/users/john.smith@company.onmicrosoft.com/messages or /me/messages

ISO 8601 with Timezone Required Important

Section titled “ISO 8601 with Timezone Required ”

All datetime values must be ISO 8601 with timezone. Calendar events are especially sensitive.

Example
Wrong2024-03-15 09:00
Correct2024-03-15T09:00:00Z or 2024-03-15T09:00:00-05:00

Per-Mailbox Throttling Critical

Section titled “Per-Mailbox Throttling ”

Mail API throttles per-mailbox (10,000 requests/10 min). Bulk operations hit limits fast.

Example
WrongLooping through 1000 emails sequentially
CorrectUse $batch endpoint (max 20 requests) or pagination with $top

Attachment Upload Size Limits Important

Section titled “Attachment Upload Size Limits ”

Attachments under 4MB can be added inline. Over 4MB requires createUploadSession. Max file size 150MB.

Drive vs DriveItem Important

Section titled “Drive vs DriveItem ”

A Drive is a container (OneDrive, SharePoint library). DriveItem is a file/folder within it.

Example
WrongGET /me/drive to get file content
CorrectGET /me/drive/items/{item-id}/content for file content

Every Team has an underlying Microsoft 365 Group with the same GUID.

  • Standard — visible to all team members
  • Private — members only, requires explicit membership check
  • Shared — cross-organization, uses different endpoints

Chat Message Threading Critical

Section titled “Chat Message Threading ”

Replies go to specific message, not channel root.

Example
WrongPOST /teams/{id}/channels/{id}/messages for reply
CorrectPOST /teams/{id}/channels/{id}/messages/{messageId}/replies

Online meetings are created via Calendar API, not Teams directly.

Example
WrongPOST /teams/{id}/meetings
CorrectPOST /me/events with isOnlineMeeting: true
  1. POST /me/messages to create draft
  2. POST /me/messages/{id}/attachments for small files
  3. Or use createUploadSession for large attachments
  4. POST /me/messages/{id}/send to send
  1. POST /me/events with isOnlineMeeting: true
  2. Set onlineMeetingProvider: "teamsForBusiness"
  3. Meeting URL returned in onlineMeeting.joinUrl
  4. Attendees auto-invited via calendar invite
ID TypeFormatExample
User IDGUIDa1b2c3d4-e5f6-7890-abcd-ef1234567890
Message IDBase64-encoded stringAAMkAGI1...
Drive Item IDAlphanumeric01BYE5RZ6QN...
Team/Group IDGUIDSame as above
Channel IDEncoded string19:abc123...@thread.tacv2
  • “Send an email to the project team about the deadline”
  • “List my unread Outlook messages”
  • “Create a Teams meeting for Friday at 3pm”
  • “Search OneDrive for the presentation deck”
  • “List my calendar events for next week”
ServiceLimit
Outlook Mail10,000 requests/10 min per mailbox
Teams Messages4 messages/second per channel
OneDrive10,000 API calls/10 min
SharePointVaries, 429 with Retry-After header