Skip to content

mailboxes

Mailboxes. User, shared, room, and equipment mailboxes plus their settings. The mailboxes entity set lives under /exchange/v1.0/mailboxes in the Recipients category.

Method Path Synopsis Role Plan
GET /exchange/v1.0/mailboxes List mailboxes entries. Mailbox.Read Community
POST /exchange/v1.0/mailboxes POST /mailboxes - provisions a new mailbox via New-Mailbox. Body shape depends on the mailbox type: Regular: { “name”, “userPrincipalName”, “password” }Resource: add “room”: true | “equipment”: true | “shared”: true | “discovery”: true (password not required for Room/Equipment/Shared). Returns 201 + Location header + the newly-created mailbox. Mailbox.ReadWrite Pro
GET /exchange/v1.0/mailboxes/{key} Get a single mailboxes entry by Identity. Mailbox.Read Community
PATCH /exchange/v1.0/mailboxes/{key} PATCH /mailboxes/{key} - partial mailbox configuration update via Set-Mailbox. Body keys subset of . High-frequency L1/L2 use cases (forwarding, quotas, custom attributes, holds, archive, audit, address policies) all bind through this single endpoint. Returns 200 + the updated entity. Mailbox.ReadWrite Pro
DELETE /exchange/v1.0/mailboxes/{key} DELETE /mailboxes/{key} - removes a mailbox via Remove-Mailbox. Destructive: by default mailboxes go through soft-delete (recoverable for ~30 days). Pass ?permanentlyDelete=true to purge immediately; ?ignoreLegalHold=true to override hold protection; ?dryRun=true for -WhatIf. Mailbox.ReadWrite Pro
GET /exchange/v1.0/mailboxes/{key}/autoReplyConfiguration Get-MailboxAutoReplyConfiguration - out-of-office / vacation responder. Mailbox.Read Community
PATCH /exchange/v1.0/mailboxes/{key}/autoReplyConfiguration PATCH /mailboxes/{key}/autoReplyConfiguration → Set-MailboxAutoReplyConfiguration. Mailbox.ReadWrite Pro
GET /exchange/v1.0/mailboxes/{key}/calendarConfiguration Get-MailboxCalendarConfiguration - calendar display + workdays + reminders. Mailbox.Read Community
PATCH /exchange/v1.0/mailboxes/{key}/calendarConfiguration PATCH /mailboxes/{key}/calendarConfiguration → Set-MailboxCalendarConfiguration. Mailbox.ReadWrite Pro
GET /exchange/v1.0/mailboxes/{key}/calendarFolders Get-MailboxCalendarFolder - calendar folder publish/sharing settings. Defaults to the primary Calendar folder. Mailbox.Read Community
GET /exchange/v1.0/mailboxes/{key}/calendarProcessing Get-CalendarProcessing - room/equipment booking + delegate behavior. Mailbox.Read Community
PATCH /exchange/v1.0/mailboxes/{key}/calendarProcessing PATCH /mailboxes/{key}/calendarProcessing → Set-CalendarProcessing. Mailbox.ReadWrite Pro
GET /exchange/v1.0/mailboxes/{key}/casMailbox Sub-resource of the mailboxes at GET /mailboxes/{key} - Client Access (POP/IMAP/MAPI/OWA) configuration. Backed by Get-CASMailbox. Mailbox.Read Community
PATCH /exchange/v1.0/mailboxes/{key}/casMailbox PATCH /mailboxes/{key}/casMailbox → Set-CASMailbox (client-access protocol toggles). Mailbox.ReadWrite Pro
POST /exchange/v1.0/mailboxes/{key}/disableArchive POST /mailboxes/{key}/disableArchive - disables the archive mailbox via Disable-Mailbox -Archive. Use ?permanentlyDisable=true to skip the soft-delete recovery window; ?ignoreLegalHold=true for hold override; ?dryRun=true for -WhatIf. Mailbox.ReadWrite Pro
POST /exchange/v1.0/mailboxes/{key}/enableArchive POST /mailboxes/{key}/enableArchive - enables the archive mailbox for an existing mailbox via Enable-Mailbox -Archive. Optional body fields: { archiveDomain, displayName }. Returns 204. Mailbox.ReadWrite Pro
GET /exchange/v1.0/mailboxes/{key}/folderPermissions Sub-resource of the mailboxes at GET /mailboxes/{key} - list per-folder client ACLs. Backed by Get-MailboxFolderPermission. MailboxPermission.Read Community
POST /exchange/v1.0/mailboxes/{key}/folderPermissions POST /mailboxes/{key}/folderPermissions - add a per-folder ACL (Add-MailboxFolderPermission). Body: { folder, user, accessRights[] }. Returns 201 + Location. MailboxPermission.ReadWrite Pro
PATCH /exchange/v1.0/mailboxes/{key}/folderPermissions/{permissionId} PATCH /mailboxes/{key}/folderPermissions/{permissionId} - change an existing folder ACL’s rights (Set-MailboxFolderPermission). F38 (audit 2026-06-01): keyed by permissionId (“<folder>|<user>”, same key as DELETE) so the target is identified by the URL, not the body. Body: { accessRights[], sendNotificationToUser?, sharingPermissionFlags? }. Returns 204. MailboxPermission.ReadWrite Pro
DELETE /exchange/v1.0/mailboxes/{key}/folderPermissions/{permissionId} DELETE /mailboxes/{key}/folderPermissions/{permissionId} - remove a folder ACL (Remove-MailboxFolderPermission). permissionId is “<folder>|<user>”. Returns 204. MailboxPermission.ReadWrite Pro
GET /exchange/v1.0/mailboxes/{key}/folderStatistics GET /mailboxes/{key}/folderStatistics?folderPath=Calendar - per-folder size and item count. folderPath is optional; if omitted, the cmdlet returns stats for every folder in the mailbox. Backed by Get-MailboxFolderStatistics. Mailbox.Stats.Read Community
GET /exchange/v1.0/mailboxes/{key}/folders Get-MailboxFolder - folder tree (Inbox, Sent Items, custom folders). Mailbox.Read Community
GET /exchange/v1.0/mailboxes/{key}/inboxRules Sub-resource of the mailboxes at GET /mailboxes/{key} - list InboxRule entries (Outlook/OWA Rules). Mailbox.Read Community
POST /exchange/v1.0/mailboxes/{key}/inboxRules POST /mailboxes/{key}/inboxRules - creates a per-mailbox rule via New-InboxRule. Cmdlet returns the rule with an auto-assigned numeric Identity; the Location header points at the created rule. Mailbox.ReadWrite Pro
GET /exchange/v1.0/mailboxes/{key}/inboxRules/{ruleId} Sub-resource of the mailboxes at GET /mailboxes/{key} - single InboxRule by composite ruleId. Mailbox.Read Community
PATCH /exchange/v1.0/mailboxes/{key}/inboxRules/{ruleId} PATCH /mailboxes/{key}/inboxRules/{ruleId} - partial update via Set-InboxRule. Enable/disable toggle goes through the bound actions below, not PATCH. Mailbox.ReadWrite Pro
DELETE /exchange/v1.0/mailboxes/{key}/inboxRules/{ruleId} Sub-resource of the mailboxes at GET /mailboxes/{key} - remove a single InboxRule by composite ruleId. Mailbox.ReadWrite Pro
POST /exchange/v1.0/mailboxes/{key}/inboxRules/{ruleId}/disable POST /mailboxes/{key}/inboxRules/{ruleId}/disable - bound action via Disable-InboxRule. Mailbox.ReadWrite Pro
POST /exchange/v1.0/mailboxes/{key}/inboxRules/{ruleId}/enable POST /mailboxes/{key}/inboxRules/{ruleId}/enable - bound action via Enable-InboxRule. Mailbox.ReadWrite Pro
GET /exchange/v1.0/mailboxes/{key}/irmAccess Get-MailboxIRMAccess - delegates blocked from reading IRM-protected messages. MailboxPermission.Read Community
PUT /exchange/v1.0/mailboxes/{key}/irmAccess/{user} PUT /mailboxes/{key}/irmAccess/{user} - set a specific user’s IRM access level on this mailbox via Set-MailboxIRMAccess. Body { “accessLevel”: “Block” | “Allow” }. Returns 204. Mailbox.ReadWrite Pro
DELETE /exchange/v1.0/mailboxes/{key}/irmAccess/{user} DELETE /mailboxes/{key}/irmAccess/{user} - clear a user’s per-mailbox IRM access override via Remove-MailboxIRMAccess (-Identity {key} -User {user}). Returns 204. Audit 2026-05-29 parity wiring (reuses Mailbox.ReadWrite.All; Get/Set already shipped). Mailbox.ReadWrite Pro
GET /exchange/v1.0/mailboxes/{key}/junkEmailConfiguration Get-MailboxJunkEmailConfiguration - safe / blocked sender lists. Mailbox.Read Community
PATCH /exchange/v1.0/mailboxes/{key}/junkEmailConfiguration PATCH /mailboxes/{key}/junkEmailConfiguration → Set-MailboxJunkEmailConfiguration. Mailbox.ReadWrite Pro
GET /exchange/v1.0/mailboxes/{key}/location Get-MailboxLocation - geo / database location of the mailbox (multi-geo tenants). Mailbox.Read Community
GET /exchange/v1.0/mailboxes/{key}/messageConfiguration Get-MailboxMessageConfiguration - OWA reading-pane, signature, sort order… Mailbox.Read Community
PATCH /exchange/v1.0/mailboxes/{key}/messageConfiguration PATCH /mailboxes/{key}/messageConfiguration → Set-MailboxMessageConfiguration. Mailbox.ReadWrite Pro
GET /exchange/v1.0/mailboxes/{key}/permissions Sub-resource of the mailboxes at GET /mailboxes/{key} - list mailbox ACEs (FullAccess + folder ACLs). Backed by Get-MailboxPermission. MailboxPermission.Read Community
POST /exchange/v1.0/mailboxes/{key}/permissions POST /mailboxes/{key}/permissions - adds a mailbox ACE via Add-MailboxPermission (AccessRights parameter set). Audit 2026-05-22 H: entity-style URL (not /$ref), so per Architecture §2 Q3 returns 201 Created + Location pointing at the composite ID, not 204 like the link-style writes do. MailboxPermission.ReadWrite Pro
POST /exchange/v1.0/mailboxes/{key}/permissions/clearAutoMapping POST /mailboxes/{key}/permissions/clearAutoMapping - clears Outlook auto-mapping for the mailbox at GET /mailboxes/{key} (Remove-MailboxPermission -ClearAutoMapping). This is a MAILBOX-level operation (its parameter set takes only -Identity + the switch, no -User/-AccessRights), so it gets its own route rather than the composite-ID DELETE /permissions/{permissionId}. Returns 204. MailboxPermission.ReadWrite Pro
POST /exchange/v1.0/mailboxes/{key}/permissions/resetDefault POST /mailboxes/{key}/permissions/resetDefault - resets the mailbox’s “Default” permission entry to its out-of-box value for the mailbox at GET /mailboxes/{key} (Remove-MailboxPermission -ResetDefault). Mailbox-level (no -User/-AccessRights), so a dedicated route. Returns 204. MailboxPermission.ReadWrite Pro
DELETE /exchange/v1.0/mailboxes/{key}/permissions/{permissionId} DELETE /mailboxes/{key}/permissions/{permissionId} - removes a mailbox ACE by its composite ID (the same ID surfaced by GET /mailboxes/{key}/permissions: “{Identity}|{User}|{AccessRights}” e.g. [email protected]|[email protected]|FullAccess). The URL’s {key} is authoritative for the mailbox identity; the Identity prefix in the composite ID is ignored. Remaining cmdlet switches (Deny, GroupMailbox, IgnoreDefaultScope, BypassMasterAccountSid, SoftDeletedMailbox, InheritanceType) are query params. -ClearAutoMapping / -ResetDefault are slice 1b own-action endpoints. MailboxPermission.ReadWrite Pro
GET /exchange/v1.0/mailboxes/{key}/recipientPermissions Sub-resource of the mailboxes at GET /mailboxes/{key} - list SendAs permissions. Backed by Get-RecipientPermission. Distinct ACL family from /permissions. MailboxPermission.Read Community
POST /exchange/v1.0/mailboxes/{key}/recipientPermissions POST /mailboxes/{key}/recipientPermissions - grants SendAs via Add-RecipientPermission. The cmdlet’s only valid AccessRights value is SendAs, hard-coded here per MS Learn docs. Audit 2026-05-22 H: entity-style URL returns 201 + Location. Recipient.ReadWrite Pro
DELETE /exchange/v1.0/mailboxes/{key}/recipientPermissions/{permissionId} DELETE /mailboxes/{key}/recipientPermissions/{permissionId} - revokes SendAs by composite ID (same shape as GET /mailboxes/{key}/recipientPermissions: “{Identity}|{Trustee}|{AccessRights}”). AccessRights is always SendAs per MS docs; we extract Trustee from the composite ID. Recipient.ReadWrite Pro
GET /exchange/v1.0/mailboxes/{key}/regionalConfiguration Get-MailboxRegionalConfiguration - timezone, language, date/time formats. Mailbox.Read Community
PATCH /exchange/v1.0/mailboxes/{key}/regionalConfiguration PATCH /mailboxes/{key}/regionalConfiguration → Set-MailboxRegionalConfiguration. Mailbox.ReadWrite Pro
POST /exchange/v1.0/mailboxes/{key}/restore POST /mailboxes/{key}/restore - recover a soft-deleted mailbox (within the 30-day window) via Undo-SoftDeletedMailbox. {key} is the soft-deleted mailbox identity (GUID / SMTP) - list candidates with GET /mailboxes?softDeletedMailbox=true. Optional body { “displayName”: “…”, “name”: “…” } renames on recovery. 204 on success; ?dryRun=true previews (-WhatIf). Mailbox.ReadWrite Pro
GET /exchange/v1.0/mailboxes/{key}/spellingConfiguration Get-MailboxSpellingConfiguration - OWA spelling preferences. Mailbox.Read Community
PATCH /exchange/v1.0/mailboxes/{key}/spellingConfiguration PATCH /mailboxes/{key}/spellingConfiguration → Set-MailboxSpellingConfiguration. Mailbox.ReadWrite Pro
POST /exchange/v1.0/mailboxes/{key}/startManagedFolderAssistant POST /mailboxes/{key}/startManagedFolderAssistant - manually trigger the Managed Folder Assistant (MRM / retention-tag processing) for this mailbox via Start-ManagedFolderAssistant. 204 on success; ?dryRun=true previews (-WhatIf) without running. Mailbox.ReadWrite Pro
GET /exchange/v1.0/mailboxes/{key}/statistics GET /mailboxes/{key}/statistics - mailbox-level size and item counts. Backed by Get-MailboxStatistics. Declared in EDM as the bound function ExchangeApi.getStatistics(); this Graph-style path is the friendlier surface for SPA clients. Mailbox.Stats.Read Community
GET /exchange/v1.0/mailboxes/{key}/sweepRules Sub-resource of the mailboxes at GET /mailboxes/{key} - list SweepRule entries (OWA Sweep). Mailbox.Read Community
POST /exchange/v1.0/mailboxes/{key}/sweepRules POST /mailboxes/{key}/sweepRules - creates a per-mailbox sweep rule via New-SweepRule. provider is required (OWA uses Exchange16). Mailbox.ReadWrite Pro
GET /exchange/v1.0/mailboxes/{key}/sweepRules/{ruleId} Sub-resource of the mailboxes at GET /mailboxes/{key} - single SweepRule by composite ruleId. Mailbox.Read Community
PATCH /exchange/v1.0/mailboxes/{key}/sweepRules/{ruleId} Sub-resource of the mailboxes at GET /mailboxes/{key} - partial update of a SweepRule. Mailbox.ReadWrite Pro
DELETE /exchange/v1.0/mailboxes/{key}/sweepRules/{ruleId} Sub-resource of the mailboxes at GET /mailboxes/{key} - remove a single SweepRule by composite ruleId. Mailbox.ReadWrite Pro
GET /exchange/v1.0/mailboxes/{key}/user Sub-resource of the mailboxes at GET /mailboxes/{key} - the Exchange User attached to this mailbox. User.Read Community

List mailboxes entries.

Backing cmdlet: Get-Mailbox. Role: Mailbox.Read (Community).

Parameter In Type Required Description
softDeletedMailbox query bool (switch) Return ONLY soft-deleted (still-recoverable) mailboxes instead of live ones. EXO-only, maps Get-Mailbox -SoftDeletedMailbox. These are the candidates for POST /mailboxes/{key}/restore (Undo-SoftDeletedMailbox). Note: soft-deleted user mailboxes appear with GUID-style Names; restore by the original UPN/SMTP.
includeInactiveMailbox query bool (switch) Also include inactive mailboxes (mailboxes placed on Litigation/In-Place Hold before soft-deletion, whose contents are preserved) alongside live mailboxes. EXO-only, maps Get-Mailbox -IncludeInactiveMailbox.
all query bool (switch) Return all results instead of the EXO default of 1000. Maps -ResultSize Unlimited on Get-Mailbox; prevents silent truncation in large tenants.
inactiveMailboxOnly query bool (switch) Return ONLY inactive mailboxes (placed on Litigation/In-Place Hold before soft-deletion) instead of live ones. EXO-only, maps Get-Mailbox -InactiveMailboxOnly. To include both active and inactive use ?includeInactiveMailbox=true instead.
anr query string Ambiguous Name Resolution: partial-string search over CommonName/DisplayName/FirstName/LastName/Alias. Maps -Anr on Get-Mailbox.
archive query bool (switch) Return only mailboxes that have an archive enabled. Maps -Archive on Get-Mailbox.
recipientTypeDetails query string Filter by mailbox subtype (comma-separated): UserMailbox, SharedMailbox, RoomMailbox, EquipmentMailbox, DiscoveryMailbox, GroupMailbox, … Maps -RecipientTypeDetails on Get-Mailbox.
groupMailbox query bool (switch) Return only Microsoft 365 Group mailboxes. Maps -GroupMailbox on Get-Mailbox.
migration query bool (switch) Return only migration mailboxes used by mailbox-move jobs. Maps -Migration on Get-Mailbox.
publicFolder query bool (switch) Return only public folder mailboxes. Maps -PublicFolder on Get-Mailbox.
mailboxPlan query string Filter by the mailbox plan that provisioned the mailbox. Maps -MailboxPlan on Get-Mailbox.

