Approval policy
Included from Basic tier
An approval policy is one row of the change-governance matrix: which node
paths and actions it covers (plus optional metadata predicates), who approves,
how many approvals are needed, and the deadlines and extra requirements that
ride along. At create time every matched, enabled policy freezes into one
line of the subject's approval checklist. Served by the v2
ChangeGovernanceService: ListApprovalPolicies, GetApprovalPolicy,
CreateApprovalPolicy, UpdateApprovalPolicy and DeleteApprovalPolicy,
with writes delegated by scope_path.
ApprovalPolicy
ApprovalPolicy is one matrix row of the model.
| Field | Type | Meaning |
|---|---|---|
action_patterns | array of string | Action-name globs; empty covers every action. |
approval_validity_seconds | integer/string | The approval validity (default 14 days), clocked from checklist completion; a lapse voids the approvals and re-gates the subject. |
approvers | ApprovalApprovers | Who may approve covered subjects: named users (stored and matched as principal ids — a write accepts a principal id, a username one account holds, or <provider>:<username>), groups, or resolution kinds such as impacted_asset_owners. |
authorisations | EstateAuthorisations | The caller's update/delete standing on the policy's own /governance/change |
created_at | timestamp | When the record was created. |
created_by | string | Username of the creating identity. |
enabled | boolean | Whether the record is enabled. |
id | string | The record's identity. |
metadata_predicates | array of ApprovalMetadataPredicate | Metadata predicates AND-composed with the path and action match. |
name | string | Display name. |
path_pattern | string | The node paths the policy covers, e.g. /projects/x/environments/prod/**. |
quorum | integer | Distinct approving identities required (default 1). |
quorum_ttl_seconds | integer/string | The quorum TTL (default 7 days): a pending request expires into rejected when the effective TTL — the smallest across the matched lines — lapses. |
require_change_reference | boolean | A typed external reference must be present at approval. |
require_step_up | boolean | Executing a matched create requires an elevated session before any approval gate is evaluated (customer policy only ever ADDS step-up — platform floors stay the un-relaxable minimum). |
require_window | boolean | Covered subjects start only inside an open admitting maintenance window. |
scope_path | string | The delegation scope the policy belongs to ('' = global): writes require the change-governance determination on /governance/change |
self_approval | boolean | Default false: neither the requester's nor the change owner's approval ever counts. |
strict | boolean | A strict line is never subsumed by run-level satisfaction. |
updated_at | timestamp | When the record was last updated. |
ApprovalMetadataPredicate
ApprovalMetadataPredicate is one metadata conjunct in the shared selector grammar (evaluated against effective node metadata).
| Field | Type | Meaning |
|---|---|---|
field | string | The field key, |
op | string | "eq" | "in" | "true" | "false" | "unclassified" | "before" | "after" | "elapsed" (the date ops compare ISO-8601 YYYY-MM-DD values). |
values | array of string | The comparison values: exactly one for eq, before, after (the date ops take an ISO-8601 YYYY-MM-DD date), one or more for in; true, false, unclassified and elapsed take none. |
What settings change this
Node-settings requires_approval_from entries are the retired run-level
approvers lane (see opschain docs settings). They are convertible into
approval policies with opschain approval-policies convert-settings-approvers
(ChangeGovernanceService.ConvertSettingsApprovers); the step-level
requires_approval_from: wait gate inside composed-action YAML is a separate
mechanism and stays as authored.
Related pages
opschain docs change-governance— the matrix, matching and delegation model these rows feed.opschain docs resources/approval— the checklist a matched policy's line lands on.opschain docs metadata— the effective node metadata the predicates evaluate against.opschain docs change-governance— the component page, including thepacks:change-governanceentitlement that enforces the funnel.