Skip to content

addressBookPolicies

Address Book Policies. Control which address lists each user can see. The addressBookPolicies entity set lives under /exchange/v1.0/addressBookPolicies in the Address book category.

Fact Value
Path /exchange/v1.0/addressBookPolicies
Category Address book
Tier Tier 3, Mail flow
Read role MailFlow.Read.All (Community)
Write role MailFlow.ReadWrite.All (Pro)
Backing cmdlets Get-AddressBookPolicy, Set-AddressBookPolicy, New-AddressBookPolicy, Remove-AddressBookPolicy
Method Path Synopsis Role Plan
GET /exchange/v1.0/addressBookPolicies List addressBookPolicies entries. MailFlow.Read Community
POST /exchange/v1.0/addressBookPolicies Create a new addressBookPolicies 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/addressBookPolicies/{key} Get a single addressBookPolicies entry by Identity. MailFlow.Read Community
PATCH /exchange/v1.0/addressBookPolicies/{key} Partial update of the addressBookPolicies at /addressBookPolicies/{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/addressBookPolicies/{key} Remove the addressBookPolicies at /addressBookPolicies/{key}. Returns 204 with no body. MailFlow.ReadWrite Pro

List addressBookPolicies entries.

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

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

GET /exchange/v1.0/addressBookPolicies?$top=3 HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"@odata.context": "http://localhost:5043/exchange/v1.0/$metadata#addressBookPolicies",
"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/addressBookPolicies/{key}

Create a new addressBookPolicies 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-AddressBookPolicy. Role: MailFlow.ReadWrite (Pro).

Parameter In Type Required Description
addressLists body yes
globalAddressList body yes
name body yes
offlineAddressBook body yes
roomList body yes
dryRun query bool (switch)

Create fails when a required field is missing

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

New-AddressBookPolicy requires name, addressLists, globalAddressList, offlineAddressBook, and roomList. Omitting any of them returns a 400 before the cmdlet is invoked.

POST /exchange/v1.0/addressBookPolicies HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"addressLists": [
"\\All Users"
],
"globalAddressList": "\\Default Global Address List",
"offlineAddressBook": "\\Default Offline Address Book",
"roomList": [
"\\All Rooms"
]
}
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"error": {
"code": "BadRequest",
"message": "The required field 'name' is missing from the request body.",
"target": "name"
},
"correlationId": "0HN7K2C9PQ3RV"
}

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

Related: GET /exchange/v1.0/addressBookPolicies

Creates a new GAL-segmentation address book policy via New-AddressBookPolicy. The policy bundles the address lists, GAL, offline address book, and room list a scoped set of users will see.

POST /exchange/v1.0/addressBookPolicies HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"name": "exonaut-sample-addressBookPolicies",
"addressLists": [
"\\All Users",
"\\All Contacts"
],
"globalAddressList": "\\Default Global Address List",
"offlineAddressBook": "\\Default Offline Address Book",
"roomList": [
"\\All Rooms"
]
}
HTTP/1.1 201 Created
Location: /exchange/v1.0/addressBookPolicies/exonaut-sample-addressBookPolicies
{
"Id": "exonaut-sample-addressBookPolicies",
"Identity": "exonaut-sample-addressBookPolicies",
"Name": "exonaut-sample-addressBookPolicies",
"AddressLists": [
"\\All Users",
"\\All Contacts"
],
"GlobalAddressList": "\\Default Global Address List",
"OfflineAddressBook": "\\Default Offline Address Book",
"RoomList": [
"\\All Rooms"
]
}

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

Related: GET /exchange/v1.0/addressBookPolicies

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

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

Get a single addressBookPolicies entry by Identity.

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

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

GET /exchange/v1.0/addressBookPolicies/{key} HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"@odata.context": "http://localhost:5043/exchange/v1.0/$metadata#addressBookPolicies/$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/addressBookPolicies

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

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

Partial update of the addressBookPolicies at /addressBookPolicies/{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-AddressBookPolicy. Role: MailFlow.ReadWrite (Pro).

Parameter In Type Required Description
addressLists body
globalAddressList body
name body
offlineAddressBook body
roomList body
dryRun query bool (switch)

Sub-resource of the address book policy at GET /addressBookPolicies/{key} - applies a partial update via Set-AddressBookPolicy. Only the body fields present are passed to the cmdlet; the updated entity is re-fetched and returned.

PATCH /exchange/v1.0/addressBookPolicies/{key} HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"addressLists": [
"\\All Users",
"\\All Contacts",
"\\All Groups"
],
"globalAddressList": "\\Default Global Address List"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"Id": "exonaut-sample-addressBookPolicies",
"Identity": "exonaut-sample-addressBookPolicies",
"Name": "exonaut-sample-addressBookPolicies",
"AddressLists": [
"\\All Users",
"\\All Contacts",
"\\All Groups"
],
"GlobalAddressList": "\\Default Global Address List",
"OfflineAddressBook": "\\Default Offline Address Book",
"RoomList": [
"\\All Rooms"
]
}

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

Related: GET /exchange/v1.0/addressBookPolicies

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

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

Remove the addressBookPolicies at /addressBookPolicies/{key}. Returns 204 with no body.

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

Parameter In Type Required Description
dryRun query bool (switch)

Sub-resource of the address book policy at GET /addressBookPolicies/{key} - removes the policy via Remove-AddressBookPolicy. Returns 204 with no body.

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

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