Returns mailboxes in the tenant. Use $top to cap row count, $select to project only the fields you need (the full Mailbox shape is ~250 props - heavy if you didn’t ask for it). Server enforces PageSize=100; the @odata.nextLink in the response paginates further if there are more rows.

GET /exchange/v1.0/mailboxes?$top=2&$select=Id,UserPrincipalName,DisplayName,Alias,PrimarySmtpAddress,RecipientTypeDetails,WhenCreated HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"@odata.context": "http://localhost:5043/exchange/v1.0/$metadata#mailboxes(Id,UserPrincipalName,DisplayName,Alias,PrimarySmtpAddress,RecipientTypeDetails,WhenCreated)",
"value": [
{
"@odata.type": "#ExchangeApi.SharedMailbox",
"Id": "_TestUser",
"DisplayName": "_TestUser",
"Alias": "testmailbox",
"PrimarySmtpAddress": "[email protected]",
"RecipientTypeDetails": "SharedMailbox",
"WhenCreated": "2026-03-31T17:57:27+03:00",
"UserPrincipalName": "[email protected]"
},
{
"@odata.type": "#ExchangeApi.SharedMailbox",
"Id": "[Forward]",
"DisplayName": "[Forward]",
"Alias": "fwdcontoso",
"PrimarySmtpAddress": "[email protected]",
"RecipientTypeDetails": "SharedMailbox",
"WhenCreated": "2026-03-30T17:53:14+03:00",
"UserPrincipalName": "[email protected]"
}
]
}

Notes: Server caps PageSize at 100 even if $top is larger. For full enumeration use repeated calls following @odata.nextLink.

Related: GET /exchange/v1.0/mailboxes/{key}, GET /exchange/v1.0/mailboxes/{key}/permissions, GET /exchange/v1.0/mailboxes/{key}/statistics, PATCH /exchange/v1.0/mailboxes/{key}, DELETE /exchange/v1.0/mailboxes/{key}

Returns ONLY soft-deleted (still-recoverable) mailboxes via Get-Mailbox -SoftDeletedMailbox (?softDeletedMailbox=true). These are the candidates for recovery with POST /mailboxes/{key}/restore. OData $top / $select / $filter compose with the switch. Restore by the mailbox’s original Guid / UserPrincipalName / PrimarySmtpAddress (not by the portal’s ‘ExRemoved-’ display address). Companion switch: ?includeInactiveMailbox=true adds on-hold-then-deleted mailboxes to the LIVE set.

GET /exchange/v1.0/mailboxes?softDeletedMailbox=true&$top=5&$select=DisplayName,UserPrincipalName,RecipientTypeDetails,Guid,WhenSoftDeleted HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"@odata.context": "https://api.contoso.com/exchange/v1.0/$metadata#mailboxes(DisplayName,UserPrincipalName,RecipientTypeDetails,Guid,WhenSoftDeleted)",
"value": [
{
"@odata.type": "#ExchangeApi.SharedMailbox",
"Guid": "7b80f57a-a603-4a15-b2ed-40134f806fa4",
"DisplayName": "exonaut-archive-shared",
"UserPrincipalName": "[email protected]",
"RecipientTypeDetails": "SharedMailbox",
"WhenSoftDeleted": "2026-05-29T21:01:35+03:00"
},
{
"Guid": "38aeb170-52b1-4f0b-a2b7-3981c9b7df1b",
"DisplayName": "exonaut-leaver-user",
"UserPrincipalName": "[email protected]",
"RecipientTypeDetails": "UserMailbox",
"WhenSoftDeleted": "2026-05-29T20:42:10+03:00"
}
]
}

Notes: Live-captured 2026-05-29 and sanitized (domain -> contoso.com). Verified the switch genuinely filters: live mailboxes returned 48, ?softDeletedMailbox=true returned 39 (a distinct set). Both a SharedMailbox and a UserMailbox were restored end-to-end via POST /mailboxes/{guid|upn}/restore (204) - shared mailboxes ARE Undo-SoftDeletedMailbox-recoverable.

Related: POST /exchange/v1.0/mailboxes/{key}/restore, GET /exchange/v1.0/recipients

POST /mailboxes - provisions a new mailbox via New-Mailbox. Body shape depends on the mailbox type: Regular: { “name”, “userPrincipalName”, “password” }Resource: add “room”: true | “equipment”: true | “shared”: true | “discovery”: true (password not required for Room/Equipment/Shared). Returns 201 + Location header + the newly-created mailbox.

Backing cmdlet: New-Mailbox. Role: Mailbox.ReadWrite (Pro).

Parameter In Type Required Description
name body yes
activeSyncMailboxPolicy body
addressBookPolicy body
alias body
archive body boolean (switch)
discovery body boolean (switch)
displayName body
enableRoomMailboxAccount body
equipment body boolean (switch)
firstName body
immutableId body
initials body
lastName body
mailboxPlan body
mailboxRegion body
microsoftOnlineServicesID body
moderatedBy body
moderationEnabled body
organizationalUnit body
password body
primarySmtpAddress body
remotePowerShellEnabled body
resetPasswordOnNextLogon body
retentionPolicy body
roleAssignmentPolicy body
room body boolean (switch)
roomMailboxPassword body
samAccountName body
sendModerationNotifications body
shared body boolean (switch)
sharingPolicy body
throttlingPolicy body
userPrincipalName body
dryRun query bool (switch)

Create a mailbox without the required name

Section titled “Create a mailbox without the required name”

New-Mailbox requires a name. Omitting it returns the canonical 400 BadRequest envelope.

POST /exchange/v1.0/mailboxes HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"userPrincipalName": "[email protected]",
"password": "S@mpleP4ssw0rd!"
}
HTTP/1.1 400 Bad Request
{
"error": {
"code": "BadRequest",
"message": "The required field 'name' is missing.",
"target": "name"
},
"correlationId": "0HN7Q4ABCDEF0:00000001"
}

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes

Provisions a new user mailbox via New-Mailbox. Name is required; userPrincipalName + password select the regular User parameter set.

POST /exchange/v1.0/mailboxes HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"name": "exonaut-sample-mailboxes",
"displayName": "Exonaut Sample Mailbox",
"userPrincipalName": "[email protected]",
"alias": "exonaut-sample-mailboxes",
"primarySmtpAddress": "[email protected]",
"password": "S@mpleP4ssw0rd!"
}
HTTP/1.1 201 Created
Location: /exchange/v1.0/mailboxes/exonaut-sample-mailboxes
{
"Id": "exonaut-sample-mailboxes",
"Identity": "exonaut-sample-mailboxes",
"Name": "exonaut-sample-mailboxes",
"DisplayName": "Exonaut Sample Mailbox",
"UserPrincipalName": "[email protected]",
"PrimarySmtpAddress": "[email protected]",
"RecipientTypeDetails": "UserMailbox"
}

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes

Get a single mailboxes entry by Identity.

Backing cmdlet: Get-Mailbox. Role: Mailbox.Read (Community).

Parameter In Type Required Description
softDeletedMailbox query bool (switch) Look up a soft-deleted (still-recoverable) mailbox by its identity instead of a live one. EXO-only, maps Get-Mailbox -SoftDeletedMailbox.

Returns one mailbox by Identity - UPN, alias, primary SMTP, Id, or ExchangeGuid all work as keys. URL-encode the value if it contains @ or other special characters.

GET /exchange/v1.0/mailboxes/{key}?$select=Id,UserPrincipalName,DisplayName,Alias,PrimarySmtpAddress,RecipientTypeDetails,WhenCreated,ArchiveStatus,LitigationHoldEnabled,HiddenFromAddressListsEnabled HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"@odata.context": "http://localhost:5043/exchange/v1.0/$metadata#mailboxes(Id,UserPrincipalName,DisplayName,Alias,PrimarySmtpAddress,RecipientTypeDetails,WhenCreated,ArchiveStatus,LitigationHoldEnabled,HiddenFromAddressListsEnabled)/$entity",
"Id": "a003556f-d8a0-4b72-b8fb-24813d53195a",
"DisplayName": "John Woods",
"Alias": "john.woods",
"PrimarySmtpAddress": "[email protected]",
"RecipientTypeDetails": "UserMailbox",
"HiddenFromAddressListsEnabled": false,
"WhenCreated": "2026-03-30T17:05:44+03:00",
"UserPrincipalName": "[email protected]",
"ArchiveStatus": "None",
"LitigationHoldEnabled": false
}

Related: GET /exchange/v1.0/mailboxes, GET /exchange/v1.0/mailboxes/{key}/permissions, GET /exchange/v1.0/mailboxes/{key}/statistics, PATCH /exchange/v1.0/mailboxes/{key}

When the URL key resolves to no mailbox (typo, deleted user, wrong tenant), returns 404 with the canonical envelope. correlationId in the response links to the server log if you need to debug.

GET /exchange/v1.0/mailboxes/{key} HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 404 Not Found
{
"error": {
"code": "NotFound",
"message": "Exchange object 'nope-not-a-mailbox' could not be found.",
"target": "identity",
"innerError": {
"cmdlet": "Get-Mailbox"
}
},
"correlationId": "0HNLOH7JVNS5S:00000001"
}

Related: GET /exchange/v1.0/mailboxes

PATCH /mailboxes/{key} - partial mailbox configuration update via Set-Mailbox. Body keys subset of . High-frequency L1/L2 use cases (forwarding, quotas, custom attributes, holds, archive, audit, address policies) all bind through this single endpoint. Returns 200 + the updated entity.

Backing cmdlet: Set-Mailbox. Role: Mailbox.ReadWrite (Pro).

Parameter In Type Required Description
acceptMessagesOnlyFrom body
acceptMessagesOnlyFromDLMembers body
acceptMessagesOnlyFromSendersOrMembers body
accountDisabled body
addressBookPolicy body
alias body
applyMandatoryProperties body boolean (switch)
archiveDomain body
archiveName body
archiveQuota body
archiveStatus body
archiveWarningQuota body
auditAdmin body
auditDelegate body
auditEnabled body
auditLogAgeLimit body
auditOwner body
autoArchivingEnabled body
bypassModerationFromSendersOrMembers body
calendarLoggingQuota body
calendarRepairDisabled body
calendarVersionStoreDisabled body
clearThrottlingPolicyAssignment body boolean (switch)
createDTMFMap body
customAttribute1 body
customAttribute10 body
customAttribute11 body
customAttribute12 body
customAttribute13 body
customAttribute14 body
customAttribute15 body
customAttribute2 body
customAttribute3 body
customAttribute4 body
customAttribute5 body
customAttribute6 body
customAttribute7 body
customAttribute8 body
customAttribute9 body
dataEncryptionPolicy body
defaultAuditSet body
defaultPublicFolderMailbox body
deliverToMailboxAndForward body
displayName body
downgradeHighPriorityMessagesEnabled body
dumpsterMessagesPerFolderCountReceiveQuota body
dumpsterMessagesPerFolderCountWarningQuota body
elcProcessingDisabled body
emailAddressDisplayNames body
emailAddresses body
emailAddressPolicyEnabled body
enableRoomMailboxAccount body
endDateForRetentionHold body
enforcedTimestamps body
excludeFromAllHolds body boolean (switch)
excludeFromAllOrgHolds body boolean (switch)
excludeFromOrgHolds body
extendedPropertiesCountQuota body
extensionCustomAttribute1 body
extensionCustomAttribute2 body
extensionCustomAttribute3 body
extensionCustomAttribute4 body
extensionCustomAttribute5 body
externalOofOptions body
folderHierarchyChildrenCountReceiveQuota body
folderHierarchyChildrenCountWarningQuota body
folderHierarchyDepthReceiveQuota body
folderHierarchyDepthWarningQuota body
foldersCountReceiveQuota body
foldersCountWarningQuota body
forwardingAddress body
forwardingSmtpAddress body
grantSendOnBehalfTo body
hiddenFromAddressListsEnabled body
imListMigrationCompleted body
immutableId body
isExcludedFromServingHierarchy body
issueWarningQuota body
journalArchiveAddress body
languages body
litigationHoldDate body
litigationHoldDuration body
litigationHoldEnabled body
litigationHoldOwner body
mailboxMessagesPerFolderCountReceiveQuota body
mailboxMessagesPerFolderCountWarningQuota body
mailboxRegion body
mailTip body
mailTipTranslations body
maxBlockedSenders body
maxReceiveSize body
maxSafeSenders body
maxSendSize body
messageCopyForSendOnBehalfEnabled body
messageCopyForSentAsEnabled body
messageCopyForSMTPClientSubmissionEnabled body
messageRecallProcessingEnabled body
messageTracking body
messageTrackingReadStatusEnabled body
moderatedBy body
moderationEnabled body
name body
office body
primarySmtpAddress body
prohibitSendQuota body
prohibitSendReceiveQuota body
provideConsent body boolean (switch)
provisionedForOfficeGraph body boolean (switch)
recalculateInactiveMailbox body boolean (switch)
recipientLimits body
recoverableItemsQuota body
recoverableItemsWarningQuota body
rejectMessagesFrom body
rejectMessagesFromDLMembers body
rejectMessagesFromSendersOrMembers body
removeComplianceTagHoldApplied body boolean (switch)
removeDelayHoldApplied body boolean (switch)
removeDelayReleaseHoldApplied body boolean (switch)
removeDisabledArchive body boolean (switch)
removeOrphanedHolds body boolean (switch)
requireSenderAuthenticationEnabled body
resetPasswordOnNextLogon body
resourceCapacity body
resourceCustom body
retainDeletedItemsFor body
retainDeletedItemsUntilBackup body
retentionComment body
retentionHoldEnabled body
retentionPolicy body
retentionUrl body
roleAssignmentPolicy body
rulesQuota body
samAccountName body
schedulerAssistant body
sendModerationNotifications body
sharingPolicy body
simpleDisplayName body
singleItemRecoveryEnabled body
startDateForRetentionHold body
stsRefreshTokensValidFrom body
throttlingPolicy body
type body
umDtmfMap body
uniqueRecipientsCountLimitLevel body
useDatabaseQuotaDefaults body
useDatabaseRetentionDefaults body
userCertificate body
userPrincipalName body
userSMimeCertificate body
windowsEmailAddress body
ignoreDefaultScope query bool (switch)
dryRun query bool (switch)

Partial mailbox update via Set-Mailbox. Body keys are a subset of the Set-Mailbox writable allowlist (forwarding, quotas, holds, etc.). Returns 200 + the updated mailbox.

PATCH /exchange/v1.0/mailboxes/{key} HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"displayName": "Exonaut Sample Mailbox (Renamed)",
"issueWarningQuota": "9.5 GB (10,200,547,328 bytes)",
"litigationHoldEnabled": true
}
HTTP/1.1 200 OK
{
"Id": "exonaut-sample-mailboxes",
"Identity": "exonaut-sample-mailboxes",
"DisplayName": "Exonaut Sample Mailbox (Renamed)",
"IssueWarningQuota": "9.5 GB (10,200,547,328 bytes)",
"LitigationHoldEnabled": true
}

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes

DELETE /mailboxes/{key} - removes a mailbox via Remove-Mailbox. Destructive: by default mailboxes go through soft-delete (recoverable for ~30 days). Pass ?permanentlyDelete=true to purge immediately; ?ignoreLegalHold=true to override hold protection; ?dryRun=true for -WhatIf.

Backing cmdlet: Remove-Mailbox. Role: Mailbox.ReadWrite (Pro).

Parameter In Type Required Description
permanentlyDelete query bool (switch)
ignoreLegalHold query bool (switch)
ignoreDefaultScope query bool (switch)
migration query bool (switch)
publicFolder query bool (switch)
dryRun query bool (switch)

Removes a mailbox via Remove-Mailbox. Soft-deletes by default (recoverable ~30 days); ?permanentlyDelete=true purges immediately. Returns 204.

DELETE /exchange/v1.0/mailboxes/{key} HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
HTTP/1.1 204 No Content

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes

GET /exchange/v1.0/mailboxes/{key}/autoReplyConfiguration

Section titled “GET /exchange/v1.0/mailboxes/{key}/autoReplyConfiguration”

Get-MailboxAutoReplyConfiguration - out-of-office / vacation responder.

Backing cmdlet: Get-MailboxAutoReplyConfiguration. Role: Mailbox.Read (Community).

Get a mailbox’s automatic reply configuration

Section titled “Get a mailbox’s automatic reply configuration”

Sub-resource of the mailbox at GET /mailboxes/{key} - returns the out-of-office (vacation responder) settings, including the auto-reply state, scheduled window, and internal/external messages.

GET /exchange/v1.0/mailboxes/{key}/autoReplyConfiguration HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"autoReplyState": "Disabled",
"state": null,
"startTime": "2026-05-29T18:00:00+03:00",
"endTime": "2026-05-30T18:00:00+03:00",
"internalMessage": "",
"externalMessage": "",
"externalAudience": "All",
"createOOFEvent": false,
"autoDeclineFutureRequestsWhenOOF": false,
"declineAllEventsForScheduledOOF": false,
"declineEventsForScheduledOOF": false,
"declineMeetingMessage": "",
"oofEventSubject": "",
"eventsToDeleteIDs": null
}

Related: GET /exchange/v1.0/mailboxes/{key}, PATCH /exchange/v1.0/mailboxes/{key}/autoReplyConfiguration

