Using Microsoft 365
Practical guide for working with Outlook, OneDrive, Calendar, Teams, and SharePoint through Fp Switchboard.
Quick Tips
Section titled “Quick Tips”- Use
mefor 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.nextLinkfor pagination
Common Gotchas
Section titled “Common Gotchas”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 | |
|---|---|
| Wrong | 2024-03-15 09:00 |
| Correct | 2024-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 | |
|---|---|
| Wrong | Looping through 1000 emails sequentially |
| Correct | Use $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 | |
|---|---|
| Wrong | GET /me/drive to get file content |
| Correct | GET /me/drive/items/{item-id}/content for file content |
Microsoft Teams Specifics
Section titled “Microsoft Teams Specifics”Team ID = M365 Group ID
Section titled “Team ID = M365 Group ID”Every Team has an underlying Microsoft 365 Group with the same GUID.
Channel Types
Section titled “Channel Types”- 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 | |
|---|---|
| Wrong | POST /teams/{id}/channels/{id}/messages for reply |
| Correct | POST /teams/{id}/channels/{id}/messages/{messageId}/replies |
Meeting Scheduling
Section titled “Meeting Scheduling”Online meetings are created via Calendar API, not Teams directly.
| Example | |
|---|---|
| Wrong | POST /teams/{id}/meetings |
| Correct | POST /me/events with isOnlineMeeting: true |
Multi-Step Patterns
Section titled “Multi-Step Patterns”Send Email with Attachment
Section titled “Send Email with Attachment”POST /me/messagesto create draftPOST /me/messages/{id}/attachmentsfor small files- Or use
createUploadSessionfor large attachments POST /me/messages/{id}/sendto send
Schedule Teams Meeting
Section titled “Schedule Teams Meeting”POST /me/eventswithisOnlineMeeting: true- Set
onlineMeetingProvider: "teamsForBusiness" - Meeting URL returned in
onlineMeeting.joinUrl - Attendees auto-invited via calendar invite
ID Format Reference
Section titled “ID Format Reference”| ID Type | Format | Example |
|---|---|---|
| User ID | GUID | a1b2c3d4-e5f6-7890-abcd-ef1234567890 |
| Message ID | Base64-encoded string | AAMkAGI1... |
| Drive Item ID | Alphanumeric | 01BYE5RZ6QN... |
| Team/Group ID | GUID | Same as above |
| Channel ID | Encoded string | 19:abc123...@thread.tacv2 |
Example Prompts
Section titled “Example Prompts”- “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”
Rate Limits
Section titled “Rate Limits”| Service | Limit |
|---|---|
| Outlook Mail | 10,000 requests/10 min per mailbox |
| Teams Messages | 4 messages/second per channel |
| OneDrive | 10,000 API calls/10 min |
| SharePoint | Varies, 429 with Retry-After header |