dlpKeywordDictionaries
DLP Keyword Dictionaries. Custom keyword lists that data loss prevention rules match against. The dlpKeywordDictionaries entity set lives under /exchange/v1.0/dlpKeywordDictionaries in the Governance & protection category.
| Fact | Value |
|---|---|
| Path | /exchange/v1.0/dlpKeywordDictionaries |
| Category | Governance & protection |
| Tier | Tier 5, Compliance |
| Read role | Compliance.IPPS.Read.All (Community) |
| Write role | Compliance.IPPS.ReadWrite.All (Enterprise) |
| Backing cmdlets | Get-DlpKeywordDictionary, New-DlpKeywordDictionary, Set-DlpKeywordDictionary, Remove-DlpKeywordDictionary |
Routes
Section titled “Routes”| Method | Path | Synopsis | Role | Plan |
|---|---|---|---|---|
| GET | /exchange/v1.0/dlpKeywordDictionaries |
List DLP keyword dictionaries - curated keyword sets used by DLP rules to detect sensitive content. | Compliance.IPPS.Read |
Community |
| POST | /exchange/v1.0/dlpKeywordDictionaries |
POST /dlpKeywordDictionaries - create a dictionary. Required: name. Optional: fileData (base64), description, matchStyle. Returns 201 + Location. | Compliance.IPPS.ReadWrite |
Enterprise |
| GET | /exchange/v1.0/dlpKeywordDictionaries/{key} |
Get a single DLP keyword dictionary by Name. Returns 404 if absent. | Compliance.IPPS.Read |
Community |
| PATCH | /exchange/v1.0/dlpKeywordDictionaries/{key} |
PATCH /dlpKeywordDictionaries/{key} - partial update. Optional fileData (base64) to replace the keyword corpus. Returns 200 + post-Set dictionary. | Compliance.IPPS.ReadWrite |
Enterprise |
| DELETE | /exchange/v1.0/dlpKeywordDictionaries/{key} |
DELETE /dlpKeywordDictionaries/{key} - remove a dictionary. Returns 204. | Compliance.IPPS.ReadWrite |
Enterprise |
GET /exchange/v1.0/dlpKeywordDictionaries
Section titled “GET /exchange/v1.0/dlpKeywordDictionaries”List DLP keyword dictionaries - curated keyword sets used by DLP rules to detect sensitive content.
Backing cmdlet: Get-DlpKeywordDictionary. Role: Compliance.IPPS.Read (Community).
List DLP keyword dictionaries
Section titled “List DLP keyword dictionaries”Returns the tenant’s DLP keyword dictionaries, the named keyword corpora used by data loss prevention rules to match sensitive content. The collection is empty when no custom dictionaries have been created.
GET /exchange/v1.0/dlpKeywordDictionaries HTTP/1.1Authorization: Bearer {token}HTTP/1.1 200 OK
{ "@odata.context": "http://localhost:5043/exchange/v1.0/$metadata#dlpKeywordDictionaries", "value": []}Related: GET /exchange/v1.0/dlpKeywordDictionaries/{key}
POST /exchange/v1.0/dlpKeywordDictionaries
Section titled “POST /exchange/v1.0/dlpKeywordDictionaries”POST /dlpKeywordDictionaries - create a dictionary. Required: name. Optional: fileData (base64), description, matchStyle. Returns 201 + Location.
Backing cmdlet: New-DlpKeywordDictionary. Role: Compliance.IPPS.ReadWrite (Enterprise).
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
name |
body | yes | ||
description |
body | |||
fileData |
body | |||
matchStyle |
body | |||
dryRun |
query | bool (switch) |
Create a DLP keyword dictionary
Section titled “Create a DLP keyword dictionary”Provision a custom keyword dictionary for DLP rules via New-DlpKeywordDictionary on the IPPS pool. Required: name. Optional: description, fileData (base64-encoded UTF-16 LE keyword file, one term per line), matchStyle (‘word’ | ‘string’). Pass doNotPersistKeywords: true to store only a content fingerprint instead of the keyword list (privacy mode). Look up the new dictionary via GET /dlpKeywordDictionaries (Get-DlpKeywordDictionary uses -Name, not -Identity - the controller handles the param-name asymmetry transparently).
POST /exchange/v1.0/dlpKeywordDictionaries HTTP/1.1Authorization: Bearer {token}Content-Type: application/json
{ "name": "Internal-Project-Codenames", "description": "Customer-confidential project codenames (Atlas, Phoenix, Helios).", "matchStyle": "word", "fileData": "QXRsYXMNClBob2VuaXgNCkhlbGlvcw0K"}HTTP/1.1 201 CreatedLocation: /exchange/v1.0/dlpKeywordDictionaries/Internal-Project-Codenames
{ "@odata.context": "https://api.contoso.com/exchange/v1.0/$metadata#dlpKeywordDictionaries/$entity", "Id": "kwd-internal-project-codenames", "Name": "Internal-Project-Codenames", "Identity": "kwd-internal-project-codenames", "Description": "Customer-confidential project codenames (Atlas, Phoenix, Helios).", "MatchStyle": "word", "KeywordCount": 3, "CreatedDateTime": "2026-05-26T10:00:00Z"}Related: GET /exchange/v1.0/dlpKeywordDictionaries, PATCH /exchange/v1.0/dlpKeywordDictionaries/{key}, DELETE /exchange/v1.0/dlpKeywordDictionaries/{key}
GET /exchange/v1.0/dlpKeywordDictionaries/{key}
Section titled “GET /exchange/v1.0/dlpKeywordDictionaries/{key}”Get a single DLP keyword dictionary by Name. Returns 404 if absent.
Backing cmdlet: Get-DlpKeywordDictionary. Role: Compliance.IPPS.Read (Community).
PATCH /exchange/v1.0/dlpKeywordDictionaries/{key}
Section titled “PATCH /exchange/v1.0/dlpKeywordDictionaries/{key}”PATCH /dlpKeywordDictionaries/{key} - partial update. Optional fileData (base64) to replace the keyword corpus. Returns 200 + post-Set dictionary.
Backing cmdlet: Set-DlpKeywordDictionary. Role: Compliance.IPPS.ReadWrite (Enterprise).
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
description |
body | |||
fileData |
body | |||
matchStyle |
body | |||
name |
body | |||
dryRun |
query | bool (switch) |
Update a DLP keyword dictionary
Section titled “Update a DLP keyword dictionary”Partially updates an existing DLP keyword dictionary by Name via Set-DlpKeywordDictionary. Send only the fields you want to change; fileData (base64) replaces the keyword corpus. Returns the post-update dictionary.
PATCH /exchange/v1.0/dlpKeywordDictionaries/{key} HTTP/1.1Authorization: Bearer {token}Content-Type: application/json
{ "description": "Exonaut internal project codenames - updated 2026 Q2", "matchStyle": "word"}HTTP/1.1 200 OKContent-Type: application/json
{ "Id": "exonaut-sample-dlpKeywordDictionaries", "Identity": "exonaut-sample-dlpKeywordDictionaries", "Name": "exonaut-sample-dlpKeywordDictionaries", "Description": "Exonaut internal project codenames - updated 2026 Q2", "MatchStyle": "word"}Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.
Related: GET /exchange/v1.0/dlpKeywordDictionaries
DELETE /exchange/v1.0/dlpKeywordDictionaries/{key}
Section titled “DELETE /exchange/v1.0/dlpKeywordDictionaries/{key}”DELETE /dlpKeywordDictionaries/{key} - remove a dictionary. Returns 204.
Backing cmdlet: Remove-DlpKeywordDictionary. Role: Compliance.IPPS.ReadWrite (Enterprise).
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
dryRun |
query | bool (switch) |
Delete a DLP keyword dictionary
Section titled “Delete a DLP keyword dictionary”Removes a DLP keyword dictionary by Name via Remove-DlpKeywordDictionary. Returns 204 No Content on success.
DELETE /exchange/v1.0/dlpKeywordDictionaries/{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/dlpKeywordDictionaries
?dryRun=true previews of any write stay on Community.