PATCH /exchange/v1.0/mailboxes/{key}/autoReplyConfiguration

Section titled “PATCH /exchange/v1.0/mailboxes/{key}/autoReplyConfiguration”

PATCH /mailboxes/{key}/autoReplyConfiguration → Set-MailboxAutoReplyConfiguration.

Backing cmdlet: Set-MailboxAutoReplyConfiguration. Role: Mailbox.ReadWrite (Pro).

Parameter In Type Required Description
autoDeclineFutureRequestsWhenOOF body
autoReplyState body
createOOFEvent body
declineAllEventsForScheduledOOF body
declineEventsForScheduledOOF body
declineMeetingMessage body
endTime body
eventsToDeleteIDs body
externalAudience body
externalMessage body
internalMessage body
oofEventSubject body
startTime body
dryRun query bool (switch)

Sub-resource of the mailbox at GET /mailboxes/{key}/autoReplyConfiguration - partial update via Set-MailboxAutoReplyConfiguration. Returns 200 + the updated configuration.

PATCH /exchange/v1.0/mailboxes/{key}/autoReplyConfiguration HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"autoReplyState": "Enabled",
"externalAudience": "All",
"internalMessage": "Out of office until next week. Contact [email protected].",
"externalMessage": "Out of office. Please contact [email protected]."
}
HTTP/1.1 200 OK
{
"Identity": "exonaut-sample-mailboxes",
"AutoReplyState": "Enabled",
"ExternalAudience": "All",
"InternalMessage": "Out of office until next week. Contact [email protected].",
"ExternalMessage": "Out of office. Please contact [email protected]."
}

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes/{key}/autoReplyConfiguration, GET /exchange/v1.0/mailboxes

GET /exchange/v1.0/mailboxes/{key}/calendarConfiguration

Section titled “GET /exchange/v1.0/mailboxes/{key}/calendarConfiguration”

Get-MailboxCalendarConfiguration - calendar display + workdays + reminders.

Backing cmdlet: Get-MailboxCalendarConfiguration. Role: Mailbox.Read (Community).

Sub-resource of the mailbox at GET /mailboxes/{key} - returns the calendar display preferences, working hours, reminder settings, and events-from-email options for a single mailbox.

GET /exchange/v1.0/mailboxes/{key}/calendarConfiguration HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"identity": "shared-projects",
"principal": "LegacyDn: /o=ExchangeLabs/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=b95cae9b8f1d4b0eae92f8afad103fc9-shared-projects, RecipientType: UserMailbox, RecipientTypeDetails: SharedMailbox, Selected Mailbox: Display Name: shared-projects, Mailbox Guid: 7c1f2e3a-44d5-4f06-9b21-0a8e5c6d7e91, Mailbox Database Guid: 9b2bf06b-6c7c-4221-adb7-eecf47f237f3, Location: ServerFqdn: AM6PR02MB4360.eurprd02.prod.outlook.com, ServerVersion: 1943371847, DatabaseName: EURPR02DG084-db095, HomePublicFolderDatabaseGuid: 00000000-0000-0000-0000-000000000000",
"workDays": "Weekdays",
"workingHoursStartTime": "08:00:00",
"workingHoursEndTime": "17:00:00",
"workingHoursTimeZone": "GTB Standard Time",
"weekStartDay": "Sunday",
"firstWeekOfYear": "FirstDay",
"inferredTimeZone": null,
"showWeekNumbers": false,
"timeIncrement": null,
"remindersEnabled": true,
"reminderSoundEnabled": true,
"defaultReminderTime": null,
"useBrightCalendarColorThemeInOwa": false,
"defaultMeetingDuration": 30,
"defaultMinutesToReduceLongEventsBy": 10,
"defaultMinutesToReduceShortEventsBy": 5,
"autoDeclineWhenBusy": false,
"deleteMeetingRequestOnRespond": true,
"preserveDeclinedMeetings": false,
"shortenEventScopeDefault": "None",
"conversationalSchedulingEnabled": true,
"locationDetailsInFreeBusy": "Desk",
"addOnlineMeetingToAllEvents": false,
"onlineMeetingsByDefaultEnabled": false,
"isDefaultMeetingProviderSetByUser": false,
"defaultOnlineMeetingProvider": "TeamsForBusiness",
"allowedOnlineMeetingProviders": "TeamsForBusiness BlueJeans GoToMeeting Webex Zoom GoogleMeet JioMeet RingCentral AmazonChimePublic AmazonChimePrivate AlibabaDingTalk FacebookWorkplace AppleFacetime ClaroVideoconferencia ZoomCustom",
"agendaPaneEnabled": true,
"agendaMailEnabled": false,
"agendaMailIntroductionEnabled": true,
"dailyAgendaMailSchedule": "Default",
"skipAgendaMailOnFreeDays": true,
"eventsFromEmailEnabled": true,
"eventsFromEmailDelegateChecked": false,
"eventsFromEmailShadowMailboxChecked": false,
"createEventsFromEmailAsPrivate": true,
"reportEventsCreatedFromEmailEnabled": true,
"diningEventsFromEmailEnabled": true,
"entertainmentEventsFromEmailEnabled": true,
"flightEventsFromEmailEnabled": true,
"hotelEventsFromEmailEnabled": true,
"invoiceEventsFromEmailEnabled": true,
"packageDeliveryEventsFromEmailEnabled": false,
"packageDeliveryEventsFromEmailSystemDefault": "False",
"rentalCarEventsFromEmailEnabled": true,
"serviceAppointmentEventsFromEmailEnabled": true,
"isCalendarSectionEnabled": true,
"isCalendarFolderPropertiesSectionEnabled": true,
"isMailboxSectionEnabled": true,
"isWorkingHoursSectionEnabled": true,
"localEventsEnabled": false,
"localEventsLocation": null,
"weatherEnabled": false,
"weatherLocationBookmark": "0",
"weatherLocations": null,
"weatherUnit": "Default",
"calendarFeedsPreferredLanguage": null,
"calendarFeedsPreferredRegion": null,
"calendarFeedsRootPageId": null,
"workspaceUserEnabled": false,
"schema": "Microsoft.Exchange.Data.Storage.Management.MailboxCalendarConfigurationSchema"
}

Related: GET /exchange/v1.0/mailboxes/{key}, PATCH /exchange/v1.0/mailboxes/{key}/calendarConfiguration

PATCH /exchange/v1.0/mailboxes/{key}/calendarConfiguration

Section titled “PATCH /exchange/v1.0/mailboxes/{key}/calendarConfiguration”

PATCH /mailboxes/{key}/calendarConfiguration → Set-MailboxCalendarConfiguration.

Backing cmdlet: Set-MailboxCalendarConfiguration. Role: Mailbox.ReadWrite (Pro).

Parameter In Type Required Description
agendaMailEnabled body
agendaMailIntroductionEnabled body
agendaPaneEnabled body
autoDeclineWhenBusy body
calendarFeedsPreferredLanguage body
calendarFeedsPreferredRegion body
calendarFeedsRootPageId body
conversationalSchedulingEnabled body
createEventsFromEmailAsPrivate body
dailyAgendaMailSchedule body
defaultMeetingDuration body
defaultMinutesToReduceLongEventsBy body
defaultMinutesToReduceShortEventsBy body
defaultOnlineMeetingProvider body
defaultReminderTime body
deleteMeetingRequestOnRespond body
diningEventsFromEmailEnabled body
entertainmentEventsFromEmailEnabled body
eventsFromEmailEnabled body
firstWeekOfYear body
flightEventsFromEmailEnabled body
hotelEventsFromEmailEnabled body
invoiceEventsFromEmailEnabled body
locationDetailsInFreeBusy body
mailboxLocation body
onlineMeetingsByDefaultEnabled body
packageDeliveryEventsFromEmailEnabled body
preserveDeclinedMeetings body
remindersEnabled body
reminderSoundEnabled body
rentalCarEventsFromEmailEnabled body
serviceAppointmentEventsFromEmailEnabled body
shortenEventScopeDefault body
showWeekNumbers body
skipAgendaMailOnFreeDays body
timeIncrement body
useBrightCalendarColorThemeInOwa body
weatherEnabled body
weatherLocationBookmark body
weatherLocations body
weatherUnit body
weekStartDay body
workDays body
workingHoursEndTime body
workingHoursStartTime body
workingHoursTimeZone body
workspaceUserEnabled body
dryRun query bool (switch)

Sub-resource of the mailbox at GET /mailboxes/{key}/calendarConfiguration - partial update via Set-MailboxCalendarConfiguration. Returns 200 + the updated configuration.

PATCH /exchange/v1.0/mailboxes/{key}/calendarConfiguration HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"workDays": "Weekdays",
"workingHoursStartTime": "08:00:00",
"workingHoursEndTime": "17:00:00",
"weekStartDay": "Monday"
}
HTTP/1.1 200 OK
{
"Identity": "exonaut-sample-mailboxes",
"WorkDays": "Weekdays",
"WorkingHoursStartTime": "08:00:00",
"WorkingHoursEndTime": "17:00:00",
"WeekStartDay": "Monday"
}

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes/{key}/calendarConfiguration, GET /exchange/v1.0/mailboxes

GET /exchange/v1.0/mailboxes/{key}/calendarFolders

Section titled “GET /exchange/v1.0/mailboxes/{key}/calendarFolders”

Get-MailboxCalendarFolder - calendar folder publish/sharing settings. Defaults to the primary Calendar folder.

Backing cmdlet: Get-MailboxCalendarFolder. Role: Mailbox.Read (Community).

Parameter In Type Required Description
folder query string

Get a mailbox calendar folder’s publish and sharing settings

Section titled “Get a mailbox calendar folder’s publish and sharing settings”

Sub-resource of the mailbox at GET /mailboxes/{key} - returns the calendar publishing and sharing configuration for a mailbox’s calendar folder. Defaults to the primary Calendar folder; pass ?folder= to target another calendar folder.

GET /exchange/v1.0/mailboxes/{key}/calendarFolders HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"identity": "john.woods:\\Calendar",
"mailboxFolderId": "john.woods:\\Calendar",
"publishEnabled": false,
"publishedCalendarUrl": null,
"publishedCalendarUrlRaw": null,
"publishedICalUrl": null,
"publishedICalUrlRaw": null,
"searchableUrlEnabled": false,
"detailLevel": "AvailabilityOnly",
"publishDateRangeFrom": "ThreeMonths",
"publishDateRangeTo": "ThreeMonths",
"defaultOnlineMeetingProvider": "TeamsForBusiness",
"allowedOnlineMeetingProviders": "TeamsForBusiness BlueJeans GoToMeeting Webex Zoom GoogleMeet JioMeet RingCentral AmazonChimePublic AmazonChimePrivate AlibabaDingTalk FacebookWorkplace AppleFacetime ClaroVideoconferencia ZoomCustom",
"calendarSharingPermissionLevel": "Null",
"calendarSharingOwnerSmtpAddress": "",
"calendarSharingFolderFlags": "None",
"sharingLevelOfDetails": "None",
"sharingPermissionFlags": "None",
"sharingOwnerRemoteFolderId": "AAA=",
"creationTime": "2026-03-16T15:47:55",
"lastAttemptedSyncTime": "0001-01-02T00:00:00",
"lastSuccessfulSyncTime": "0001-01-02T00:00:00",
"sharedCalendarSyncStartDate": "0001-01-02T00:00:00",
"syncState": null,
"syncStatesTelemetry": null,
"delegateInformation": "Delegate Information was not calculated.",
"inconsistentDelegateEvents": null,
"extendedFolderFlags": null,
"extendedFolderFlags2": null
}

Related: GET /exchange/v1.0/mailboxes/{key}, GET /exchange/v1.0/mailboxes/{key}/calendarConfiguration, GET /exchange/v1.0/mailboxes/{key}/calendarProcessing

GET /exchange/v1.0/mailboxes/{key}/calendarProcessing

Section titled “GET /exchange/v1.0/mailboxes/{key}/calendarProcessing”

Get-CalendarProcessing - room/equipment booking + delegate behavior.

Backing cmdlet: Get-CalendarProcessing. Role: Mailbox.Read (Community).

Get a mailbox’s calendar processing settings

Section titled “Get a mailbox’s calendar processing settings”

Sub-resource of the mailbox at GET /mailboxes/{key} - returns the room/equipment booking policy and delegate behavior for the mailbox, including auto-acceptance, booking window, and conflict rules.

GET /exchange/v1.0/mailboxes/{key}/calendarProcessing HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"@odata.context": "http://localhost:5043/exchange/v1.0/$metadata#mailboxes('ConfRoom-Aurora')/CalendarProcessing",
"AutomateProcessing": "AutoUpdate",
"BookingType": "Standard",
"AllowConflicts": false,
"AllowRecurringMeetings": true,
"AddNewRequestsTentatively": true,
"ProcessExternalMeetingMessages": false,
"RemoveOldMeetingMessages": true,
"RemoveForwardedMeetingNotifications": false,
"RemoveCanceledMeetings": false,
"RemovePrivateProperty": true,
"ForwardRequestsToDelegates": true,
"DeleteAttachments": true,
"DeleteComments": true,
"DeleteNonCalendarItems": true,
"DeleteSubject": true,
"AddOrganizerToSubject": true,
"TentativePendingApproval": true,
"EnableResponseDetails": true,
"OrganizerInfo": true,
"BookingWindowInDays": 180,
"MaximumDurationInMinutes": 1440,
"MinimumDurationInMinutes": 0,
"MaximumConflictInstances": 0,
"ConflictPercentageAllowed": 0,
"PostReservationMaxClaimTimeInMinutes": 10,
"EnforceCapacity": false,
"EnforceSchedulingHorizon": true,
"EnableAutoRelease": false,
"ScheduleOnlyDuringWorkHours": false,
"AllRequestOutOfPolicy": false,
"AllRequestInPolicy": false,
"AllBookInPolicy": true,
"BookInPolicy": [],
"RequestInPolicy": [],
"RequestOutOfPolicy": [],
"ResourceDelegates": [],
"AddAdditionalResponse": false,
"AdditionalResponse": null
}

Related: GET /exchange/v1.0/mailboxes/{key}

PATCH /exchange/v1.0/mailboxes/{key}/calendarProcessing

Section titled “PATCH /exchange/v1.0/mailboxes/{key}/calendarProcessing”

PATCH /mailboxes/{key}/calendarProcessing → Set-CalendarProcessing.

Backing cmdlet: Set-CalendarProcessing. Role: Mailbox.ReadWrite (Pro).

Parameter In Type Required Description
addAdditionalResponse body
additionalResponse body
addNewRequestsTentatively body
addOrganizerToSubject body
allBookInPolicy body
allowConflicts body
allowRecurringMeetings body
allRequestInPolicy body
allRequestOutOfPolicy body
automateProcessing body
bookingType body
bookingWindowInDays body
bookInPolicy body
conflictPercentageAllowed body
deleteAttachments body
deleteComments body
deleteNonCalendarItems body
deleteSubject body
enableAutoRelease body
enableResponseDetails body
enforceCapacity body
enforceSchedulingHorizon body
forwardRequestsToDelegates body
maximumConflictInstances body
maximumDurationInMinutes body
minimumDurationInMinutes body
organizerInfo body
postReservationMaxClaimTimeInMinutes body
processExternalMeetingMessages body
removeCanceledMeetings body
removeForwardedMeetingNotifications body
removeOldMeetingMessages body
removePrivateProperty body
requestInPolicy body
requestOutOfPolicy body
resourceDelegates body
scheduleOnlyDuringWorkHours body
tentativePendingApproval body
dryRun query bool (switch)

Sub-resource of the mailbox at GET /mailboxes/{key}/calendarProcessing - partial update via Set-CalendarProcessing. Returns 200 + the updated configuration.

PATCH /exchange/v1.0/mailboxes/{key}/calendarProcessing HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"automateProcessing": "AutoAccept",
"allowConflicts": false,
"bookingWindowInDays": 180,
"maximumDurationInMinutes": 480
}
HTTP/1.1 200 OK
{
"Identity": "exonaut-sample-mailboxes",
"AutomateProcessing": "AutoAccept",
"AllowConflicts": false,
"BookingWindowInDays": 180,
"MaximumDurationInMinutes": 480
}

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes/{key}/calendarProcessing, GET /exchange/v1.0/mailboxes

GET /exchange/v1.0/mailboxes/{key}/casMailbox

Section titled “GET /exchange/v1.0/mailboxes/{key}/casMailbox”

Sub-resource of the mailboxes at GET /mailboxes/{key} - Client Access (POP/IMAP/MAPI/OWA) configuration. Backed by Get-CASMailbox.

Backing cmdlet: Get-CASMailbox. Role: Mailbox.Read (Community).

Get a mailbox’s client access (CAS) configuration

Section titled “Get a mailbox’s client access (CAS) configuration”

Sub-resource of the mailbox at GET /mailboxes/{key} - returns the Client Access settings (POP, IMAP, MAPI, OWA, ActiveSync, EWS) for a single mailbox. Backed by Get-CASMailbox.

