Skip to content

offlineAddressBooks

Offline Address Books. Downloadable address book copies Outlook caches for offline use. The offlineAddressBooks entity set lives under /exchange/v1.0/offlineAddressBooks in the Address book category.

Fact Value
Path /exchange/v1.0/offlineAddressBooks
Category Address book
Tier Tier 3, Mail flow
Read role MailFlow.Read.All (Community)
Write role MailFlow.ReadWrite.All (Pro)
Backing cmdlets Get-OfflineAddressBook, Set-OfflineAddressBook, New-OfflineAddressBook, Remove-OfflineAddressBook
Method Path Synopsis Role Plan
GET /exchange/v1.0/offlineAddressBooks List offlineAddressBooks entries. MailFlow.Read Community
POST /exchange/v1.0/offlineAddressBooks Create a new offlineAddressBooks entry. Body keys map 1:1 to the cmdlet’s parameter names (camelCased). Returns 201 + Location + the freshly-fetched entity. Use ?dryRun=true to map to -WhatIf without applying. MailFlow.ReadWrite Pro
GET /exchange/v1.0/offlineAddressBooks/{key} Get a single offlineAddressBooks entry by Identity. MailFlow.Read Community
PATCH /exchange/v1.0/offlineAddressBooks/{key} Partial update of the offlineAddressBooks at /offlineAddressBooks/{key}. Only body fields present are passed to the cmdlet. Returns 200 + the post-Set entity (rename-aware re-fetch when name is in the body). MailFlow.ReadWrite Pro
DELETE /exchange/v1.0/offlineAddressBooks/{key} DELETE /offlineAddressBooks/{key}. Use ?force=true to skip validation prompts (Remove-OfflineAddressBook -Force). MailFlow.ReadWrite Pro

List offlineAddressBooks entries.

Backing cmdlet: Get-OfflineAddressBook. Role: MailFlow.Read (Community).

Stub auto-generated example for the offlineAddressBooks collection. Backing cmdlet: Get-OfflineAddressBook. Live-verify with ?$top=3&$select=Id,Name and replace the synthetic body before promoting to Tier 1.

GET /exchange/v1.0/offlineAddressBooks?$top=3 HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"@odata.context": "http://localhost:5043/exchange/v1.0/$metadata#offlineAddressBooks",
"value": []
}

Notes: Illustrative example derived from the cmdlet documentation, not a live capture: field names are real, values are placeholders.

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

Create a new offlineAddressBooks entry. Body keys map 1:1 to the cmdlet’s parameter names (camelCased). Returns 201 + Location + the freshly-fetched entity. Use ?dryRun=true to map to -WhatIf without applying.

Backing cmdlet: New-OfflineAddressBook. Role: MailFlow.ReadWrite (Pro).

Parameter In Type Required Description
addressLists body yes
name body yes
diffRetentionPeriod body
isDefault body
dryRun query bool (switch)

Create fails when a required field is missing

Section titled “Create fails when a required field is missing”

New-OfflineAddressBook requires both name and addressLists. Omitting addressLists is rejected with a 400 before the cmdlet runs.

POST /exchange/v1.0/offlineAddressBooks HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"name": "exonaut-sample-offlineAddressBooks"
}
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"error": {
"code": "BadRequest",
"message": "The required field 'addressLists' is missing from the request body.",
"target": "addressLists"
},
"correlationId": "0HN8K2J4ABCDE: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/offlineAddressBooks

Creates a new offline address book (OAB) via New-OfflineAddressBook. Returns 201 with a Location header pointing at the new entry.

POST /exchange/v1.0/offlineAddressBooks HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"name": "exonaut-sample-offlineAddressBooks",
"addressLists": [
"\\Default Global Address List"
],
"diffRetentionPeriod": "30.00:00:00",
"isDefault": false
}
HTTP/1.1 201 Created
Location: /exchange/v1.0/offlineAddressBooks/exonaut-sample-offlineAddressBooks
{
"Id": "exonaut-sample-offlineAddressBooks",
"Identity": "exonaut-sample-offlineAddressBooks",
"Name": "exonaut-sample-offlineAddressBooks",
"AddressLists": [
"\\Default Global Address List"
],
"DiffRetentionPeriod": "30.00:00:00",
"IsDefault": false
}

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

Related: GET /exchange/v1.0/offlineAddressBooks

GET /exchange/v1.0/offlineAddressBooks/{key}

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

Get a single offlineAddressBooks entry by Identity.

Backing cmdlet: Get-OfflineAddressBook. Role: MailFlow.Read (Community).

Stub auto-generated example for GET /offlineAddressBooks/{key}. Backing cmdlet: Get-OfflineAddressBook with -Identity {key}. Returns the full entity body; 404 if the identity doesn’t resolve.

GET /exchange/v1.0/offlineAddressBooks/{key} HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"@odata.context": "http://localhost:5043/exchange/v1.0/$metadata#offlineAddressBooks/$entity"
}

Notes: Illustrative example derived from the cmdlet documentation, not a live capture: field names are real, values are placeholders.

Related: GET /exchange/v1.0/offlineAddressBooks

PATCH /exchange/v1.0/offlineAddressBooks/{key}

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

Partial update of the offlineAddressBooks at /offlineAddressBooks/{key}. Only body fields present are passed to the cmdlet. Returns 200 + the post-Set entity (rename-aware re-fetch when name is in the body).

Backing cmdlet: Set-OfflineAddressBook. Role: MailFlow.ReadWrite (Pro).

Parameter In Type Required Description
addressLists body
configuredAttributes body
diffRetentionPeriod body
fullOabDownloadPreventionThreshold body
isDefault body
name body
schedule body
versions body
zipOabFilesBeforeUploading body
dryRun query bool (switch)

Sub-resource of the offline address book at GET /offlineAddressBooks/{key} - partial update via Set-OfflineAddressBook. Only the body fields present are passed to the cmdlet; returns the post-Set entity.

PATCH /exchange/v1.0/offlineAddressBooks/{key} HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"diffRetentionPeriod": "45.00:00:00",
"isDefault": true,
"zipOabFilesBeforeUploading": true
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"Id": "exonaut-sample-offlineAddressBooks",
"Identity": "exonaut-sample-offlineAddressBooks",
"Name": "exonaut-sample-offlineAddressBooks",
"DiffRetentionPeriod": "45.00:00:00",
"IsDefault": true,
"ZipOabFilesBeforeUploading": 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/offlineAddressBooks

DELETE /exchange/v1.0/offlineAddressBooks/{key}

Section titled “DELETE /exchange/v1.0/offlineAddressBooks/{key}”

DELETE /offlineAddressBooks/{key}. Use ?force=true to skip validation prompts (Remove-OfflineAddressBook -Force).

Backing cmdlet: Remove-OfflineAddressBook. Role: MailFlow.ReadWrite (Pro).

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

Sub-resource of the offline address book at GET /offlineAddressBooks/{key} - removes the entry via Remove-OfflineAddressBook. Add ?force=true to skip validation prompts.

DELETE /exchange/v1.0/offlineAddressBooks/{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/offlineAddressBooks

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