atpBuiltInProtectionRule
Built-in Protection Rule. Defender built-in preset protection, exceptions only. The atpBuiltInProtectionRule singleton lives under /exchange/v1.0/atpBuiltInProtectionRule in the Threat protection category.
| Fact | Value |
|---|---|
| Path | /exchange/v1.0/atpBuiltInProtectionRule |
| Category | Threat protection |
| Tier | Tier 4, Threat protection |
| Read role | ThreatPolicy.Read.All (Community) |
| Write role | ThreatPolicy.ReadWrite.All (Enterprise) |
| Backing cmdlets | Get-ATPBuiltInProtectionRule, Set-ATPBuiltInProtectionRule, New-ATPBuiltInProtectionRule |
Routes
Section titled “Routes”| Method | Path | Synopsis | Role | Plan |
|---|---|---|---|---|
| GET | /exchange/v1.0/atpBuiltInProtectionRule |
Get the tenant-wide built-in protection rule for Defender Standard preset (singleton). | ThreatPolicy.Read |
Community |
| POST | /exchange/v1.0/atpBuiltInProtectionRule |
POST /atpBuiltInProtectionRule - provision-if-absent via New-ATPBuiltInProtectionRule. Required: safeAttachmentPolicy + safeLinksPolicy identities. | ThreatPolicy.ReadWrite |
Enterprise |
| PATCH | /exchange/v1.0/atpBuiltInProtectionRule |
Partial update via Set-ATPBuiltInProtectionRule (singleton - no URL key). | ThreatPolicy.ReadWrite |
Enterprise |
GET /exchange/v1.0/atpBuiltInProtectionRule
Section titled “GET /exchange/v1.0/atpBuiltInProtectionRule”Get the tenant-wide built-in protection rule for Defender Standard preset (singleton).
Backing cmdlet: Get-ATPBuiltInProtectionRule. Role: ThreatPolicy.Read (Community).
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
state |
query | string | Server-side filter by rule enablement state. One of: Enabled | Disabled. |
List atpBuiltInProtectionRule
Section titled “List atpBuiltInProtectionRule”Stub auto-generated example for the atpBuiltInProtectionRule collection. Backing cmdlet: Get-ATPBuiltInProtectionRule. Live-verify with ?$top=3&$select=Id,Name and replace the synthetic body before promoting to Tier 1.
GET /exchange/v1.0/atpBuiltInProtectionRule?$top=3 HTTP/1.1Authorization: Bearer {token}HTTP/1.1 200 OK
{ "@odata.context": "http://localhost:5043/exchange/v1.0/$metadata#atpBuiltInProtectionRule", "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/atpBuiltInProtectionRule/{key}
POST /exchange/v1.0/atpBuiltInProtectionRule
Section titled “POST /exchange/v1.0/atpBuiltInProtectionRule”POST /atpBuiltInProtectionRule - provision-if-absent via New-ATPBuiltInProtectionRule. Required: safeAttachmentPolicy + safeLinksPolicy identities.
Singleton entity (isSingleton: true; keyless GET + PATCH). The “Built-In Protection” preset is one-per-tenant; the POST is kept as a provision-if-absent action to (re)create the built-in rule when the tenant has none. Callers normally PATCH (Set), not POST. (Audit 2026-06-01 RS-1 - owner decision: keep the POST.)
Backing cmdlet: New-ATPBuiltInProtectionRule. Role: ThreatPolicy.ReadWrite (Enterprise).
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
safeAttachmentPolicy |
body | yes | ||
safeLinksPolicy |
body | yes | ||
comments |
body | |||
exceptIfRecipientDomainIs |
body | |||
exceptIfSentTo |
body | |||
exceptIfSentToMemberOf |
body | |||
name |
body | |||
dryRun |
query | bool (switch) |
Create rejected when a required policy identity is missing
Section titled “Create rejected when a required policy identity is missing”New-ATPBuiltInProtectionRule requires both safeAttachmentPolicy and safeLinksPolicy. Omitting safeLinksPolicy fails validation before the cmdlet runs and returns the canonical 400 envelope.
POST /exchange/v1.0/atpBuiltInProtectionRule HTTP/1.1Authorization: Bearer {token}Content-Type: application/json
{ "name": "exonaut-sample-atpBuiltInProtectionRule", "safeAttachmentPolicy": "Built-In Protection Policy"}HTTP/1.1 400 Bad RequestContent-Type: application/json
{ "error": { "code": "BadRequest", "message": "The 'safeLinksPolicy' field is required.", "target": "safeLinksPolicy" }, "correlationId": "0HN7Q2K9F3ABC:00000007"}Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.
Related: GET /exchange/v1.0/atpBuiltInProtectionRule
Create the built-in protection rule for Defender’s Standard preset
Section titled “Create the built-in protection rule for Defender’s Standard preset”Creates the tenant’s built-in (Standard preset) protection rule via New-ATPBuiltInProtectionRule. Requires the SafeAttachmentPolicy and SafeLinksPolicy identities; optional recipient-domain and recipient exceptions scope the rule.
POST /exchange/v1.0/atpBuiltInProtectionRule HTTP/1.1Authorization: Bearer {token}Content-Type: application/json
{ "name": "exonaut-sample-atpBuiltInProtectionRule", "safeAttachmentPolicy": "Built-In Protection Policy", "safeLinksPolicy": "Built-In Protection Policy", "comments": "Managed by Exonaut sample automation.", "exceptIfRecipientDomainIs": [ "contoso.com" ], "exceptIfSentTo": [ ]}HTTP/1.1 201 CreatedLocation: /exchange/v1.0/atpBuiltInProtectionRule/exonaut-sample-atpBuiltInProtectionRule
{ "Id": "exonaut-sample-atpBuiltInProtectionRule", "Identity": "exonaut-sample-atpBuiltInProtectionRule", "Name": "exonaut-sample-atpBuiltInProtectionRule", "SafeAttachmentPolicy": "Built-In Protection Policy", "SafeLinksPolicy": "Built-In Protection Policy", "Comments": "Managed by Exonaut sample automation.", "ExceptIfRecipientDomainIs": [ "contoso.com" ], "ExceptIfSentTo": [ ]}Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.
Related: GET /exchange/v1.0/atpBuiltInProtectionRule
PATCH /exchange/v1.0/atpBuiltInProtectionRule
Section titled “PATCH /exchange/v1.0/atpBuiltInProtectionRule”Partial update via Set-ATPBuiltInProtectionRule (singleton - no URL key).
Backing cmdlet: Set-ATPBuiltInProtectionRule. Role: ThreatPolicy.ReadWrite (Enterprise).
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
comments |
body | |||
exceptIfRecipientDomainIs |
body | |||
exceptIfSentTo |
body | |||
exceptIfSentToMemberOf |
body | |||
dryRun |
query | bool (switch) |
Update the built-in protection rule’s comments and exceptions
Section titled “Update the built-in protection rule’s comments and exceptions”Partially updates the tenant’s built-in protection rule via Set-ATPBuiltInProtectionRule. This is a singleton, so no URL key is supplied; only the SetWritable fields (comments and recipient exceptions) may change.
PATCH /exchange/v1.0/atpBuiltInProtectionRule HTTP/1.1Authorization: Bearer {token}Content-Type: application/json
{ "comments": "Updated by Exonaut sample automation.", "exceptIfRecipientDomainIs": [ "contoso.com" ], "exceptIfSentTo": [ ]}HTTP/1.1 200 OKContent-Type: application/json
{ "Id": "exonaut-sample-atpBuiltInProtectionRule", "Identity": "exonaut-sample-atpBuiltInProtectionRule", "Name": "exonaut-sample-atpBuiltInProtectionRule", "Comments": "Updated by Exonaut sample automation.", "ExceptIfRecipientDomainIs": [ "contoso.com" ], "ExceptIfSentTo": [ ]}Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.
Related: GET /exchange/v1.0/atpBuiltInProtectionRule
?dryRun=true previews of any write stay on Community.