GET /exchange/v1.0/mailboxes/{key}/casMailbox HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"@odata.context": "http://localhost:5043/exchange/v1.0/$metadata#ExchangeApi.CASMailbox",
"Id": "john.woods",
"Name": "john.woods",
"DisplayName": "John Woods",
"Identity": "john.woods",
"DistinguishedName": "CN=john.woods,OU=contoso.onmicrosoft.com,OU=Microsoft Exchange Hosted Organizations,DC=EURPR01A017,DC=PROD,DC=OUTLOOK,DC=COM",
"SamAccountName": "$B6VJH0-DDO3526KIOHC",
"Guid": "c80fb3b2-8bd1-4d1f-bab5-e06d74c3377a",
"ExchangeObjectId": "79b9957f-760f-4c95-a732-917c14b4a9fd",
"PrimarySmtpAddress": "[email protected]",
"EmailAddresses": [
],
"HasActiveSyncDevicePartnership": false,
"ActiveSyncEnabled": true,
"ActiveSyncSuppressReadReceipt": false,
"ActiveSyncDebugLogging": "False",
"ActiveSyncMailboxPolicy": "Default",
"ActiveSyncMailboxPolicyIsDefaulted": "True",
"ActiveSyncAllowedDeviceIDs": [],
"ActiveSyncBlockedDeviceIDs": [],
"OWAEnabled": true,
"OWAforDevicesEnabled": true,
"OwaMailboxPolicy": "OwaMailboxPolicy-Default",
"ECPEnabled": true,
"ShowGalAsDefaultView": true,
"IsOptimizedForAccessibility": false,
"MAPIEnabled": true,
"MapiHttpEnabled": false,
"MAPIBlockOutlookNonCachedMode": false,
"MAPIBlockOutlookExternalConnectivity": false,
"MAPIBlockOutlookRpcHttp": false,
"MAPIBlockOutlookVersions": [],
"MacOutlookEnabled": true,
"OutlookMobileEnabled": true,
"UniversalOutlookEnabled": true,
"OneWinNativeOutlookEnabled": false,
"EwsEnabled": true,
"EwsAllowEntourage": false,
"EwsAllowMacOutlook": false,
"EwsAllowOutlook": false,
"EwsApplicationAccessPolicy": null,
"EwsAllowList": [],
"EwsBlockList": [],
"ImapEnabled": true,
"ImapEnableExactRFC822Size": false,
"ImapForceICalForCalendarRetrievalOption": false,
"ImapMessagesRetrievalMimeFormat": "BestBodyFormat",
"ImapSuppressReadReceipt": false,
"ImapUseProtocolDefaults": true,
"PopEnabled": true,
"PopEnableExactRFC822Size": false,
"PopForceICalForCalendarRetrievalOption": true,
"PopMessagesRetrievalMimeFormat": "BestBodyFormat",
"PopSuppressReadReceipt": false,
"PopUseProtocolDefaults": true,
"SmtpClientAuthenticationDisabled": null,
"PublicFolderClientAccess": false,
"ExchangeVersion": "0.20 (15.0.0.0)",
"OrganizationId": "EURPR01A017.PROD.OUTLOOK.COM/Microsoft Exchange Hosted Organizations/contoso.onmicrosoft.com - EURPR01A017.PROD.OUTLOOK.COM/ConfigurationUnits/contoso.onmicrosoft.com/Configuration",
"ObjectCategory": "EURPR01A017.PROD.OUTLOOK.COM/Configuration/Schema/Person",
"ObjectClass": [
"top",
"person",
"organizationalPerson",
"user"
],
"OriginatingServer": "VI1PR01A17DC001.EURPR01A017.PROD.OUTLOOK.COM",
"ObjectState": "Changed",
"IsValid": true,
"WhenCreated": "2026-03-31T17:57:27+03:00",
"WhenChanged": "2026-05-22T00:31:32+03:00",
"WhenCreatedUTC": "2026-03-31T14:57:27Z",
"WhenChangedUTC": "2026-05-21T21:31:32Z",
"ExternalDirectoryObjectId": "d30c0254-af7e-4c04-a884-4265976e20b0",
"ExternalImapSettings": null,
"ExternalPopSettings": null,
"ExternalSmtpSettings": null,
"InternalImapSettings": null,
"InternalPopSettings": null,
"InternalSmtpSettings": null,
"LegacyExchangeDN": "/o=ExchangeLabs/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=b95cae9b8f1d4b0eae92f8afad103fc9-john.woods",
"LinkedMasterAccount": "NT AUTHORITY\\SELF",
"OrganizationalUnitRoot": "contoso.onmicrosoft.com",
"PopMessageDeleteEnabled": true,
"ServerLegacyDN": "/o=ExchangeLabs/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Configuration/cn=Servers/cn=VI1PR02MB4655",
"ServerName": "vi1pr02mb4655"
}

Related: GET /exchange/v1.0/mailboxes/{key}

PATCH /exchange/v1.0/mailboxes/{key}/casMailbox

Section titled “PATCH /exchange/v1.0/mailboxes/{key}/casMailbox”

PATCH /mailboxes/{key}/casMailbox → Set-CASMailbox (client-access protocol toggles).

Backing cmdlet: Set-CASMailbox. Role: Mailbox.ReadWrite (Pro).

Parameter In Type Required Description
activeSyncAllowedDeviceIDs body
activeSyncBlockedDeviceIDs body
activeSyncDebugLogging body
activeSyncEnabled body
activeSyncMailboxPolicy body
activeSyncSuppressReadReceipt body
displayName body
ecpEnabled body
emailAddresses body
ewsAllowEntourage body
ewsAllowList body
ewsAllowMacOutlook body
ewsAllowOutlook body
ewsApplicationAccessPolicy body
ewsBlockList body
ewsEnabled body
hasActiveSyncDevicePartnership body
imapEnabled body
imapEnableExactRFC822Size body
imapForceICalForCalendarRetrievalOption body
imapMessagesRetrievalMimeFormat body
imapSuppressReadReceipt body
imapUseProtocolDefaults body
isOptimizedForAccessibility body
macOutlookEnabled body
mapiBlockOutlookExternalConnectivity body
mapiBlockOutlookNonCachedMode body
mapiBlockOutlookRpcHttp body
mapiBlockOutlookVersions body
mapiEnabled body
mapiHttpEnabled body
name body
oneWinNativeOutlookEnabled body
outlookMobileEnabled body
owaEnabled body
owAforDevicesEnabled body
owaMailboxPolicy body
popEnabled body
popEnableExactRFC822Size body
popForceICalForCalendarRetrievalOption body
popMessagesRetrievalMimeFormat body
popSuppressReadReceipt body
popUseProtocolDefaults body
primarySmtpAddress body
publicFolderClientAccess body
resetAutoBlockedDevices body boolean (switch)
samAccountName body
showGalAsDefaultView body
smtpClientAuthenticationDisabled body
universalOutlookEnabled body
dryRun query bool (switch)

Sub-resource of the mailbox at GET /mailboxes/{key}/casMailbox - partial update via Set-CASMailbox. Returns 200 + the updated configuration.

PATCH /exchange/v1.0/mailboxes/{key}/casMailbox HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"imapEnabled": false,
"popEnabled": false,
"owaEnabled": true
}
HTTP/1.1 200 OK
{
"Identity": "exonaut-sample-mailboxes",
"ImapEnabled": false,
"PopEnabled": false,
"OWAEnabled": true
}

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes/{key}/casMailbox, GET /exchange/v1.0/mailboxes

POST /exchange/v1.0/mailboxes/{key}/disableArchive

Section titled “POST /exchange/v1.0/mailboxes/{key}/disableArchive”

POST /mailboxes/{key}/disableArchive - disables the archive mailbox via Disable-Mailbox -Archive. Use ?permanentlyDisable=true to skip the soft-delete recovery window; ?ignoreLegalHold=true for hold override; ?dryRun=true for -WhatIf.

Backing cmdlet: Disable-Mailbox. Role: Mailbox.ReadWrite (Pro).

Parameter In Type Required Description
permanentlyDisable query bool (switch)
ignoreLegalHold query bool (switch)
dryRun query bool (switch)

Sub-resource of the mailbox at GET /mailboxes/{key} - bound action that disables the archive mailbox via Disable-Mailbox -Archive. Use ?permanentlyDisable=true to skip the soft-delete window. Returns 204.

POST /exchange/v1.0/mailboxes/{key}/disableArchive HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
HTTP/1.1 204 No Content

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes/{key}, POST /exchange/v1.0/mailboxes/{key}/enableArchive

POST /exchange/v1.0/mailboxes/{key}/enableArchive

Section titled “POST /exchange/v1.0/mailboxes/{key}/enableArchive”

POST /mailboxes/{key}/enableArchive - enables the archive mailbox for an existing mailbox via Enable-Mailbox -Archive. Optional body fields: { archiveDomain, displayName }. Returns 204.

Backing cmdlet: Enable-Mailbox. Role: Mailbox.ReadWrite (Pro).

Parameter In Type Required Description
archiveDomain body
archiveName body
autoExpandingArchive body
displayName body
roleAssignmentPolicy body
dryRun query bool (switch)

Sub-resource of the mailbox at GET /mailboxes/{key} - bound action that enables the archive mailbox via Enable-Mailbox -Archive. Optional body { archiveDomain, displayName }. Returns 204.

POST /exchange/v1.0/mailboxes/{key}/enableArchive HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"displayName": "Exonaut Sample Archive"
}
HTTP/1.1 204 No Content

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes/{key}, POST /exchange/v1.0/mailboxes/{key}/disableArchive

GET /exchange/v1.0/mailboxes/{key}/folderPermissions

Section titled “GET /exchange/v1.0/mailboxes/{key}/folderPermissions”

Sub-resource of the mailboxes at GET /mailboxes/{key} - list per-folder client ACLs. Backed by Get-MailboxFolderPermission.

Backing cmdlet: Get-MailboxFolderPermission. Role: MailboxPermission.Read (Community).

Parameter In Type Required Description
groupMailbox query bool (switch) Read folder permissions from a Microsoft 365 Group mailbox. Maps -GroupMailbox on Get-MailboxFolderPermission.

POST /exchange/v1.0/mailboxes/{key}/folderPermissions

Section titled “POST /exchange/v1.0/mailboxes/{key}/folderPermissions”

POST /mailboxes/{key}/folderPermissions - add a per-folder ACL (Add-MailboxFolderPermission). Body: { folder, user, accessRights[] }. Returns 201 + Location.

Backing cmdlet: Add-MailboxFolderPermission. Role: MailboxPermission.ReadWrite (Pro).

Parameter In Type Required Description
folder body string yes
user body string yes
accessRights body array yes
sendNotificationToUser body boolean
sharingPermissionFlags body string
dryRun query bool (switch)

Sub-resource of the mailbox at GET /mailboxes/{key} - grant a trustee an ACL on a mailbox folder via Add-MailboxFolderPermission. Body: { folder, user, accessRights[] }. Returns 201 + Location.

POST /exchange/v1.0/mailboxes/{key}/folderPermissions HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"folder": "Calendar",
"user": "[email protected]",
"accessRights": [
"Reviewer"
]
}
HTTP/1.1 201 Created
Location: /exchange/v1.0/mailboxes/{key}/folderPermissions/Calendar%7Cjohn.woods%40contoso.com
{
"id": "Calendar|[email protected]",
"folder": "Calendar",
"user": "[email protected]",
"accessRights": [
"Reviewer"
]
}

Related: GET /exchange/v1.0/mailboxes/{key}/folderPermissions, DELETE /exchange/v1.0/mailboxes/{key}/folderPermissions/{permissionId}

PATCH /exchange/v1.0/mailboxes/{key}/folderPermissions/{permissionId}

Section titled “PATCH /exchange/v1.0/mailboxes/{key}/folderPermissions/{permissionId}”

PATCH /mailboxes/{key}/folderPermissions/{permissionId} - change an existing folder ACL’s rights (Set-MailboxFolderPermission). F38 (audit 2026-06-01): keyed by permissionId (“<folder>|<user>”, same key as DELETE) so the target is identified by the URL, not the body. Body: { accessRights[], sendNotificationToUser?, sharingPermissionFlags? }. Returns 204.

Backing cmdlet: Set-MailboxFolderPermission. Role: MailboxPermission.ReadWrite (Pro).

Parameter In Type Required Description
accessRights body array yes
sendNotificationToUser body boolean
sharingPermissionFlags body string
dryRun query bool (switch)

DELETE /exchange/v1.0/mailboxes/{key}/folderPermissions/{permissionId}

Section titled “DELETE /exchange/v1.0/mailboxes/{key}/folderPermissions/{permissionId}”

DELETE /mailboxes/{key}/folderPermissions/{permissionId} - remove a folder ACL (Remove-MailboxFolderPermission). permissionId is “<folder>|<user>”. Returns 204.

Backing cmdlet: Remove-MailboxFolderPermission. Role: MailboxPermission.ReadWrite (Pro).

Parameter In Type Required Description
sendNotificationToUser query bool (switch)
dryRun query bool (switch)

Sub-resource of the mailbox at GET /mailboxes/{key}/folderPermissions - remove a folder ACL via Remove-MailboxFolderPermission. permissionId is “<folder>|<user>”. Returns 204.

DELETE /exchange/v1.0/mailboxes/{key}/folderPermissions/{permissionId} HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 204 No Content

Related: POST /exchange/v1.0/mailboxes/{key}/folderPermissions

GET /exchange/v1.0/mailboxes/{key}/folderStatistics

Section titled “GET /exchange/v1.0/mailboxes/{key}/folderStatistics”

GET /mailboxes/{key}/folderStatistics?folderPath=Calendar - per-folder size and item count. folderPath is optional; if omitted, the cmdlet returns stats for every folder in the mailbox. Backed by Get-MailboxFolderStatistics.

Backing cmdlet: Get-MailboxFolderStatistics. Role: Mailbox.Stats.Read (Community).

Parameter In Type Required Description
folderScope query string Folder scope filter: All | Archive | Calendar | Contacts | DeletedItems | Inbox | SentItems | … (maps to -FolderScope).
all query bool (switch) Return all results instead of the EXO default of 1000. Maps -ResultSize Unlimited on Get-MailboxFolderStatistics; prevents silent truncation in mailboxes with many folders.
archive query bool (switch) Return folder statistics for the archive mailbox associated with this mailbox instead of the primary. Maps -Archive on Get-MailboxFolderStatistics.
includeAnalysis query bool (switch) Scan all items within each folder and return size-distribution analysis. Slow - for troubleshooting only. Maps -IncludeAnalysis on Get-MailboxFolderStatistics.

Sub-resource of the mailbox at GET /mailboxes/{key} - returns per-folder size, item counts, and folder metadata for every folder in the mailbox. Backed by Get-MailboxFolderStatistics.

