Skip to main content
Version: v5.6.1

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.

FieldTypeMeaning
action_patternsarray of stringAction-name globs; empty covers every action.
approval_validity_secondsinteger/stringThe approval validity (default 14 days), clocked from checklist completion; a lapse voids the approvals and re-gates the subject.
approversApprovalApproversWho may approve covered subjects: named users and groups, or resolution kinds such as impacted_asset_owners.
authorisationsEstateAuthorisationsThe caller's update/delete standing on the policy's own /governance/change rule path — affordance honesty for the register; the server still gates every write.
created_attimestampWhen the record was created.
created_bystringUsername of the creating identity.
enabledbooleanWhether the record is enabled.
idstringThe record's identity.
metadata_predicatesarray of ApprovalMetadataPredicateMetadata predicates AND-composed with the path and action match.
namestringDisplay name.
path_patternstringThe node paths the policy covers, e.g. /projects/x/environments/prod/**.
quorumintegerDistinct approving identities required (default 1).
quorum_ttl_secondsinteger/stringThe quorum TTL (default 7 days): a pending request expires into rejected when the effective TTL — the smallest across the matched lines — lapses.
require_change_referencebooleanA typed external reference must be present at approval.
require_step_upbooleanExecuting 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_windowbooleanCovered subjects start only inside an open admitting maintenance window.
scope_pathstringThe delegation scope the policy belongs to ('' = global): writes require the change-governance determination on /governance/change.
self_approvalbooleanDefault false: neither the requester's nor the change owner's approval ever counts.
strictbooleanA strict line is never subsumed by run-level satisfaction.
updated_attimestampWhen the record was last updated.

ApprovalMetadataPredicate​

ApprovalMetadataPredicate is one metadata conjunct in the shared selector grammar (evaluated against effective node metadata).

FieldTypeMeaning
fieldstringThe field key, ., e.g. "core.criticality".
opstring"eq" | "in" | "true" | "false" | "unclassified" | "before" | "after" | "elapsed" (the date ops compare ISO-8601 YYYY-MM-DD values).
valuesarray of stringThe 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.

  • 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 the packs:change-governance entitlement that enforces the funnel.