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 |
Routes
Section titled “Routes”| 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 |
GET /exchange/v1.0/offlineAddressBooks
Section titled “GET /exchange/v1.0/offlineAddressBooks”List offlineAddressBooks entries.
Backing cmdlet: Get-OfflineAddressBook. Role: MailFlow.Read (Community).
List offlineAddressBooks
Section titled “List offlineAddressBooks”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.1Authorization: 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}
POST /exchange/v1.0/offlineAddressBooks
Section titled “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.
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.1Authorization: Bearer {token}Content-Type: application/json
{ "name": "exonaut-sample-offlineAddressBooks"}HTTP/1.1 400 Bad RequestContent-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
Create an offline address book
Section titled “Create an offline address book”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.1Authorization: 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 CreatedLocation: /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).
Get a single offlineAddressBooks entry
Section titled “Get a single offlineAddressBooks entry”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.1Authorization: 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) |
Update an offline address book
Section titled “Update an offline address book”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.1Authorization: Bearer {token}Content-Type: application/json
{ "diffRetentionPeriod": "45.00:00:00", "isDefault": true, "zipOabFilesBeforeUploading": true}HTTP/1.1 200 OKContent-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) |
Delete an offline address book
Section titled “Delete an offline address book”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.1Authorization: Bearer {token}Content-Type: application/jsonHTTP/1.1 204 No ContentNotes: 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.