GET /exchange/v1.0/mailboxes/{key}/folderStatistics HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
[
{
"name": "Top of Information Store",
"identity": "john.woods\\Top of Information Store",
"folderPath": "/Top of Information Store",
"folderType": "Root",
"containerClass": "",
"creatorIdentity": null,
"folderId": "LgAAAAD8QHtNihymSbuNIA5yapQyAQBNMh5xahpIRLWOSP5s7vWhAAAAAAEIAAAB",
"contentFolder": "True",
"itemsInFolder": 0,
"itemsInFolderAndSubfolders": 123,
"deletedItemsInFolder": 0,
"subfolderCount": 0,
"folderSize": "0 B (0 bytes)",
"folderAndSubfolderSize": "2.13 MB (2,233,298 bytes)",
"attachmentTableTotalSize": null,
"attachmentTableAvailableSize": null,
"oldestItemReceivedDate": null,
"newestItemReceivedDate": null,
"topSubject": "",
"topSubjectCount": 0,
"topSubjectSize": "0 B (0 bytes)",
"topSubjectClass": "",
"topSubjectFrom": "",
"topSubjectReceivedTime": null,
"topSubjectPath": "",
"archivePolicy": null,
"associatedIPMFolderPath": null,
"auditAuxMailboxGuid": "",
"auditFolderStubSize": "",
"compliancePolicy": null,
"contentMailboxGuid": "a1b2c3d4-1111-2222-3333-444455556666",
"conversationNamespace": null,
"creationTime": "2026-03-16T15:47:55.8267112+00:00",
"date": "2026-03-16T15:47:55.8267112+00:00",
"deletePolicy": null,
"deletedItemsInFolderAndSubfolders": 0,
"diagnosticInfo": null,
"diagnostics": null,
"elcRecrawlState": "",
"elcRecrawlStateReadMode": "",
"elcTeamsScanCompleted": null,
"flags": "",
"hiddenItemsInFolder": 0,
"isFailedMovedFolder": null,
"lastModifiedTime": "2026-03-16T17:55:41.0566087+00:00",
"lastMovedTimeStamp": null,
"lastScannedDocumentId": null,
"lowLatencyContainerQuota": "Unlimited",
"managedFolder": null,
"movable": false,
"newestDeletedItemLastModifiedDate": null,
"newestDeletedItemReceivedDate": null,
"newestItemLastModifiedDate": null,
"oldestDeletedItemLastModifiedDate": null,
"oldestDeletedItemReceivedDate": null,
"oldestItemLastModifiedDate": null,
"parentFolderId": "LgAAAAD8QHtNihymSbuNIA5yapQyAQBNMh5xahpIRLWOSP5s7vWhAAAAAAEBAAAB",
"rawContentMailboxGuid": "a1b2c3d4-1111-2222-3333-444455556666",
"recoverableItemsFolder": false,
"retentionFlags": "",
"searchFolder": false,
"searchFolderState": "",
"searchFolders": null,
"storageQuota": "Unlimited",
"storageWarningQuota": "Unlimited",
"targetQuota": "User",
"topClientInfoCountForSubject": 0,
"topClientInfoForSubject": "",
"visibleItemsInFolder": 0,
"whenLabeled": "0001-01-01T00:00:00+00:00"
},
{
"name": "Archive",
"identity": "john.woods\\Archive",
"folderPath": "/Archive",
"folderType": "Archive",
"containerClass": "IPF.Note",
"creatorIdentity": null,
"folderId": "LgAAAAD8QHtNihymSbuNIA5yapQyAQBNMh5xahpIRLWOSP5s7vWhAAAAAAE1AAAB",
"contentFolder": "True",
"itemsInFolder": 0,
"itemsInFolderAndSubfolders": 0,
"deletedItemsInFolder": 0,
"subfolderCount": 0,
"folderSize": "0 B (0 bytes)",
"folderAndSubfolderSize": "0 B (0 bytes)",
"attachmentTableTotalSize": null,
"attachmentTableAvailableSize": null,
"oldestItemReceivedDate": null,
"newestItemReceivedDate": null,
"topSubject": "",
"topSubjectCount": 0,
"topSubjectSize": "0 B (0 bytes)",
"topSubjectClass": "",
"topSubjectFrom": "",
"topSubjectReceivedTime": null,
"topSubjectPath": "",
"archivePolicy": null,
"associatedIPMFolderPath": null,
"auditAuxMailboxGuid": "",
"auditFolderStubSize": "",
"compliancePolicy": null,
"contentMailboxGuid": "a1b2c3d4-1111-2222-3333-444455556666",
"conversationNamespace": "1",
"creationTime": "2026-03-16T15:48:48.6726461+00:00",
"date": "2026-03-16T15:48:48.6726461+00:00",
"deletePolicy": null,
"deletedItemsInFolderAndSubfolders": 0,
"diagnosticInfo": null,
"diagnostics": null,
"elcRecrawlState": "",
"elcRecrawlStateReadMode": "",
"elcTeamsScanCompleted": null,
"flags": "",
"hiddenItemsInFolder": 0,
"isFailedMovedFolder": null,
"lastModifiedTime": "2026-03-16T17:55:41.0648788+00:00",
"lastMovedTimeStamp": null,
"lastScannedDocumentId": null,
"lowLatencyContainerQuota": "Unlimited",
"managedFolder": null,
"movable": false,
"newestDeletedItemLastModifiedDate": null,
"newestDeletedItemReceivedDate": null,
"newestItemLastModifiedDate": null,
"oldestDeletedItemLastModifiedDate": null,
"oldestDeletedItemReceivedDate": null,
"oldestItemLastModifiedDate": null,
"parentFolderId": "LgAAAAD8QHtNihymSbuNIA5yapQyAQBNMh5xahpIRLWOSP5s7vWhAAAAAAEIAAAB",
"rawContentMailboxGuid": "a1b2c3d4-1111-2222-3333-444455556666",
"recoverableItemsFolder": false,
"retentionFlags": "NeedsRescan",
"searchFolder": false,
"searchFolderState": "",
"searchFolders": null,
"storageQuota": "Unlimited",
"storageWarningQuota": "Unlimited",
"targetQuota": "User",
"topClientInfoCountForSubject": 0,
"topClientInfoForSubject": "",
"visibleItemsInFolder": 0,
"whenLabeled": "0001-01-01T00:00:00+00:00"
},
{
"name": "Calendar",
"identity": "john.woods\\Calendar",
"folderPath": "/Calendar",
"folderType": "Calendar",
"containerClass": "IPF.Appointment",
"creatorIdentity": null,
"folderId": "LgAAAAD8QHtNihymSbuNIA5yapQyAQBNMh5xahpIRLWOSP5s7vWhAAAAAAENAAAC",
"contentFolder": "True",
"itemsInFolder": 3,
"itemsInFolderAndSubfolders": 103,
"deletedItemsInFolder": 0,
"subfolderCount": 0,
"folderSize": "6.855 KB (7,020 bytes)",
"folderAndSubfolderSize": "600.3 KB (614,715 bytes)",
"attachmentTableTotalSize": null,
"attachmentTableAvailableSize": null,
"oldestItemReceivedDate": null,
"newestItemReceivedDate": null,
"topSubject": "",
"topSubjectCount": 0,
"topSubjectSize": "0 B (0 bytes)",
"topSubjectClass": "",
"topSubjectFrom": "",
"topSubjectReceivedTime": null,
"topSubjectPath": "",
"archivePolicy": null,
"associatedIPMFolderPath": null,
"auditAuxMailboxGuid": "",
"auditFolderStubSize": "",
"compliancePolicy": null,
"contentMailboxGuid": "a1b2c3d4-1111-2222-3333-444455556666",
"conversationNamespace": "1",
"creationTime": "2026-03-16T15:47:55.8312109+00:00",
"date": "2026-03-16T15:47:55.8312109+00:00",
"deletePolicy": null,
"deletedItemsInFolderAndSubfolders": 0,
"diagnosticInfo": null,
"diagnostics": null,
"elcRecrawlState": "",
"elcRecrawlStateReadMode": "",
"elcTeamsScanCompleted": null,
"flags": "LargeOnPageThreshold",
"hiddenItemsInFolder": 3,
"isFailedMovedFolder": null,
"lastModifiedTime": "2026-05-13T06:19:33.2275094+00:00",
"lastMovedTimeStamp": null,
"lastScannedDocumentId": null,
"lowLatencyContainerQuota": "3 MB (3,145,728 bytes)",
"managedFolder": null,
"movable": false,
"newestDeletedItemLastModifiedDate": null,
"newestDeletedItemReceivedDate": null,
"newestItemLastModifiedDate": null,
"oldestDeletedItemLastModifiedDate": null,
"oldestDeletedItemReceivedDate": null,
"oldestItemLastModifiedDate": null,
"parentFolderId": "LgAAAAD8QHtNihymSbuNIA5yapQyAQBNMh5xahpIRLWOSP5s7vWhAAAAAAEIAAAB",
"rawContentMailboxGuid": "a1b2c3d4-1111-2222-3333-444455556666",
"recoverableItemsFolder": false,
"retentionFlags": "NeedsRescan",
"searchFolder": false,
"searchFolderState": "",
"searchFolders": null,
"storageQuota": "Unlimited",
"storageWarningQuota": "Unlimited",
"targetQuota": "User",
"topClientInfoCountForSubject": 0,
"topClientInfoForSubject": "",
"visibleItemsInFolder": 0,
"whenLabeled": "0001-01-01T00:00:00+00:00"
}
]

Related: GET /exchange/v1.0/mailboxes/{key}, GET /exchange/v1.0/mailboxes/{key}/folders, GET /exchange/v1.0/mailboxes/{key}/folderPermissions

GET /exchange/v1.0/mailboxes/{key}/folders

Section titled “GET /exchange/v1.0/mailboxes/{key}/folders”

Get-MailboxFolder - folder tree (Inbox, Sent Items, custom folders).

Backing cmdlet: Get-MailboxFolder. Role: Mailbox.Read (Community).

Parameter In Type Required Description
getChildren query bool (switch) Return the immediate children of the specified folder. Defaults to true. Maps -GetChildren on Get-MailboxFolder.
mailFolderOnly query bool (switch) Return only mail folders (exclude calendar, contacts, tasks, etc.). Maps -MailFolderOnly on Get-MailboxFolder.
recurse query bool (switch) Recurse the entire folder hierarchy beneath the specified folder. Maps -Recurse on Get-MailboxFolder.
all query bool (switch) Return all folders instead of the EXO default cap of 1000 (a large/archive mailbox can exceed it). Maps -ResultSize Unlimited on Get-MailboxFolder; especially relevant with ?recurse=true.

GET /exchange/v1.0/mailboxes/{key}/inboxRules

Section titled “GET /exchange/v1.0/mailboxes/{key}/inboxRules”

Sub-resource of the mailboxes at GET /mailboxes/{key} - list InboxRule entries (Outlook/OWA Rules).

Backing cmdlet: Get-InboxRule. Role: Mailbox.Read (Community).

Parameter In Type Required Description
includeHidden query bool (switch) Include hidden inbox rules (created by client programs/services) in the results. Maps -IncludeHidden on Get-InboxRule.

Sub-resource of the mailbox at GET /mailboxes/{key} - lists the Outlook/OWA inbox rules (Get-InboxRule) configured on the mailbox. Returns an empty collection when no rules are defined.

GET /exchange/v1.0/mailboxes/{key}/inboxRules HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"@odata.context": "http://localhost:5043/exchange/v1.0/$metadata#Collection(ExchangeApi.InboxRule)",
"value": []
}

Related: GET /exchange/v1.0/mailboxes/{key}, GET /exchange/v1.0/mailboxes/{key}/inboxRules/{ruleId}, GET /exchange/v1.0/mailboxes/{key}/sweepRules

POST /exchange/v1.0/mailboxes/{key}/inboxRules

Section titled “POST /exchange/v1.0/mailboxes/{key}/inboxRules”

POST /mailboxes/{key}/inboxRules - creates a per-mailbox rule via New-InboxRule. Cmdlet returns the rule with an auto-assigned numeric Identity; the Location header points at the created rule.

Backing cmdlet: New-InboxRule. Role: Mailbox.ReadWrite (Pro).

Parameter In Type Required Description
name body yes
applyCategory body
applySystemCategory body
bodyContainsWords body
copyToFolder body
deleteMessage body
deleteSystemCategory body
exceptIfBodyContainsWords body
exceptIfFlaggedForAction body
exceptIfFrom body
exceptIfFromAddressContainsWords body
exceptIfFromSubscription body
exceptIfHasAttachment body
exceptIfHasClassification body
exceptIfHeaderContainsWords body
exceptIfMessageTypeMatches body
exceptIfMyNameInCcBox body
exceptIfMyNameInToBox body
exceptIfMyNameInToOrCcBox body
exceptIfMyNameNotInToBox body
exceptIfReceivedAfterDate body
exceptIfReceivedBeforeDate body
exceptIfRecipientAddressContainsWords body
exceptIfSentOnlyToMe body
exceptIfSentTo body
exceptIfSubjectContainsWords body
exceptIfSubjectOrBodyContainsWords body
exceptIfWithImportance body
exceptIfWithinSizeRangeMaximum body
exceptIfWithinSizeRangeMinimum body
exceptIfWithSensitivity body
flaggedForAction body
forwardAsAttachmentTo body
forwardTo body
from body
fromAddressContainsWords body
fromSubscription body
hasAttachment body
hasClassification body
headerContainsWords body
markAsRead body
markImportance body
messageTypeMatches body
moveToFolder body
myNameInCcBox body
myNameInToBox body
myNameInToOrCcBox body
myNameNotInToBox body
pinMessage body
priority body
receivedAfterDate body
receivedBeforeDate body
recipientAddressContainsWords body
redirectTo body
sendTextMessageNotificationTo body
sentOnlyToMe body
sentTo body
softDeleteMessage body
stopProcessingRules body
subjectContainsWords body
subjectOrBodyContainsWords body
withImportance body
withinSizeRangeMaximum body
withinSizeRangeMinimum body
withSensitivity body
dryRun query bool (switch)

Create an inbox rule without the required name

Section titled “Create an inbox rule without the required name”

Sub-resource of the mailbox at GET /mailboxes/{key}/inboxRules - New-InboxRule requires a name. Omitting it returns the canonical 400 envelope.

POST /exchange/v1.0/mailboxes/{key}/inboxRules HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"from": [
],
"moveToFolder": "Newsletters"
}
HTTP/1.1 400 Bad Request
{
"error": {
"code": "BadRequest",
"message": "The required field 'name' is missing.",
"target": "name"
},
"correlationId": "0HN7Q4ABCDEF0:00000002"
}

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes/{key}/inboxRules

Sub-resource of the mailbox at GET /mailboxes/{key}/inboxRules - creates a per-mailbox rule via New-InboxRule. Name is required; the cmdlet auto-assigns a composite Identity. Returns 201 + Location.

POST /exchange/v1.0/mailboxes/{key}/inboxRules HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"name": "exonaut-sample-mailboxes-rule",
"from": [
],
"moveToFolder": "Newsletters",
"markAsRead": true
}
HTTP/1.1 201 Created
Location: /exchange/v1.0/mailboxes/exonaut-sample-mailboxes/inboxRules/exonaut-sample-mailboxes%5C1
{
"Identity": "exonaut-sample-mailboxes\\1",
"Name": "exonaut-sample-mailboxes-rule",
"Priority": 1,
"Enabled": true,
"From": [
],
"MoveToFolder": "Newsletters",
"MarkAsRead": true
}

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes/{key}/inboxRules, GET /exchange/v1.0/mailboxes

GET /exchange/v1.0/mailboxes/{key}/inboxRules/{ruleId}

Section titled “GET /exchange/v1.0/mailboxes/{key}/inboxRules/{ruleId}”

Sub-resource of the mailboxes at GET /mailboxes/{key} - single InboxRule by composite ruleId.

Backing cmdlet: Get-InboxRule. Role: Mailbox.Read (Community).

PATCH /exchange/v1.0/mailboxes/{key}/inboxRules/{ruleId}

Section titled “PATCH /exchange/v1.0/mailboxes/{key}/inboxRules/{ruleId}”

PATCH /mailboxes/{key}/inboxRules/{ruleId} - partial update via Set-InboxRule. Enable/disable toggle goes through the bound actions below, not PATCH.

Backing cmdlet: Set-InboxRule. Role: Mailbox.ReadWrite (Pro).

Parameter In Type Required Description
applyCategory body
applySystemCategory body
bodyContainsWords body
copyToFolder body
deleteMessage body
deleteSystemCategory body
exceptIfBodyContainsWords body
exceptIfFlaggedForAction body
exceptIfFrom body
exceptIfFromAddressContainsWords body
exceptIfHasAttachment body
exceptIfHasClassification body
exceptIfHeaderContainsWords body
exceptIfMessageTypeMatches body
exceptIfMyNameInCcBox body
exceptIfMyNameInToBox body
exceptIfMyNameInToOrCcBox body
exceptIfMyNameNotInToBox body
exceptIfReceivedAfterDate body
exceptIfReceivedBeforeDate body
exceptIfRecipientAddressContainsWords body
exceptIfSentOnlyToMe body
exceptIfSentTo body
exceptIfSubjectContainsWords body
exceptIfSubjectOrBodyContainsWords body
exceptIfWithImportance body
exceptIfWithinSizeRangeMaximum body
exceptIfWithinSizeRangeMinimum body
exceptIfWithSensitivity body
flaggedForAction body
forwardAsAttachmentTo body
forwardTo body
from body
fromAddressContainsWords body
hasAttachment body
hasClassification body
headerContainsWords body
markAsRead body
markImportance body
messageTypeMatches body
moveToFolder body
myNameInCcBox body
myNameInToBox body
myNameInToOrCcBox body
myNameNotInToBox body
name body
pinMessage body
priority body
receivedAfterDate body
receivedBeforeDate body
recipientAddressContainsWords body
redirectTo body
sendTextMessageNotificationTo body
sentOnlyToMe body
sentTo body
softDeleteMessage body
stopProcessingRules body
subjectContainsWords body
subjectOrBodyContainsWords body
withImportance body
withinSizeRangeMaximum body
withinSizeRangeMinimum body
withSensitivity body
dryRun query bool (switch)

Sub-resource of the mailbox at GET /mailboxes/{key}/inboxRules/{ruleId} - partial update via Set-InboxRule. Enable/disable goes through the bound actions, not PATCH. Returns 200 + the updated rule.

PATCH /exchange/v1.0/mailboxes/{key}/inboxRules/{ruleId} HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"priority": 2,
"markAsRead": true,
"stopProcessingRules": true
}
HTTP/1.1 200 OK
{
"Identity": "exonaut-sample-mailboxes\\1",
"Name": "exonaut-sample-mailboxes-rule",
"Priority": 2,
"MarkAsRead": true,
"StopProcessingRules": true
}

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes/{key}/inboxRules/{ruleId}, GET /exchange/v1.0/mailboxes/{key}/inboxRules

DELETE /exchange/v1.0/mailboxes/{key}/inboxRules/{ruleId}

Section titled “DELETE /exchange/v1.0/mailboxes/{key}/inboxRules/{ruleId}”

Sub-resource of the mailboxes at GET /mailboxes/{key} - remove a single InboxRule by composite ruleId.

Backing cmdlet: Remove-InboxRule. Role: Mailbox.ReadWrite (Pro).

Parameter In Type Required Description
force query bool (switch)
dryRun query bool (switch)

Sub-resource of the mailbox at GET /mailboxes/{key}/inboxRules/{ruleId} - removes a single inbox rule via Remove-InboxRule. Returns 204.

DELETE /exchange/v1.0/mailboxes/{key}/inboxRules/{ruleId} HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
HTTP/1.1 204 No Content

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes/{key}/inboxRules

POST /exchange/v1.0/mailboxes/{key}/inboxRules/{ruleId}/disable

Section titled “POST /exchange/v1.0/mailboxes/{key}/inboxRules/{ruleId}/disable”

POST /mailboxes/{key}/inboxRules/{ruleId}/disable - bound action via Disable-InboxRule.

Backing cmdlet: Disable-InboxRule. Role: Mailbox.ReadWrite (Pro).

Parameter In Type Required Description
dryRun query bool (switch)

Sub-resource of the mailbox at GET /mailboxes/{key}/inboxRules/{ruleId} - bound action that disables a rule via Disable-InboxRule. Returns 204.

POST /exchange/v1.0/mailboxes/{key}/inboxRules/{ruleId}/disable HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
HTTP/1.1 204 No Content

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes/{key}/inboxRules/{ruleId}, POST /exchange/v1.0/mailboxes/{key}/inboxRules/{ruleId}/enable

POST /exchange/v1.0/mailboxes/{key}/inboxRules/{ruleId}/enable

Section titled “POST /exchange/v1.0/mailboxes/{key}/inboxRules/{ruleId}/enable”

POST /mailboxes/{key}/inboxRules/{ruleId}/enable - bound action via Enable-InboxRule.

Backing cmdlet: Enable-InboxRule. Role: Mailbox.ReadWrite (Pro).

Parameter In Type Required Description
dryRun query bool (switch)

Sub-resource of the mailbox at GET /mailboxes/{key}/inboxRules/{ruleId} - bound action that enables a rule via Enable-InboxRule. Returns 204.

POST /exchange/v1.0/mailboxes/{key}/inboxRules/{ruleId}/enable HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
HTTP/1.1 204 No Content

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes/{key}/inboxRules/{ruleId}, POST /exchange/v1.0/mailboxes/{key}/inboxRules/{ruleId}/disable

