Policy API
Create drafts, preview assignments, publish revisions, and inspect per-target adoption.
Policies have immutable published revisions and separate executor adoption. Read precedence and rollback before automation. Administrator authority is required for every resolved target.
Use the shared API contract for authentication, pagination, request headers, idempotency, and error responses.
List policies
/organizations/{organization_id}/policiesLists policy metadata and current published revision; it does not collapse target adoption into publication status. Standard limit and cursor apply. Unknown filters return 422.
familystringoptionalLimit policy family.
Returns a data array and pagination.next_cursor. Entries include stable IDs and the resource fields described for this collection.
Create a draft
/organizations/{organization_id}/policiesCreates an unpublished draft with no enforcement effect.
namestringrequiredDisplay name; does not change resource identity.
familystringrequiredImmutable family.
modestringoptionalInitial enforcement mode.
monitorReturns policy ID, draft revision, configuration, and ETag.
Read a policy
/organizations/{organization_id}/policies/{policy_id}Returns family-specific configuration, draft revision, current published revision, assignments, and valid writable settings for installed capabilities.
Returns data and request_id.
Update a draft
/organizations/{organization_id}/policies/{policy_id}Updates an unpublished draft. Requires If-Match; published revisions are never changed. Family configuration defines the writable schema. Unknown family fields or unsupported required combinations return 422.
modestringoptionalRequested mode; omission preserves the draft mode. Access remains deny by default without explicit grants.
configurationobjectoptionalComplete replacement draft configuration for the existing family. Omission preserves the current configuration; omitted fields inside a supplied replacement receive family defaults. Required controls must be supported by targets.
assignmentsobject[]optionalReplacement assignments; omission preserves current assignments and an empty list removes draft assignments. Equal-priority overlapping group assignments conflict.
Returns the new draft ETag. No target changes until publication.
Preview a draft
/organizations/{organization_id}/policies/{policy_id}/previewEvaluates assignment precedence, required capabilities, and visible targets without publishing.
draft_revisionintegerrequiredCurrent draft revision to evaluate.
Returns target IDs, winning assignments, effective revisions, unsupported controls, and conflicts. The preview does not lock future membership.
Publish a revision
/organizations/{organization_id}/policies/{policy_id}/publishPublishes an immutable policy revision. Requires If-Match; assignment conflicts return 409 assignment_conflict; invalid capability requirements return 422.
draft_revisionintegerrequiredThe reviewed current draft.
reasonstringrequiredAudited justification. Empty values are invalid.
Returns published revision and publication operation. Success records desired configuration; adoption remains separate.
Read adoption
/organizations/{organization_id}/policies/{policy_id}/adoptionReturns per-target requested and applied revisions with pending, applied, failed, or offline state. The response lists unsupported controls and latest observation time.
Returns data and request_id.
Create an exception
/organizations/{organization_id}/policy-exceptionsCreates a scoped policy exception. Access or risk exceptions require the corresponding special approval grant in addition to this scope.
policy_idstringrequiredPolicy containing the affected rule.
rule_idstringrequiredSingle affected rule.
asset_idsstring[]requiredExisting assets visible to the caller; duplicates reject the request.
effectstringrequiredExact change to the named rule.
expires_attimestamprequiredFuture UTC expiry; no implicit permanent exception.
reasonstringrequiredAudited justification. Empty values are invalid.
Returns an exception ID and pending adoption state. Unsupported family/effect combinations return 422.
Revoke an exception
/organizations/{organization_id}/policy-exceptions/{exception_id}Revokes future exception use. Requires If-Match; enforcement reconciliation is asynchronous and must be verified.
Returns the exception summary and reconciliation operation. Completed transfers and skipped checks remain historical facts.