GET /exchange/v1.0/mailboxes/{key}/irmAccess

Section titled “GET /exchange/v1.0/mailboxes/{key}/irmAccess”

Get-MailboxIRMAccess - delegates blocked from reading IRM-protected messages.

Backing cmdlet: Get-MailboxIRMAccess. Role: MailboxPermission.Read (Community).

Sub-resource of the mailbox at GET /mailboxes/{key} - lists the delegates that are blocked from reading IRM-protected (rights-managed) messages in this mailbox. An empty array means no delegates are blocked.

GET /exchange/v1.0/mailboxes/{key}/irmAccess HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
[]

Related: GET /exchange/v1.0/mailboxes/{key}, PUT /exchange/v1.0/mailboxes/{key}/irmAccess/{user}

PUT /exchange/v1.0/mailboxes/{key}/irmAccess/{user}

Section titled “PUT /exchange/v1.0/mailboxes/{key}/irmAccess/{user}”

PUT /mailboxes/{key}/irmAccess/{user} - set a specific user’s IRM access level on this mailbox via Set-MailboxIRMAccess. Body { “accessLevel”: “Block” | “Allow” }. Returns 204.

Backing cmdlet: Set-MailboxIRMAccess. Role: Mailbox.ReadWrite (Pro).

Parameter In Type Required Description
accessLevel body yes

Sub-resource of the mailbox at GET /mailboxes/{key}/irmAccess - sets a specific user’s IRM access on this mailbox via Set-MailboxIRMAccess. accessLevel is required (Block | Allow). Returns 204.

PUT /exchange/v1.0/mailboxes/{key}/irmAccess/{user} HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"accessLevel": "Block"
}
HTTP/1.1 204 No Content

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes/{key}/irmAccess, GET /exchange/v1.0/mailboxes

DELETE /exchange/v1.0/mailboxes/{key}/irmAccess/{user}

Section titled “DELETE /exchange/v1.0/mailboxes/{key}/irmAccess/{user}”

DELETE /mailboxes/{key}/irmAccess/{user} - clear a user’s per-mailbox IRM access override via Remove-MailboxIRMAccess (-Identity {key} -User {user}). Returns 204. Audit 2026-05-29 parity wiring (reuses Mailbox.ReadWrite.All; Get/Set already shipped).

Backing cmdlet: Remove-MailboxIRMAccess. Role: Mailbox.ReadWrite (Pro).

GET /exchange/v1.0/mailboxes/{key}/junkEmailConfiguration

Section titled “GET /exchange/v1.0/mailboxes/{key}/junkEmailConfiguration”

Get-MailboxJunkEmailConfiguration - safe / blocked sender lists.

Backing cmdlet: Get-MailboxJunkEmailConfiguration. Role: Mailbox.Read (Community).

Sub-resource of the mailbox at GET /mailboxes/{key} - returns the junk email (safe/blocked sender) configuration for the mailbox, including the trusted and blocked senders and domains lists.

GET /exchange/v1.0/mailboxes/{key}/junkEmailConfiguration HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"identity": "[email protected]",
"mailboxOwnerId": "[email protected]",
"enabled": true,
"trustedListsOnly": false,
"contactsTrusted": false,
"trustedSendersAndDomains": [],
"blockedSendersAndDomains": []
}

Related: GET /exchange/v1.0/mailboxes/{key}

PATCH /exchange/v1.0/mailboxes/{key}/junkEmailConfiguration

Section titled “PATCH /exchange/v1.0/mailboxes/{key}/junkEmailConfiguration”

PATCH /mailboxes/{key}/junkEmailConfiguration → Set-MailboxJunkEmailConfiguration.

Backing cmdlet: Set-MailboxJunkEmailConfiguration. Role: Mailbox.ReadWrite (Pro).

Parameter In Type Required Description
blockedSendersAndDomains body
contactsTrusted body
enabled body
failOnError body
senderScreeningEnabled body
trustedListsOnly body
trustedRecipientsAndDomains body
trustedSendersAndDomains body
dryRun query bool (switch)

Sub-resource of the mailbox at GET /mailboxes/{key}/junkEmailConfiguration - partial update via Set-MailboxJunkEmailConfiguration. Returns 200 + the updated configuration.

PATCH /exchange/v1.0/mailboxes/{key}/junkEmailConfiguration HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"enabled": true,
"trustedSendersAndDomains": [
"contoso.com",
],
"blockedSendersAndDomains": [
]
}
HTTP/1.1 200 OK
{
"Identity": "exonaut-sample-mailboxes",
"Enabled": true,
"TrustedSendersAndDomains": [
"contoso.com",
],
"BlockedSendersAndDomains": [
]
}

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes/{key}/junkEmailConfiguration, GET /exchange/v1.0/mailboxes

GET /exchange/v1.0/mailboxes/{key}/location

Section titled “GET /exchange/v1.0/mailboxes/{key}/location”

Get-MailboxLocation - geo / database location of the mailbox (multi-geo tenants).

Backing cmdlet: Get-MailboxLocation. Role: Mailbox.Read (Community).

Parameter In Type Required Description
mailboxLocationType query string Filter by mailbox location type (e.g. Primary, MainArchive, AuxArchive, MoveDestination, …). Maps -MailboxLocationType on Get-MailboxLocation.
includePreviousPrimary query bool (switch) Include the previous primary mailbox location(s) in the results. Maps -IncludePreviousPrimary on Get-MailboxLocation.

Get the geo and database location of a mailbox

Section titled “Get the geo and database location of a mailbox”

Sub-resource of the mailbox at GET /mailboxes/{key} - returns the mailbox’s geo/database location details, useful for diagnosing placement in multi-geo tenants.

GET /exchange/v1.0/mailboxes/{key}/location HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
[
{
"id": "00000000-0000-0000-0000-000000000000\\b496f793-0cfa-4e78-a703-df5ee6a51051",
"identity": "00000000-0000-0000-0000-000000000000\\b496f793-0cfa-4e78-a703-df5ee6a51051",
"ownerId": "[email protected]",
"mailboxGuid": "b496f793-0cfa-4e78-a703-df5ee6a51051",
"databaseGuid": "9b2bf06b-6c7c-4221-adb7-eecf47f237f3",
"tenantGuid": "00000000-0000-0000-0000-000000000000",
"mailboxLocationType": "Primary",
"databaseLocation": "eurprd02.prod.outlook.com/9b2bf06b-6c7c-4221-adb7-eecf47f237f3",
"contentSource": "Unspecified",
"mailboxMoveBatchName": "",
"mailboxMoveFlags": "None",
"mailboxMoveStatus": "None",
"migrationDryRun": false,
"primaryMailboxSource": "None",
"rawExternalEmailAddress": null,
"isMigratedConsumerMailbox": false,
"isPremiumConsumerMailbox": false,
"optInUser": false,
"safeLinksEnabled": true,
"mailboxProvisioningConstraint": null,
"shardAddress": null
}
]

Related: GET /exchange/v1.0/mailboxes/{key}

GET /exchange/v1.0/mailboxes/{key}/messageConfiguration

Section titled “GET /exchange/v1.0/mailboxes/{key}/messageConfiguration”

Get-MailboxMessageConfiguration - OWA reading-pane, signature, sort order…

Backing cmdlet: Get-MailboxMessageConfiguration. Role: Mailbox.Read (Community).

Sub-resource of the mailbox at GET /mailboxes/{key} - returns the Outlook on the web message settings (reading pane, signature, conversation sort order, default font, read-receipt behavior) for a single mailbox.

GET /exchange/v1.0/mailboxes/{key}/messageConfiguration HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"identity": "john.woods",
"mailboxOwnerId": "john.woods",
"isReplyAllTheDefaultResponse": true,
"emptyDeletedItemsOnLogoff": false,
"alwaysShowBcc": false,
"alwaysShowFrom": false,
"autoAddSignature": false,
"autoAddSignatureOnMobile": true,
"autoAddSignatureOnReply": false,
"signatureText": "",
"signatureHtml": "",
"signatureTextOnMobile": "",
"sendAddressDefault": "",
"conversationSortOrder": "ChronologicalNewestOnTop",
"defaultFontSize": 3,
"defaultFontName": "Calibri",
"defaultFontColor": "#000000",
"showReadingPaneOnFirstLoad": false,
"checkForForgottenAttachments": true,
"afterMoveOrDeleteBehavior": "OpenNextItem",
"readReceiptResponse": "DoNotAutomaticallySend"
}

Related: GET /exchange/v1.0/mailboxes/{key}

PATCH /exchange/v1.0/mailboxes/{key}/messageConfiguration

Section titled “PATCH /exchange/v1.0/mailboxes/{key}/messageConfiguration”

PATCH /mailboxes/{key}/messageConfiguration → Set-MailboxMessageConfiguration.

Backing cmdlet: Set-MailboxMessageConfiguration. Role: Mailbox.ReadWrite (Pro).

Parameter In Type Required Description
afterMoveOrDeleteBehavior body
alwaysShowBcc body
alwaysShowFrom body
autoAddSignature body
autoAddSignatureOnMobile body
autoAddSignatureOnReply body
checkForForgottenAttachments body
checkForReportJunkDialog body
conversationSortOrder body
defaultFontColor body
defaultFontFlags body
defaultFontName body
defaultFontSize body
defaultFormat body
defaultSignature body
defaultSignatureOnReply body
deleteSignatureName body
displayDensityMode body
echoGroupMessageBackToSubscribedSender body
emailComposeMode body
emptyDeletedItemsOnLogoff body
favoritesBitFlags body
globalReadingPanePosition body
hideDeletedItems body
isDarkModeTheme body
isFavoritesFolderTreeCollapsed body
isFocusedInboxEnabled body
isMailRootFolderTreeCollapsed body
isReplyAllTheDefaultResponse body
linkPreviewEnabled body
mailFolderPaneExpanded body
mailSendUndoInterval body
manuallyPickCertificate body
navigationBarWidth body
navigationPaneViewOption body
newItemNotification body
preferAccessibleContent body
previewMarkAsReadBehavior body
previewMarkAsReadDelaytime body
readReceiptResponse body
reportJunkSelected body
sendAddressDefault body
showConversationAsTree body
showInlinePreviews body
showNotificationBar body
showPreviewTextInListView body
showReadingPaneOnFirstLoad body
showSenderOnTopInListView body
showUpNext body
signatureHtml body
signatureHtmlBody body
signatureName body
signatureText body
signatureTextOnMobile body
signingCertificateId body
signingCertificateSubject body
smimeEncrypt body
smimeSign body
useDefaultSignatureOnMobile body
webSuggestedRepliesEnabledForUser body
dryRun query bool (switch)

Sub-resource of the mailbox at GET /mailboxes/{key}/messageConfiguration - partial update via Set-MailboxMessageConfiguration. Returns 200 + the updated configuration.

PATCH /exchange/v1.0/mailboxes/{key}/messageConfiguration HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"autoAddSignature": true,
"signatureText": "Best regards,\nExonaut Sample",
"isFocusedInboxEnabled": true
}
HTTP/1.1 200 OK
{
"Identity": "exonaut-sample-mailboxes",
"AutoAddSignature": true,
"SignatureText": "Best regards,\nExonaut Sample",
"IsFocusedInboxEnabled": true
}

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes/{key}/messageConfiguration, GET /exchange/v1.0/mailboxes

GET /exchange/v1.0/mailboxes/{key}/permissions

Section titled “GET /exchange/v1.0/mailboxes/{key}/permissions”

Sub-resource of the mailboxes at GET /mailboxes/{key} - list mailbox ACEs (FullAccess + folder ACLs). Backed by Get-MailboxPermission.

Backing cmdlet: Get-MailboxPermission. Role: MailboxPermission.Read (Community).

Parameter In Type Required Description
user query string Filter the returned ACEs to a single trustee (the principal granted access). Maps -User on Get-MailboxPermission.
softDeletedMailbox query bool (switch) Read permissions from a soft-deleted (still-recoverable) mailbox instead of a live one. EXO-only, maps Get-MailboxPermission -SoftDeletedMailbox.
includeUnresolvedPermissions query bool (switch) Include ACEs held by accounts that can no longer be resolved (orphaned SIDs). Maps -IncludeUnresolvedPermissions on Get-MailboxPermission.
includeSoftDeletedUserPermissions query bool (switch) Include permissions held by soft-deleted user accounts. Maps -IncludeSoftDeletedUserPermissions on Get-MailboxPermission.
groupMailbox query bool (switch) Read permissions from a Microsoft 365 Group mailbox. Maps -GroupMailbox on Get-MailboxPermission.
owner query bool (switch) Return the owner of the mailbox instead of the delegated ACEs. Maps -Owner on Get-MailboxPermission.

List mailbox ACEs (FullAccess + folder ACLs)

Section titled “List mailbox ACEs (FullAccess + folder ACLs)”

Sub-resource of the mailbox at GET /mailboxes/{key}. Returns every Access Control Entry on the mailbox - FullAccess, ChangePermission, ReadPermission, etc. Includes the implicit owner ACE (NT AUTHORITY\SELF) + any explicit grants. Backed by Get-MailboxPermission.

GET /exchange/v1.0/mailboxes/{key}/permissions HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"@odata.context": "http://localhost:5043/exchange/v1.0/$metadata#Collection(ExchangeApi.MailboxPermission)",
"value": [
{
"Id": "a003556f-d8a0-4b72-b8fb-24813d53195a|NT AUTHORITY\\SELF|FullAccess,ReadPermission",
"Identity": "a003556f-d8a0-4b72-b8fb-24813d53195a",
"User": "NT AUTHORITY\\SELF",
"PrincipalUpn": "NT AUTHORITY\\SELF",
"AccessRights": [
"FullAccess",
"ReadPermission"
],
"Permission": [],
"IsInherited": false,
"Deny": false,
"InheritanceType": "All",
"IsOwner": false,
"UserSid": "S-1-5-10",
"UserWithDisplayName": []
},
{
"Id": "a003556f-d8a0-4b72-b8fb-24813d53195a|[email protected]|FullAccess",
"Identity": "a003556f-d8a0-4b72-b8fb-24813d53195a",
"User": "[email protected]",
"PrincipalUpn": "[email protected]",
"AccessRights": [
"FullAccess"
],
"Permission": [],
"IsInherited": false,
"Deny": false,
"InheritanceType": "All",
"IsOwner": false,
"UserSid": "S-1-5-21-701439281-3420630407-1831248095-22021279",
"UserWithDisplayName": []
},
{
"Id": "a003556f-d8a0-4b72-b8fb-24813d53195a|[email protected]|FullAccess",
"Identity": "a003556f-d8a0-4b72-b8fb-24813d53195a",
"User": "[email protected]",
"PrincipalUpn": "[email protected]",
"AccessRights": [
"FullAccess"
],
"Permission": [],
"IsInherited": false,
"Deny": false,
"InheritanceType": "All",
"IsOwner": false,
"UserSid": "S-1-5-21-701439281-3420630407-1831248095-30293553",
"UserWithDisplayName": []
}
]
}

Notes: SendAs is a SEPARATE ACL set - see /mailboxes/{key}/recipientPermissions. Folder-level ACLs live under /mailboxes/{key}/folderPermissions.

Related: GET /exchange/v1.0/mailboxes/{key}, POST /exchange/v1.0/mailboxes/{key}/permissions, DELETE /exchange/v1.0/mailboxes/{key}/permissions/{permissionId}, GET /exchange/v1.0/mailboxes/{key}/recipientPermissions

POST /exchange/v1.0/mailboxes/{key}/permissions

Section titled “POST /exchange/v1.0/mailboxes/{key}/permissions”

POST /mailboxes/{key}/permissions - adds a mailbox ACE via Add-MailboxPermission (AccessRights parameter set). Audit 2026-05-22 H: entity-style URL (not /$ref), so per Architecture §2 Q3 returns 201 Created + Location pointing at the composite ID, not 204 like the link-style writes do.

Backing cmdlet: Add-MailboxPermission. Role: MailboxPermission.ReadWrite (Pro).

Parameter In Type Required Description
user body string yes
accessRights body array yes
autoMapping body boolean
deny body boolean
groupMailbox body boolean
ignoreDefaultScope body boolean
inheritanceType body string
dryRun query bool (switch)

Grant a permission on the mailbox at GET /mailboxes/{key}

Section titled “Grant a permission on the mailbox at GET /mailboxes/{key}”

Add an ACE to the mailbox at GET /mailboxes/{key} via Add-MailboxPermission. Returns 201 with Location pointing at the composite-id route {mailbox}|{user}|{accessRights} (same shape GET /mailboxes/{key}/permissions emits). Valid accessRights: ChangeOwner, ChangePermission, DeleteItem, ExternalAccount, FullAccess, ReadPermission.

POST /exchange/v1.0/mailboxes/{key}/permissions HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"user": "[email protected]",
"accessRights": [
"ReadPermission"
]
}
HTTP/1.1 201 Created
Location: /exchange/v1.0/mailboxes/[email protected]/permissions/[email protected]%[email protected]%7CReadPermission
{
"id": "[email protected]|[email protected]|ReadPermission",
"identity": "[email protected]",
"user": "[email protected]",
"accessRights": [
"ReadPermission"
]
}

Notes: FullAccess auto-maps to Outlook by default; pass autoMapping: false in the body to suppress. SendAs is a SEPARATE ACL set (see /mailboxes/{key}/recipientPermissions).

Related: GET /exchange/v1.0/mailboxes/{key}, GET /exchange/v1.0/mailboxes/{key}/permissions, DELETE /exchange/v1.0/mailboxes/{key}/permissions/{permissionId}, POST /exchange/v1.0/mailboxes/{key}/recipientPermissions

POST /exchange/v1.0/mailboxes/{key}/permissions/clearAutoMapping

Section titled “POST /exchange/v1.0/mailboxes/{key}/permissions/clearAutoMapping”

POST /mailboxes/{key}/permissions/clearAutoMapping - clears Outlook auto-mapping for the mailbox at GET /mailboxes/{key} (Remove-MailboxPermission -ClearAutoMapping). This is a MAILBOX-level operation (its parameter set takes only -Identity + the switch, no -User/-AccessRights), so it gets its own route rather than the composite-ID DELETE /permissions/{permissionId}. Returns 204.

Backing cmdlet: Remove-MailboxPermission. Role: MailboxPermission.ReadWrite (Pro).

Parameter In Type Required Description
bypassMasterAccountSid query bool (switch)
ignoreDefaultScope query bool (switch)
dryRun query bool (switch)

POST /exchange/v1.0/mailboxes/{key}/permissions/resetDefault

Section titled “POST /exchange/v1.0/mailboxes/{key}/permissions/resetDefault”

POST /mailboxes/{key}/permissions/resetDefault - resets the mailbox’s “Default” permission entry to its out-of-box value for the mailbox at GET /mailboxes/{key} (Remove-MailboxPermission -ResetDefault). Mailbox-level (no -User/-AccessRights), so a dedicated route. Returns 204.

Backing cmdlet: Remove-MailboxPermission. Role: MailboxPermission.ReadWrite (Pro).

Parameter In Type Required Description
ignoreDefaultScope query bool (switch)
dryRun query bool (switch)

DELETE /exchange/v1.0/mailboxes/{key}/permissions/{permissionId}

Section titled “DELETE /exchange/v1.0/mailboxes/{key}/permissions/{permissionId}”

DELETE /mailboxes/{key}/permissions/{permissionId} - removes a mailbox ACE by its composite ID (the same ID surfaced by GET /mailboxes/{key}/permissions: “{Identity}|{User}|{AccessRights}” e.g. [email protected]|[email protected]|FullAccess). The URL’s {key} is authoritative for the mailbox identity; the Identity prefix in the composite ID is ignored. Remaining cmdlet switches (Deny, GroupMailbox, IgnoreDefaultScope, BypassMasterAccountSid, SoftDeletedMailbox, InheritanceType) are query params. -ClearAutoMapping / -ResetDefault are slice 1b own-action endpoints.

Backing cmdlet: Remove-MailboxPermission. Role: MailboxPermission.ReadWrite (Pro).

Parameter In Type Required Description
inheritanceType query string
deny query bool (switch)
groupMailbox query bool (switch)
ignoreDefaultScope query bool (switch)
bypassMasterAccountSid query bool (switch)
softDeletedMailbox query bool (switch)
dryRun query bool (switch)

Remove a permission from the mailbox at GET /mailboxes/{key}

Section titled “Remove a permission from the mailbox at GET /mailboxes/{key}”

Revokes an ACE by its composite ID - the same ID surfaced by GET /mailboxes/{key}/permissions (shape: {mailboxIdentity}|{user}|{accessRights}). The URL {key} is authoritative for the mailbox identity; the Identity prefix inside the composite ID is informational. Returns 204.

DELETE /exchange/v1.0/mailboxes/{key}/permissions/{permissionId} HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 204 No Content

Notes: URL-encode the composite ID - the | separators must be escaped (%7C). The SPA Copy-as-curl button handles this automatically.

Related: GET /exchange/v1.0/mailboxes/{key}/permissions, POST /exchange/v1.0/mailboxes/{key}/permissions

GET /exchange/v1.0/mailboxes/{key}/recipientPermissions

Section titled “GET /exchange/v1.0/mailboxes/{key}/recipientPermissions”

Sub-resource of the mailboxes at GET /mailboxes/{key} - list SendAs permissions. Backed by Get-RecipientPermission. Distinct ACL family from /permissions.

Backing cmdlet: Get-RecipientPermission. Role: MailboxPermission.Read (Community).

Parameter In Type Required Description
trustee query string Filter the returned SendAs grants to a single trustee (the principal granted SendAs). Maps -Trustee on Get-RecipientPermission.

Sub-resource of the mailbox at GET /mailboxes/{key} - lists the SendAs (recipient) permissions granted on the mailbox. This is a distinct ACL family from /mailboxes/{key}/permissions and is backed by Get-RecipientPermission.

GET /exchange/v1.0/mailboxes/{key}/recipientPermissions HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"@odata.context": "http://localhost:5043/exchange/v1.0/$metadata#Collection(ExchangeApi.RecipientPermission)",
"value": [
{
"Id": "[email protected]|NT AUTHORITY\\SELF|SendAs",
"Identity": "[email protected]",
"Trustee": "NT AUTHORITY\\SELF",
"TrusteeUpn": "NT AUTHORITY\\SELF",
"AccessControlType": "Allow",
"AccessRights": [
"SendAs"
],
"IsInherited": false,
"InheritanceType": "None",
"PrimarySmtpAddress": null,
"TrusteeSidString": "S-1-5-10",
"TrusteeWithPrimarySmtpAddress": null
}
]
}

Related: GET /exchange/v1.0/mailboxes/{key}, GET /exchange/v1.0/mailboxes/{key}/permissions, POST /exchange/v1.0/mailboxes/{key}/recipientPermissions

POST /exchange/v1.0/mailboxes/{key}/recipientPermissions

Section titled “POST /exchange/v1.0/mailboxes/{key}/recipientPermissions”

POST /mailboxes/{key}/recipientPermissions - grants SendAs via Add-RecipientPermission. The cmdlet’s only valid AccessRights value is SendAs, hard-coded here per MS Learn docs. Audit 2026-05-22 H: entity-style URL returns 201 + Location.

Backing cmdlet: Add-RecipientPermission. Role: Recipient.ReadWrite (Pro).

Parameter In Type Required Description
trustee body string yes
dryRun query bool (switch)

Sub-resource of the mailbox at GET /mailboxes/{key}/recipientPermissions - Add-RecipientPermission requires a trustee. Omitting it returns the canonical 400 envelope.

POST /exchange/v1.0/mailboxes/{key}/recipientPermissions HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{}
HTTP/1.1 400 Bad Request
{
"error": {
"code": "BadRequest",
"message": "The required field 'trustee' is missing.",
"target": "trustee"
},
"correlationId": "0HN7Q4ABCDEF0:00000004"
}

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes/{key}/recipientPermissions

Sub-resource of the mailbox at GET /mailboxes/{key}/recipientPermissions - grants SendAs via Add-RecipientPermission. trustee is required; AccessRights is always SendAs. Returns 201 + Location.

POST /exchange/v1.0/mailboxes/{key}/recipientPermissions HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"trustee": "[email protected]"
}
HTTP/1.1 201 Created
Location: /exchange/v1.0/mailboxes/exonaut-sample-mailboxes/recipientPermissions/exonaut-sample-mailboxes%7Cdelegate%40contoso.com%7CSendAs
{
"id": "exonaut-sample-mailboxes|[email protected]|SendAs",
"identity": "exonaut-sample-mailboxes",
"trustee": "[email protected]",
"accessRights": [
"SendAs"
]
}

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes/{key}/recipientPermissions, GET /exchange/v1.0/mailboxes

DELETE /exchange/v1.0/mailboxes/{key}/recipientPermissions/{permissionId}

Section titled “DELETE /exchange/v1.0/mailboxes/{key}/recipientPermissions/{permissionId}”

DELETE /mailboxes/{key}/recipientPermissions/{permissionId} - revokes SendAs by composite ID (same shape as GET /mailboxes/{key}/recipientPermissions: “{Identity}|{Trustee}|{AccessRights}”). AccessRights is always SendAs per MS docs; we extract Trustee from the composite ID.

Backing cmdlet: Remove-RecipientPermission. Role: Recipient.ReadWrite (Pro).

Parameter In Type Required Description
deny query bool (switch)
multiTrustees query string
skipDomainValidationForMailContact query bool (switch)
skipDomainValidationForMailUser query bool (switch)
skipDomainValidationForSharedMailbox query bool (switch)
dryRun query bool (switch)

Sub-resource of the mailbox at GET /mailboxes/{key}/recipientPermissions - revokes SendAs by composite ID ‘{Identity}|{Trustee}|SendAs’ via Remove-RecipientPermission. Returns 204.

DELETE /exchange/v1.0/mailboxes/{key}/recipientPermissions/{permissionId} HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
HTTP/1.1 204 No Content

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes/{key}/recipientPermissions

GET /exchange/v1.0/mailboxes/{key}/regionalConfiguration

Section titled “GET /exchange/v1.0/mailboxes/{key}/regionalConfiguration”

Get-MailboxRegionalConfiguration - timezone, language, date/time formats.

Backing cmdlet: Get-MailboxRegionalConfiguration. Role: Mailbox.Read (Community).

Sub-resource of the mailbox at GET /mailboxes/{key} - returns the mailbox’s regional settings: language, time zone, and date/time formats.

GET /exchange/v1.0/mailboxes/{key}/regionalConfiguration HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"identity": "john.woods",
"mailboxOwnerId": null,
"language": "en-US",
"timeZone": "GTB Standard Time",
"dateFormat": "M/d/yyyy",
"timeFormat": "h:mm tt",
"defaultFolderNameMatchingUserLanguage": false
}

Related: GET /exchange/v1.0/mailboxes/{key}

PATCH /exchange/v1.0/mailboxes/{key}/regionalConfiguration

Section titled “PATCH /exchange/v1.0/mailboxes/{key}/regionalConfiguration”

PATCH /mailboxes/{key}/regionalConfiguration → Set-MailboxRegionalConfiguration.

Backing cmdlet: Set-MailboxRegionalConfiguration. Role: Mailbox.ReadWrite (Pro).

Parameter In Type Required Description
archive body boolean (switch)
dateFormat body
language body
localizeDefaultFolderName body boolean (switch)
timeFormat body
timeZone body
useCustomRouting body boolean (switch)
dryRun query bool (switch)

Sub-resource of the mailbox at GET /mailboxes/{key}/regionalConfiguration - partial update via Set-MailboxRegionalConfiguration. Returns 200 + the updated configuration.

PATCH /exchange/v1.0/mailboxes/{key}/regionalConfiguration HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"language": "en-US",
"timeZone": "Pacific Standard Time",
"dateFormat": "M/d/yyyy"
}
HTTP/1.1 200 OK
{
"Identity": "exonaut-sample-mailboxes",
"Language": "en-US",
"TimeZone": "Pacific Standard Time",
"DateFormat": "M/d/yyyy"
}

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes/{key}/regionalConfiguration, GET /exchange/v1.0/mailboxes

POST /exchange/v1.0/mailboxes/{key}/restore

Section titled “POST /exchange/v1.0/mailboxes/{key}/restore”

POST /mailboxes/{key}/restore - recover a soft-deleted mailbox (within the 30-day window) via Undo-SoftDeletedMailbox. {key} is the soft-deleted mailbox identity (GUID / SMTP) - list candidates with GET /mailboxes?softDeletedMailbox=true. Optional body { “displayName”: “…”, “name”: “…” } renames on recovery. 204 on success; ?dryRun=true previews (-WhatIf).

The account-recreation parameter set (-Password / -WindowsLiveID) and -PublicFolder are intentionally not exposed (see ).

Backing cmdlet: Undo-SoftDeletedMailbox. Role: Mailbox.ReadWrite (Pro).

Parameter In Type Required Description
displayName body
name body
dryRun query bool (switch)

Sub-resource of the mailbox at GET /mailboxes/{key} - bound action that recovers a soft-deleted mailbox (within the 30-day window) via Undo-SoftDeletedMailbox. {key} is the soft-deleted mailbox identity (GUID/SMTP); list candidates with GET /mailboxes?softDeletedMailbox=true. Optional body { displayName, name } renames on recovery. Returns 204. Pass ?dryRun=true to preview (-WhatIf). The account-recreation parameter set (-Password / -WindowsLiveID) and -PublicFolder are intentionally not exposed.

POST /exchange/v1.0/mailboxes/{key}/restore HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"displayName": "Exonaut Recovered Mailbox"
}
HTTP/1.1 204 No Content

Notes: Live-verified full sacrificial cycles 2026-05-29 for BOTH a regular UserMailbox and a SharedMailbox: create (201) -> Remove-Mailbox (204, soft-delete) -> POST …/restore returned 204 (Undo-SoftDeletedMailbox) -> back live -> cleaned up. Restore by the mailbox’s original Guid / UserPrincipalName / PrimarySmtpAddress - NOT by the portal’s ‘ExRemoved-…@’ display address (Undo-SoftDeletedMailbox rejects that form with ‘doesn’t exist’). List the candidates first via GET /mailboxes?softDeletedMailbox=true. Body fields are Wiki-valid; displayName value is illustrative.

Related: GET /exchange/v1.0/mailboxes, DELETE /exchange/v1.0/mailboxes/{key}

GET /exchange/v1.0/mailboxes/{key}/spellingConfiguration

Section titled “GET /exchange/v1.0/mailboxes/{key}/spellingConfiguration”

Get-MailboxSpellingConfiguration - OWA spelling preferences.

Backing cmdlet: Get-MailboxSpellingConfiguration. Role: Mailbox.Read (Community).

Get a mailbox’s OWA spelling preferences

Section titled “Get a mailbox’s OWA spelling preferences”

Sub-resource of the mailbox at GET /mailboxes/{key} - returns the Outlook on the web spell-check preferences for the mailbox, including the dictionary language and check-before-send setting.

GET /exchange/v1.0/mailboxes/{key}/spellingConfiguration HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"identity": "john.woods",
"mailboxOwnerId": null,
"checkBeforeSend": false,
"dictionaryLanguage": "EnglishUnitedStates",
"ignoreMixedDigits": false,
"ignoreUppercase": false
}

Related: GET /exchange/v1.0/mailboxes/{key}

PATCH /exchange/v1.0/mailboxes/{key}/spellingConfiguration

Section titled “PATCH /exchange/v1.0/mailboxes/{key}/spellingConfiguration”

PATCH /mailboxes/{key}/spellingConfiguration → Set-MailboxSpellingConfiguration.

Backing cmdlet: Set-MailboxSpellingConfiguration. Role: Mailbox.ReadWrite (Pro).

Parameter In Type Required Description
checkBeforeSend body
dictionaryLanguage body
ignoreMixedDigits body
ignoreUppercase body
dryRun query bool (switch)

Sub-resource of the mailbox at GET /mailboxes/{key}/spellingConfiguration - partial update via Set-MailboxSpellingConfiguration. Returns 200 + the updated configuration.

PATCH /exchange/v1.0/mailboxes/{key}/spellingConfiguration HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"checkBeforeSend": true,
"dictionaryLanguage": "EnglishUnitedStates",
"ignoreUppercase": true
}
HTTP/1.1 200 OK
{
"Identity": "exonaut-sample-mailboxes",
"CheckBeforeSend": true,
"DictionaryLanguage": "EnglishUnitedStates",
"IgnoreUppercase": true
}

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes/{key}/spellingConfiguration, GET /exchange/v1.0/mailboxes

POST /exchange/v1.0/mailboxes/{key}/startManagedFolderAssistant

Section titled “POST /exchange/v1.0/mailboxes/{key}/startManagedFolderAssistant”

POST /mailboxes/{key}/startManagedFolderAssistant - manually trigger the Managed Folder Assistant (MRM / retention-tag processing) for this mailbox via Start-ManagedFolderAssistant. 204 on success; ?dryRun=true previews (-WhatIf) without running.

Only the base (Identity / default parameter set) trigger is exposed. -FullCrawl and the assistant-specific switches (-HoldCleanup, -AdaptiveScope, -ComplianceJob, …) are intentionally NOT surfaced: -FullCrawl is absent from the default Identity set and lives only in the 7 assistant-specific sets, each gated by a unique discriminator switch - so sending -Identity -FullCrawl without a discriminator is an unresolvable parameter set (“Parameter set cannot be resolved…”). The discriminators each change the operation’s semantics (hold cleanup, adaptive scope, compliance job, …) and are not a faithful “full re-scan”, so the switch is dropped rather than paired with a semantic-changing discriminator. (Adversarial review finding, 2026-05-29.)

Backing cmdlet: Start-ManagedFolderAssistant. Role: Mailbox.ReadWrite (Pro).

Parameter In Type Required Description
dryRun query bool (switch)

Trigger the Managed Folder Assistant for a mailbox

Section titled “Trigger the Managed Folder Assistant for a mailbox”

Sub-resource of the mailbox at GET /mailboxes/{key} - bound action that manually runs the Managed Folder Assistant (MRM / retention-tag processing) for the mailbox via Start-ManagedFolderAssistant (base Identity form). Returns 204. Pass ?dryRun=true to preview (-WhatIf).

POST /exchange/v1.0/mailboxes/{key}/startManagedFolderAssistant HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 204 No Content

Notes: Live dry-run verified 2026-05-29: POST …/startManagedFolderAssistant?dryRun=true returned 200 with whatIfOutput [‘What if: Starting Managed Folder Assistant.’]. The real (non-dryRun) call returns 204.

Related: GET /exchange/v1.0/mailboxes/{key}

GET /exchange/v1.0/mailboxes/{key}/statistics

Section titled “GET /exchange/v1.0/mailboxes/{key}/statistics”

GET /mailboxes/{key}/statistics - mailbox-level size and item counts. Backed by Get-MailboxStatistics. Declared in EDM as the bound function ExchangeApi.getStatistics(); this Graph-style path is the friendlier surface for SPA clients.

Backing cmdlet: Get-MailboxStatistics. Role: Mailbox.Stats.Read (Community).

Parameter In Type Required Description
archive query bool (switch) Return statistics for the archive mailbox associated with this mailbox instead of the primary. Maps -Archive on Get-MailboxStatistics.
includeSoftDeletedRecipients query bool (switch) Include soft-deleted (still-recoverable) mailboxes in the results. EXO-only, maps Get-MailboxStatistics -IncludeSoftDeletedRecipients.
includeMoveHistory query bool (switch) Include the history of any completed move request (status, target database, bad items, durations, failure codes). Maps -IncludeMoveHistory on Get-MailboxStatistics.

Sub-resource of the mailbox at GET /mailboxes/{key}. Returns aggregate storage statistics - total item count, deleted-item count, total size in human-readable form, last logon time. Backed by Get-MailboxStatistics. Computed on-demand by EXO; can take 1-3s for large mailboxes.

GET /exchange/v1.0/mailboxes/{key}/statistics HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"displayName": "John Woods",
"mailboxGuid": "a07b03d2-3759-4d44-ab31-f42b82a8f22d",
"identity": "a07b03d2-3759-4d44-ab31-f42b82a8f22d",
"ownerADGuid": "88239689-1aac-40b1-9a94-5b144bbc3dc7",
"externalDirectoryOrganizationId": "00000000-0000-0000-0000-000000000000",
"dataEncryptionPolicyId": "b01a6b9a-4d66-44cd-8bed-5c410755fe09",
"legacyDN": "/o=ExchangeLabs/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=f59ccb47889e464b89a302bf55708d82-a003556f-d8",
"database": "EURPR02DG600-db513",
"databaseName": "EURPR02DG600-db513",
"serverName": "VI0PR02MB10511",
"totalItemSize": "180.6 MB (189,404,336 bytes)",
"totalDeletedItemSize": "1.425 MB (1,493,841 bytes)",
"itemCount": 1246,
"deletedItemCount": 21,
"associatedItemCount": 88,
"systemMessageCount": 9843,
"systemMessageSize": "69.91 MB (73,308,124 bytes)",
"backupMessageCount": 0,
"backupMessageSize": "0 B (0 bytes)",
"databaseIssueWarningQuota": "1.899 GB (2,039,480,320 bytes)",
"databaseProhibitSendQuota": "2 GB (2,147,483,648 bytes)",
"databaseProhibitSendReceiveQuota": "2.3 GB (2,469,396,480 bytes)",
"systemMessageSizeWarningQuota": "69 GB (74,088,185,856 bytes)",
"systemMessageSizeShutoffQuota": "70 GB (75,161,927,680 bytes)",
"backupMessageSizeWarningQuota": "69 GB (74,088,185,856 bytes)",
"backupMessageSizeShutoffQuota": "70 GB (75,161,927,680 bytes)",
"mailboxMessagesPerFolderCountWarningQuota": 900000,
"mailboxMessagesPerFolderCountReceiveQuota": 1000000,
"dumpsterMessagesPerFolderCountWarningQuota": 2750000,
"dumpsterMessagesPerFolderCountReceiveQuota": 3000000,
"folderHierarchyChildrenCountWarningQuota": 9000,
"folderHierarchyChildrenCountReceiveQuota": 10000,
"folderHierarchyDepthWarningQuota": 250,
"folderHierarchyDepthReceiveQuota": 300,
"foldersCountWarningQuota": 200000,
"foldersCountReceiveQuota": 250000,
"namedPropertiesCountQuota": 16384,
"lastLogonTime": "2026-05-23T06:28:01.020544+03:00",
"lastLogoffTime": "2026-05-23T06:29:01.0447448+03:00",
"lastInteractionTime": "2026-05-21T22:45:53.4787157+03:00",
"lastUserActionTime": "2026-05-21T15:45:42.8510826+03:00",
"lastTableSizeStatisticsUpdate": "2026-05-23T08:13:28.6178664+03:00",
"lastLoggedOnUserAccount": null,
"lastUserAccessTime": null,
"bigFunnelIsEnabled": true,
"bigFunnelSemanticSearchEnabled": true,
"bigFunnelMessageCount": 1634,
"bigFunnelIndexedCount": 1629,
"bigFunnelPartiallyIndexedCount": 5,
"bigFunnelNotIndexedCount": 0,
"bigFunnelCorruptedCount": 0,
"bigFunnelStaleCount": 0,
"bigFunnelIndexedSize": "200.3 MB (210,044,183 bytes)",
"bigFunnelNotIndexedSize": "0 B (0 bytes)",
"semanticSearchNeedsToEnable": true,
"semanticSearchEnableTime": "2026-04-09T02:38:53.4153116+03:00",
"tenantCopilotLicenseStatus": 1,
"storageLimitStatus": null,
"mailboxType": "Private",
"mailboxTypeDetail": "UserMailbox",
"isEncrypted": true,
"isArchiveMailbox": false,
"isQuarantined": false,
"isDatabaseCopyActive": true,
"isValid": true,
"disconnectReason": null,
"disconnectDate": null,
"quarantineClients": "",
"moveHistory": null,
"isMoveDestination": false,
"isAbandonedMoveDestination": false,
"needsToMove": "None",
"delayedDeletionFirstEntryTime": "2026-04-25T07:15:34.9338015+03:00",
"delayedDeletionMessageCount": 2607
}

Related: GET /exchange/v1.0/mailboxes/{key}, GET /exchange/v1.0/mailboxes/{key}/folderStatistics

GET /exchange/v1.0/mailboxes/{key}/sweepRules

Section titled “GET /exchange/v1.0/mailboxes/{key}/sweepRules”

Sub-resource of the mailboxes at GET /mailboxes/{key} - list SweepRule entries (OWA Sweep).

Backing cmdlet: Get-SweepRule. Role: Mailbox.Read (Community).

Parameter In Type Required Description
provider query string Filter by the storage provider that created the sweep rules (e.g. Exchange16 for OWA). Maps -Provider on Get-SweepRule.

Sub-resource of the mailbox at GET /mailboxes/{key} - lists the OWA Sweep rules configured on the mailbox. Returns an empty array when no sweep rules exist.

GET /exchange/v1.0/mailboxes/{key}/sweepRules HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
[]

Related: GET /exchange/v1.0/mailboxes/{key}, GET /exchange/v1.0/mailboxes/{key}/inboxRules, POST /exchange/v1.0/mailboxes/{key}/sweepRules

POST /exchange/v1.0/mailboxes/{key}/sweepRules

Section titled “POST /exchange/v1.0/mailboxes/{key}/sweepRules”

POST /mailboxes/{key}/sweepRules - creates a per-mailbox sweep rule via New-SweepRule. provider is required (OWA uses Exchange16).

Backing cmdlet: New-SweepRule. Role: Mailbox.ReadWrite (Pro).

Parameter In Type Required Description
name body yes
provider body yes
destinationFolder body
enabled body
exceptIfFlagged body
exceptIfPinned body
keepForDays body
keepLatest body
sender body
sourceFolder body
systemCategory body
dryRun query bool (switch)

Create a sweep rule without the required provider

Section titled “Create a sweep rule without the required provider”

Sub-resource of the mailbox at GET /mailboxes/{key}/sweepRules - New-SweepRule requires both name and provider. Omitting provider returns the canonical 400 envelope.

POST /exchange/v1.0/mailboxes/{key}/sweepRules HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"name": "exonaut-sample-mailboxes-sweep",
"sender": "[email protected]",
"keepForDays": 10
}
HTTP/1.1 400 Bad Request
{
"error": {
"code": "BadRequest",
"message": "The required field 'provider' is missing.",
"target": "provider"
},
"correlationId": "0HN7Q4ABCDEF0:00000003"
}

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes/{key}/sweepRules

Sub-resource of the mailbox at GET /mailboxes/{key}/sweepRules - creates a per-mailbox sweep rule via New-SweepRule. name + provider are required (OWA uses Exchange16). Returns 201 + Location.

POST /exchange/v1.0/mailboxes/{key}/sweepRules HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"name": "exonaut-sample-mailboxes-sweep",
"provider": "Exchange16",
"sender": "[email protected]",
"sourceFolder": "Inbox",
"keepForDays": 10
}
HTTP/1.1 201 Created
Location: /exchange/v1.0/mailboxes/exonaut-sample-mailboxes/sweepRules/exonaut-sample-mailboxes%5C1
{
"Identity": "exonaut-sample-mailboxes\\1",
"Name": "exonaut-sample-mailboxes-sweep",
"Provider": "Exchange16",
"Sender": "[email protected]",
"SourceFolder": "Inbox",
"KeepForDays": 10,
"Enabled": true
}

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes/{key}/sweepRules, GET /exchange/v1.0/mailboxes

GET /exchange/v1.0/mailboxes/{key}/sweepRules/{ruleId}

Section titled “GET /exchange/v1.0/mailboxes/{key}/sweepRules/{ruleId}”

Sub-resource of the mailboxes at GET /mailboxes/{key} - single SweepRule by composite ruleId.

Backing cmdlet: Get-SweepRule. Role: Mailbox.Read (Community).

PATCH /exchange/v1.0/mailboxes/{key}/sweepRules/{ruleId}

Section titled “PATCH /exchange/v1.0/mailboxes/{key}/sweepRules/{ruleId}”

Sub-resource of the mailboxes at GET /mailboxes/{key} - partial update of a SweepRule.

Backing cmdlet: Set-SweepRule. Role: Mailbox.ReadWrite (Pro).

Parameter In Type Required Description
destinationFolder body
enabled body
exceptIfFlagged body
exceptIfPinned body
keepForDays body
keepLatest body
name body
provider body
sender body
sourceFolder body
systemCategory body
dryRun query bool (switch)

Sub-resource of the mailbox at GET /mailboxes/{key}/sweepRules/{ruleId} - partial update via Set-SweepRule. Returns 200 + the updated rule.

PATCH /exchange/v1.0/mailboxes/{key}/sweepRules/{ruleId} HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"keepForDays": 30,
"enabled": true
}
HTTP/1.1 200 OK
{
"Identity": "exonaut-sample-mailboxes\\1",
"Name": "exonaut-sample-mailboxes-sweep",
"KeepForDays": 30,
"Enabled": true
}

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes/{key}/sweepRules/{ruleId}, GET /exchange/v1.0/mailboxes/{key}/sweepRules

DELETE /exchange/v1.0/mailboxes/{key}/sweepRules/{ruleId}

Section titled “DELETE /exchange/v1.0/mailboxes/{key}/sweepRules/{ruleId}”

Sub-resource of the mailboxes at GET /mailboxes/{key} - remove a single SweepRule by composite ruleId.

Backing cmdlet: Remove-SweepRule. Role: Mailbox.ReadWrite (Pro).

Parameter In Type Required Description
dryRun query bool (switch)

Sub-resource of the mailbox at GET /mailboxes/{key}/sweepRules/{ruleId} - removes a single sweep rule via Remove-SweepRule. Returns 204.

DELETE /exchange/v1.0/mailboxes/{key}/sweepRules/{ruleId} HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
HTTP/1.1 204 No Content

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/mailboxes/{key}/sweepRules

Sub-resource of the mailboxes at GET /mailboxes/{key} - the Exchange User attached to this mailbox.

Backing cmdlet: Get-User. Role: User.Read (Community).

Get the Exchange user attached to a mailbox

Section titled “Get the Exchange user attached to a mailbox”

Sub-resource of the mailbox at GET /mailboxes/{key} - returns the underlying Exchange User object (directory attributes, account state, and recipient typing) backing the mailbox identified by {key}.

GET /exchange/v1.0/mailboxes/{key}/user HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"@odata.context": "http://localhost:5043/exchange/v1.0/$metadata#users/$entity",
"Id": "john.woods",
"UserPrincipalName": "[email protected]",
"Name": "John Woods",
"DisplayName": "John Woods",
"SimpleDisplayName": "",
"PhoneticDisplayName": "",
"FirstName": "",
"LastName": "",
"Initials": "",
"MailNickname": null,
"SamAccountName": "$B6VJH0-DDO3526KIOHC",
"WindowsEmailAddress": "[email protected]",
"Guid": "c80fb3b2-8bd1-4d1f-bab5-e06d74c3377a",
"ExternalDirectoryObjectId": "d30c0254-af7e-4c04-a884-4265976e20b0",
"DistinguishedName": "CN=John Woods,OU=contoso.onmicrosoft.com,OU=Microsoft Exchange Hosted Organizations,DC=EURPR01A017,DC=PROD,DC=OUTLOOK,DC=COM",
"Identity": "john.woods",
"ImmutableId": null,
"AccountDisabled": true,
"RemotePowerShellEnabled": true,
"IsResource": false,
"IsShared": false,
"IsSecurityPrincipal": true,
"IsLinked": false,
"IsSoftDeletedByDisable": false,
"IsSoftDeletedByRemove": false,
"IsInactiveMailbox": false,
"Title": "",
"Department": "",
"Company": "",
"Office": "",
"Manager": null,
"AssistantName": "",
"Phone": "",
"MobilePhone": "",
"HomePhone": "",
"Fax": "",
"Pager": "",
"OtherTelephone": null,
"OtherFax": null,
"OtherHomePhone": null,
"TelephoneAssistant": "",
"WebPage": "",
"Notes": "",
"StreetAddress": "",
"City": "",
"StateOrProvince": "",
"PostalCode": "",
"PostOfficeBox": null,
"CountryOrRegion": null,
"GeoCoordinates": null,
"RecipientType": "UserMailbox",
"RecipientTypeDetails": "SharedMailbox",
"OrganizationalUnit": "eurpr01a017.prod.outlook.com/Microsoft Exchange Hosted Organizations/contoso.onmicrosoft.com",
"AuthenticationPolicy": null,
"AuthenticationFlowPolicy": null,
"UserAccountControl": "AccountDisabled, NormalAccount",
"SeniorityIndex": null,
"VIP": false,
"WhenCreated": "2026-03-31T17:57:27+03:00",
"WhenChanged": "2026-05-22T00:31:32+03:00",
"WhenCreatedUTC": "2026-03-31T14:57:27Z",
"WhenChangedUTC": "2026-05-21T21:31:32Z",
"StsRefreshTokensValidFrom": "2026-03-16T17:46:02+02:00",
"AdministrativeUnits": [],
"AgentIdentityBlueprintId": "",
"AllowUMCallsFromNonUsers": "SearchEnabled",
"ArchiveRelease": "None",
"BlockedSendersHash": null,
"BulkMailEnabled": false,
"CanHaveCloudCache": false,
"CertificateSubject": [],
"CloudCacheAccountType": "None",
"CloudCacheProvider": 0,
"CloudCacheRemoteEmailAddress": "",
"CloudCacheScope": 0,
"CloudCacheUserName": null,
"ConsumerNetID": null,
"CreationType": "None",
"DefaultMailboxWorkloadsMask": null,
"DesiredMailboxWorkloads": null,
"DesiredMailboxWorkloadsGracePeriod": null,
"DesiredMailboxWorkloadsModified": null,
"DirectReports": [],
"DirectReportsWithDisplayName": [],
"EXOModuleEnabled": true,
"EnforcedTimestamps": "",
"ExchangeObjectId": "79b9957f-760f-4c95-a732-917c14b4a9fd",
"GrantSendOnBehalfTo": [],
"InPlaceHoldsRaw": [],
"InformationBarrierSegments": [],
"IsAgenticUser": false,
"IsCloudCache": false,
"IsCloudCacheBlocked": false,
"IsCloudCacheProvisioningComplete": false,
"IsDirSynced": false,
"Languages": [
"en-US"
],
"LegacyExchangeDN": "/o=ExchangeLabs/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=b95cae9b8f1d4b0eae92f8afad103fc9-john.woods",
"LegalAgeGroup": null,
"LinkedMasterAccount": "NT AUTHORITY\\SELF",
"M365BackupState": "None",
"MailboxLocations": [
"1;b496f793-0cfa-4e78-a703-df5ee6a51051;Primary;eurprd02.prod.outlook.com;9b2bf06b-6c7c-4221-adb7-eecf47f237f3"
],
"MailboxProvisioningConstraint": null,
"MailboxProvisioningPreferences": [],
"MailboxRegion": null,
"MailboxRegionLastUpdateTime": null,
"MailboxRegionSuffix": "None",
"MailboxRelease": "None",
"MailboxWorkloads": "Mail, Calendar, Contacts, Substrate",
"ManagerWithDisplayName": [],
"MicrosoftOnlineServicesID": "[email protected]",
"NetID": "10032005B18E4C45",
"OrganizationId": "EURPR01A017.PROD.OUTLOOK.COM/Microsoft Exchange Hosted Organizations/contoso.onmicrosoft.com - EURPR01A017.PROD.OUTLOOK.COM/ConfigurationUnits/contoso.onmicrosoft.com/Configuration",
"OrganizationalUnitRoot": "contoso.onmicrosoft.com",
"PersistedCapabilities": [
"BPOS_S_Standard"
],
"PitrCopyIntervalInSeconds": 0,
"PitrEnabled": false,
"PitrOffboardedTimestamp": null,
"PitrPaused": false,
"PitrPausedTimestamp": null,
"PitrState": "None",
"PreviousRecipientTypeDetails": "None",
"ResetPasswordOnNextLogon": false,
"RoamingOptIn": false,
"SKUAssigned": false,
"SafeRecipientsHash": null,
"SafeSendersHash": null,
"SharingAnonymousIdentities": "",
"Sid": "S-1-5-21-701439281-3420630407-1831248095-40828748",
"UMCallingLineIds": [],
"UMDialPlan": null,
"UMDtmfMap": [],
"UpgradeDetails": null,
"UpgradeMessage": null,
"UpgradeRequest": "None",
"UpgradeStage": null,
"UpgradeStageTimeStamp": null,
"UpgradeStatus": "None",
"UserIdentityParent": "",
"UserPersona": "InternalMember",
"UserType": "Member",
"VoiceMailSettings": [],
"WhenIBSegmentChanged": null,
"WhenSoftDeleted": null,
"WindowsLiveID": "[email protected]"
}

Related: GET /exchange/v1.0/mailboxes/{key}, GET /exchange/v1.0/users/{key}

?dryRun=true previews of any write stay on Community.