Policy brings authoring, review, revision history, and delivery into one governed workflow.
Authors prepare Data or artificial intelligence (AI) policies.
Authorized reviewers return work or approve the exact submitted draft.
Background services publish approved artifacts and collect target-specific delivery evidence.
Policy Panel is the web interface. Policy Library is its policy-listing workspace.
An artifact is generated configuration for a target integration, not the author’s editable draft.
Data policies describe protection for discovered data.
AI policies describe runtime permissions for selected classifications and principals.
Approval, publication, and observed protection answer different questions.
Use these guides to identify your responsibility and verify the relevant outcome.
Use the glossary for shared terminology.
Choose Your Path
The following sections follow the Team Edition documentation order:
Introduction introduces Policy and the author-to-reviewer workflow.
Architecture explains components and integrations.
Installation guides prerequisites, Helm chart installation, and verification.
Configuration describes required, optional, and security settings.
Uninstallation separates retaining data from removing it.
API Reference documents authentication, requests, responses, and examples.
Usage guides authoring, review, approval, and delivery verification.
Troubleshoot provides recovery instructions for failed tasks.
Additional Information collects concepts, terminology, system operations, and common questions.
1 - Introduction to Policy
Choose a Policy learning path and prepare accounts, catalogs, and example inputs.
Start with one policy, a known scope, and a clear review responsibility.
This path separates preparing a draft from approving and delivering it.
Scope means the data locations or runtime consumer that the exercise should affect.
Data and artificial intelligence (AI) exercises use different inputs and verification evidence.
Choose a Responsibility
Choose the path for your responsibility:
Authors prepare authoring capabilities and applicable policy access.
Follow your first policy.
Reviewers and approvers obtain the capability for their decision.
Follow lifecycle and governance.
Platform operators obtain cluster and dependency access.
Follow Installation.
Application developers obtain a gateway token and the configured application programming interface (API) base.
Follow the worked API lifecycle.
These are responsibilities, not additional product roles.
Refer to roles and permissions
before requesting access.
Refer to states and revisions.
You can distinguish saved work, governed content, and delivery evidence.
Follow the first-policy journey.
You save, submit, and review a draft before checking its target-specific delivery.
After approval, follow delivery verification.
Verify the target-specific result instead of treating approval as protection.
For permission or validation failures, use Troubleshoot.
1.1 - Prepare Access and Example Inputs
Prepare separate user accounts, supported catalog inputs, and verification responsibilities before authoring.
Prepare this checklist before creating a tutorial policy.
Use a nonproduction scope that your team permits you to change.
Do not use the example to test protection against production data.
Identify the exact data locations or runtime consumer before choosing policy inputs.
Before You Begin
Complete these prerequisites:
Obtain the Policy address from your platform operator.
Identify whether the exercise uses Data or artificial intelligence (AI) authoring.
Confirm the target integrations required by your release and exercise.
Prepare the Exercise
Prepare the exercise with the people who will perform it:
Sign in with the account that will author the policy.
The account can open Policy and perform its assigned authoring operations.
Ask the platform administrator to verify the required command capabilities.
The author can create work and edit policies they own or can access.
Identify the reviewer and approver for this exercise.
Each person uses their own account with the appropriate decision capabilities.
Select an available classification from your environment.
For a Data exercise, confirm it resolves to the intended discovered locations.
Select the intended principals from the configured catalog.
You can explain who should receive each permission.
A principal is a runtime subject, such as a directory group, not a Policy reviewer.
Confirm the supported protection method or AI permission choices.
Your inputs match the authoring lane and target release.
Agree who will verify delivery and protection after approval.
That person has the necessary target access and diagnostic permissions.
If catalogs are empty, stop and ask an operator to check discovery and integration setup.
Do not fabricate classification identifiers or select unrelated production locations.
If authoring access fails, resolve the permission problem before saving work.
Record Your Input Choices
The following values illustrate an exercise, not preinstalled catalog objects.
Replace them with real values selected from your environment.
The table lists example exercise inputs and what to verify before using each one:
Exercise Input
Example
Verify Before Continuing
Policy name
Customer email exercise
Choose a name your team can identify and later archive.
Classification
A classification containing email addresses
Confirm the selected classification actually resolves to your exercise scope.
Principal
A test application group from the catalog
Confirm membership and intended permission with the identity owner.
Author
Alex
Use Alex’s own authenticated authoring account.
Reviewer
Morgan
Use Morgan’s separate account with review and approval capabilities.
Verification scope
One known nonproduction Data location or AI consumer
Record the intended target and who can inspect its protection or receipt evidence.
Alex and Morgan are illustrative people, not account names to provision.
Do not share tokens or credentials to simulate a role handoff.
Verify Preparation
You can identify the selected scope, principals, method, and review owner.
You also know which delivery evidence will count as success.
Save these choices with your team’s exercise notes.
Do not record access tokens in those notes.
If a definition remains unclear, consult the glossary
before substituting an unrelated catalog value.
Understand Policy components, integration responsibilities, and the boundaries between governance and delivery.
Policy separates user-facing governance from asynchronous delivery and target observation.
Its web interface and application programming interface (API) share the same backend contracts.
Traverse supplies classifications and protection observations.
Policy Integration Manager (PIM) receives Data policy configuration.
Federated Guardrails consumers retrieve their configuration.
An artifact is the target-specific output generated from governed policy intent.
Delivery transfers that output. Protection evidence describes the target-specific result.
High-Level Block Diagram
PostgreSQL belongs to the Policy stack.
The platform gateway and target integrations have their own operational responsibilities.
flowchart TB
User[Author or reviewer] --> Gateway[Platform gateway and identity]
Gateway --> Panel[Policy web interface]
Panel --> Gateway
subgraph Policy stack
API[Policy API and background processing]
DB[(PostgreSQL)]
API --> DB
end
Gateway --> API
API -->|Read discovery and protection observations| Traverse
API -->|Publish native policy work| PIM[Policy Workbench]
Consumer[Federated Guardrails consumer] -->|Retrieve product policy through gateway| Gateway
Federated Guardrails retrieves its product policy through the supported consumer route.
Do not interpret the diagram as a push into every runtime replica.
The external artificial intelligence (AI) runtime belongs to its own deployment.
Block Diagram Terms
The following table defines the components and responsibilities shown in the diagram:
Term
Meaning in Policy Architecture
Policy Library
Provide a user entry point for finding policies and inspecting available lifecycle information.
Policy API
Validate requests, preserve governance, expose references, and coordinate delivery.
Platform gateway
Authenticate callers and supply the trusted identity context.
PostgreSQL
Retain Policy state, snapshots, governed revisions, and delivery evidence inside the stack.
Traverse
Supply discovery context and target-specific Data protection observations.
Policy Workbench
Receive the native policy work referenced by the Policy Integration Manager (PIM) API.
Federated Guardrails
Retrieve the governed product artifact for its configured consumer.
Policy Workflow
The author selects scope, principals, and supported protection inputs.
Saving retains proposed work. Submission hands its current snapshot to review.
An authorized approver creates a governed revision and queues publication.
Background processing then delivers artifacts and collects the relevant evidence.
Automatic recompilation can refresh artifacts from approved intent when context changes.
It preserves approval identity and does not replace an author’s open draft.
Refer to System operations.
Governance and Recovery Boundaries
The local database records Policy governance and delivery state.
Restoring this database does not undo changes already made in PIM or configuration already retrieved by Guardrails.
Before resuming publication, the platform and integration administrators must compare restored records with the configuration in those products.
A retry continues retained deployment work.
Ownership reconciliation addresses native identity and binding decisions.
Native means an object in the target product, rather than Policy’s own governance record.
A binding associates a Policy reference with that object’s identifier.
Neither operation substitutes for reviewing newly authored policy content.
Refer to recovery playbooks.
3 - Install
Install the Policy Helm chart with prepared credentials, then sign in and open the Policy Library.
This procedure installs Policy on a Protegrity Provisioned Cluster (PPC).
Complete the prerequisites first.
The PPC service users and local credential files must be ready before you continue.
The chart installs the application programming interface (API), published Policy
Panel image, and in-stack PostgreSQL database. It does not install their platform
dependencies.
3.1 - Prerequisites
Prepare the required products, PPC users, and credential files before installing Policy.
Complete these steps before installing Policy on a Protegrity Provisioned Cluster (PPC).
Use a PPC user with administrator permissions to create users and assign roles.
This guide calls that user a PPC administrator.
Required Products
Ensure that PPC, Policy Workbench, and Traverse are installed.
Ensure that Policy Integration Manager (PIM) is initialized through the Workbench setup.
Use the Workbench installation instructions for
Amazon Web Services (AWS)
or Microsoft Azure.
Continue with the PPC connection and account preparation below.
If you configured directory connections before installing Policy, save those connection details again after Policy installation.
See the IdP backfill issue
for the identity provider (IdP) connection steps.
Connect to PPC
Use the Kubernetes connection established during PPC installation.
Run the Bash examples in a terminal with Helm, kubectl, jq, and OpenSSL available.
All installation commands use the active Kubernetes context:
kubectl config current-context
The output should identify your PPC cluster.
For connection instructions, refer to your PPC installation documentation.
PPC Storage and Release Defaults
Policy uses the shared pty-main gateway in api-gateway and the nfa-config ConfigMap in default.
These are PPC platform resources, not values you need to supply for a standard installation.
The chart uses PPC’s STORAGE_CLASS and BACKUP_STORAGE_CLASS settings.
It creates separate persistent volume claims for the database and logical backups, each requesting 10Gi.
It also configures the database accounts and permissions.
You do not need to create storage classes, volumes, or database grants manually.
The installation command selects chart version 1.1.0.
The chart supplies its application and database image versions and reads the workload registry from PPC.
You only need the Open Container Initiative (OCI) chart-registry host from your release distribution.
The installation procedure checks whether PPC requires an image-pull Secret and, if so, copies it into the Policy namespace. For more information about provisioning registry pull secret, refer to Provision the Registry Pull Secret.
Create PPC Service Users
Helm creates database users, but it does not create PPC integration users.
Create the two service users once during preparation:
Log in to the PPC command-line interface (CLI) as a PPC administrator.
Follow Accessing the PPC CLI to connect and sign in to the CLI Manager.
Create the token-login role if it does not already exist:
Replace the password placeholders with separate passwords that satisfy PPC’s password policy.
Run credential-setting commands in a protected CLI Manager session without command recording.
If PPC prompts for a first-login password change, use the final password in the files below.
List PPC users:
admin list users
The output includes the usernames and identifiers of the users you created.
Roles are assigned during creation, so no separate user-identifier lookup or role-update command is required.
These users authenticate Policy’s background connections to PIM and Traverse.
Policy obtains and refreshes their tokens using the credentials you provide.
They are separate from the named PPC accounts people use to sign in.
See accounts and permissions
for the permission reference.
Prepare Credential Files
Return to the Bash terminal you will use for Helm installation.
This guide stores local credential files under the following directory:
$HOME/.config/protegrity/policy/credentials
These are files you create, not preinstalled PPC files.
The installation commands below use this location directly.
Keep the directory private and outside source control.
Database Credentials
Run this block once to create three database usernames and generate their passwords:
(set -e
set +x
set -o noclobber
umask077 mkdir -p "$HOME/.config/protegrity/policy/credentials" chmod 700"$HOME/.config/protegrity/policy/credentials"for role in maintenance runtime backup;doprintf'%s'"policy_${role}" > "$HOME/.config/protegrity/policy/credentials/${role}-username"password=$(openssl rand -base64 32)printf'%s'"$password" > "$HOME/.config/protegrity/policy/credentials/${role}-password"done)
The block creates six files and refuses to overwrite existing files.
Helm uses these credentials to create the database logins and their grants.
Database provisioning automatically creates pmx_app, a PostgreSQL NOLOGIN permission role, and grants it to runtime.
You do not create or validate these database accounts yourself.
PPC Service Credentials
Save the passwords you assigned to the PPC service users:
(set -e
set +x
set -o noclobber
umask077printf'%s''pmx.pim.service' > "$HOME/.config/protegrity/policy/credentials/pim-username"printf'%s''pmx.traverse.poller' > "$HOME/.config/protegrity/policy/credentials/traverse-username"for service in pim traverse;doread -r -s -p "Password for the ${service} service user: " password
printf'\n'if[ -z "$password"];thenprintf'A service-user password is required.\n' >&2exit1fiprintf'%s'"$password" > "$HOME/.config/protegrity/policy/credentials/${service}-password"done)
The prompts hide each password.
Use the existing PPC passwords. Do not generate replacements for these users.
Additional Prerequisites
Use the same Bash terminal and active Kubernetes context as the prerequisite steps.
These instructions install a new Policy deployment.
Set the Open Container Initiative (OCI) chart-registry host supplied with your release:
exportPOLICY_REGISTRY_HOST='<oci-registry-host>'
Replace the placeholder with the host, including a port if required.
The following command installs chart version 1.1.0. Its other settings use PPC defaults.
If the chart registry requires authentication, log in:
helm registry login "$POLICY_REGISTRY_HOST"
Helm prompts for registry credentials.
The chart registry can differ from PPC’s workload-image registry. This login authenticates Helm only. It does not authorize cluster nodes to pull workload images. For more information, refer to Provision the Registry Pull Secret.
Continue to Installation
Continue to install the Policy Helm chart. For more information about installing Policy, refer to section Installing Policy.
The procedure creates Kubernetes Secrets from these files and installs Policy with the standard PPC defaults.
3.1.1 - Installation Accounts and Permissions
Identify database users, dependency service users, credential Secrets, and the permissions each identity needs.
Policy uses separate database logins, dependency users, and Kubernetes workload identities.
These accounts serve different purposes and cannot replace one another.
Protegrity Provisioned Cluster (PPC) administrators prepare dependency users before installation.
Database operators prepare credentials for PostgreSQL inside the Policy stack.
Use this reference with installation preparation and
fresh installation.
Default Secret names below apply in the pty-policy release namespace.
Use your configured names when the release overrides them.
Database Accounts
The chart defines default Secret names, but no default database usernames or passwords.
Choose three distinct login names and independently managed passwords.
The example usernames below are suggestions, not chart defaults.
Each Secret contains postgres_user and postgres_password.
The default database name is policy.
Database provisioning also creates the fixed PostgreSQL pmx_app permission role and grants it to runtime.
This NOLOGIN role is not a fourth login, platform user, or credential Secret.
The following table lists the database accounts, their permissions, and default Secrets:
Database Account
Username (Example)
Permissions
Default Secret
Maintenance
policy_maintenance
Own the Policy database and public schema. Create, alter, and drop application objects for migrations and approved restores.
Grant database CONNECT, schema USAGE, and table/sequence SELECT. Prohibit writes, sequence advancement, and pmx_app membership.
policy-db-backup
Database startup creates missing workload roles from these credentials.
The separate bootstrap Job installs the schema and application grants.
Operators supply the Secrets. The chart handles account creation and permission checks.
No manual database grants or account-validation steps are required.
Do not create platform users for these PostgreSQL logins.
The chart creates all three logins without SUPERUSER, CREATEDB, CREATEROLE, REPLICATION, or BYPASSRLS.
Maintenance owns objects within the Policy database, not the PostgreSQL cluster.
Never use its credentials for ordinary application programming interface (API) traffic.
Runtime and backup do not own application objects or assume administrator roles.
Runtime and Backup Privileges
This section explains the database permissions that installation configures automatically.
Use it to understand the account separation or investigate a database privilege-check failure.
It does not require additional account creation or manual permission grants.
The Policy API uses the runtime database login, such as policy_runtime, to read and update application data.
Backup Jobs use a separate login, such as policy_backup, to read data for database dumps.
The backup login does not need write access.
PostgreSQL roles can group permissions without serving as login accounts.
Policy uses the fixed pmx_app role to group its restricted application permissions.
Database provisioning creates this role and assigns membership to the runtime login.
Membership lets that login use the role’s permissions.
The bootstrap Job configures the grants listed below.
The NOLOGIN setting prevents direct sign-in as pmx_app. This role needs no password or Kubernetes Secret.
Installation keeps the backup login outside this role so that it cannot inherit application write permissions.
Supply credentials only for the maintenance, runtime, and backup logins described above.
The table compares the resulting permissions of the runtime and backup logins:
Privilege Scope
Runtime Permission
Backup Permission
Database and schema access
Connect. Use the public schema without database or schema creation.
Connect. Use the public schema without database or schema creation.
Tables and sequences
Read tables. Use and read sequences.
Read tables and sequence values without advancing sequences.
policies and draft_policies
Insert and update. Do not delete or truncate.
Read only.
Protected snapshots and history
Insert. Update only permitted closure, supersession, and revocation metadata.
Read only.
Delivery and worker records
Insert. Update permitted status, receipt, lease, diagnostic, and generation columns.
Read only.
Selected derived and compatibility records
Insert, update, and delete according to the application allowlist.
Read only.
Validation diagnostics
Read, insert, and delete transient diagnostic records.
Read only.
Runtime does not have unrestricted create, read, update, and delete access.
Its grants preserve protected history while allowing necessary application operations.
An allowlist means explicit grants on selected tables or columns, rather than a blanket write grant.
For protected records, permitted updates include draft closure, revision supersession, and access-grant revocation metadata.
They do not permit rewriting saved authored snapshots.
The derived and compatibility tables with insert, update, and delete grants are:
policy_versions, policy_decisions, policy_statements, policy_element_refs, and policy_artifacts.
product_policies, securequery_profiles, securequery_profile_revisions, securequery_capability_manifests, and harmonization_identity.
Bootstrap checks effective privileges, including inherited access.
Extra role memberships or public grants can cause startup checks to fail.
Do not add broad grants to bypass a failed check.
The postgres identity remains a separate local administration account.
Database provisioning clears its network password.
Do not expose it or supply it to application workloads.
Naming, Retained Storage, and Rotation
Choose nonempty, distinct usernames of at most 63 bytes.
Do not use postgres, pmx_app, or the reserved pg_ prefix.
Usernames and passwords must not contain control characters.
Keep the same usernames when reusing database storage.
Provisioning rejects changes to the recorded workload names.
Changing a Secret name does not migrate database ownership or split a legacy login.
Ask the database administrator for a tested ownership-migration procedure before converting an existing database.
Coordinate password rotation across database provisioning and affected workloads.
A Secret update alone does not update an existing PostgreSQL password or running environment.
Preserve the current credentials and recovery evidence until verification succeeds.
Follow configuration changes
and backup and restore boundaries.
Dependency Service Users
Create two dedicated regular users in PPC.
The following usernames are the documented installation convention.
Helm does not create these users or enforce their names.
The username in each Secret must match the actual provisioned account.
Retain the compatibility identifiers exactly as shown when using this convention.
The following table lists integration users and their required access:
Integration
Username (Documented Convention)
Required Roles
Permissions
Default Secret
Policy Integration Manager (PIM)
pmx.pim.service
Assign workbench_administrator and policy_service_login
Read inventory. Manage policies/configurations. Export packages and certificates. Create and refresh tokens.
pim-credentials
Traverse
pmx.traverse.poller
Assign discoverx-automation-client, discoverx-admin, and policy_service_login
Read all datastores. Write protection state. Create and refresh tokens.
traverse-credentials
Each dependency Secret contains username and password.
Policy supplies these values through the corresponding PIM_* or TRAVERSE_* environment.
Both integrations default to the /pty/v1/auth/login/token endpoint.
Token login accepts form fields named loginname and password.
A successful check returns Hypertext Transfer Protocol (HTTP) 200
and a nonempty pty_access_jwt_token response header.
Never print or retain that header in shared logs.
Shared Token-Login Role
The platform administrator creates policy_service_login before installing Policy.
Its exact permission set contains only can_create_token.
This permission permits token creation and refresh, not dependency access.
Keep the role assigned after installation.
Manage this custom role outside the Policy chart’s product configuration.
Dependency users do not need the human policy_viewer, policy_author, or policy_admin roles.
Do not modify those chart-managed roles to obtain service login.
Confirm custom-role support and effective access on the selected platform release.
PIM Permissions and Caller Attribution
The documented workbench_administrator role supplies these permissions:
Permission
Granted Ability
workbench_management_policy_write
Manage policies and configurations, including background publication and withdrawal
workbench_deployment_immutablepackage_export
Export encrypted resilient packages
workbench_deployment_certificate_export
Export certificates for dynamic resilient packages
This bundle grants broader access than a read-only inventory account.
workbench_viewer supplies workbench_management_policy_read, not the required writes.
Do not substitute that role merely because inventory reads or token login succeed.
Before narrowing this mapping, ask the PIM administrator to test inventory reads, publication, and withdrawal with the replacement permissions.
See Workbench roles and permissions.
Inventory reads, startup import, and background publication or withdrawal use the service user.
Request-driven PIM mutations instead use the calling human’s forwarded token.
That human needs their own Workbench permissions for the requested operation.
Policy does not silently substitute the worker account after caller authorization fails.
Traverse Permissions and Visibility
The following table summarizes the Traverse roles and their permissions:
Role
Required Ability and Boundary
discoverx-automation-client
Write column protection state such as staged during publication.
discoverx-admin
Read all datastores rather than only individually assigned datastores.
policy_service_login
Create and refresh authentication tokens.
Traverse administrator access does not include the automation role’s state-write permission.
Keep both dependency roles.
Without administrator visibility, login can succeed while the datastore list remains empty.
The current integration therefore retains a broad administrator compatibility requirement.
Do not share this account with human users or unrelated workloads.
Keep both roles until the Traverse integration supports narrower permissions for these operations.
Every Traverse interaction uses the service user, not a human’s forwarded token.
Existing installations can use the legacy pmx.discoverx.poller username.
Use its actual verified credentials rather than renaming a working account during installation.
Kubernetes and Directory Identities
Kubernetes ServiceAccounts are not PPC users or PostgreSQL logins.
The chart creates policy-api, policy-panel, and policy-db by default.
They follow the corresponding workload containerName settings.
The chart disables service-account token automount for these identities.
Traverse also uses a scanner ServiceAccount for shared identity provider (IdP) metadata.
The default scanner is discoverx-discoverx-scanner in the discoverx namespace.
Configure idpSecret.writer for the actual scanner identity in your deployment.
Policy grants that identity only patch on the named
discoverx-idp-connections Secret in the Policy namespace.
It does not grant general Secret read, list, create, or delete access.
This Kubernetes permission does not replace the poller’s Traverse roles.
Directory bind and provider credentials remain separate, source-specific identities.
Policy defines no default directory bind username.
Do not reuse database or dependency service passwords for directory access.
Registry pull credentials likewise remain platform-owned.
3.2 - Installing Policy
Instructions for installing Policy.
This section describes the steps to install and verify Policy. Ensure that all the prerequisites for installation have been met. For more information about the prerequisites, refer to Prerequisites.
Create the Namespace
Create the Policy namespace:
kubectl create namespace pty-policy
Continue to Provision the Registry Pull Secret.
Provision the Registry Pull Secret
Policy workload images are downloaded from the PPC workload-image registry. This can differ from the chart registry you logged in to with helm registry login. This login enables Helm to download the chart. It does not let the cluster nodes pull images. If the Secret is needed and missing, then the pods fail with ErrImagePull or ImagePullBackOff.
Perform the following steps to provision the registry pull secret:
Read the Secret name configured by PPC:
exportREGISTRY_SECRET_NAME="$(kubectl --namespace default get configmap nfa-config \
-o jsonpath='{.data.REGISTRY_SECRET_NAME}')"echo"REGISTRY_SECRET_NAME=${REGISTRY_SECRET_NAME:-<empty>}"
If the value is empty, the nodes authenticate to the registry themselves. Skip to Database Credentials. For more information refer to Database Credentials.
If the value is set, copy the Secret into the Policy namespace. Replace default if your PPC platform namespace differs.
If the command reports AlreadyExists, do not overwrite the Secret. Verify it in the next step.
Verify the Secret:
kubectl --namespace pty-policy get secret "$REGISTRY_SECRET_NAME"
The TYPE must be kubernetes.io/dockerconfigjson. Resolve any error before continuing.
The chart references only the Secret’s name and never reads or copies its data through Helm. The copy is not synchronized. When the platform Secret is renewed or replaced, update the copy in pty-policy.
Database Credentials
Create the three database Secrets from the files prepared in prerequisites:
(set -e
for role in maintenance runtime backup;do kubectl --namespace pty-policy create secret generic "policy-db-${role}"\
--from-file="postgres_user=$HOME/.config/protegrity/policy/credentials/${role}-username"\
--from-file="postgres_password=$HOME/.config/protegrity/policy/credentials/${role}-password"done)
The commands create policy-db-maintenance, policy-db-runtime, and policy-db-backup.
They read passwords from the protected files without printing them.
For managed credential delivery instead, see credential handling.
PPC Service Credentials
Create the integration Secrets from the prepared PPC user credentials:
(set -e
for service in pim traverse;do kubectl --namespace pty-policy create secret generic "${service}-credentials"\
--from-file="username=$HOME/.config/protegrity/policy/credentials/${service}-username"\
--from-file="password=$HOME/.config/protegrity/policy/credentials/${service}-password"done)
The commands create pim-credentials and traverse-credentials.
Policy uses these users to obtain and refresh dependency access tokens.
The standard installation does not require a separate values file.
For nondefault settings, append --values customer-values.yaml with your configuration file.
See configuration for supported overrides.
The chart automatically:
Deploys the Policy API, Panel, and in-stack PostgreSQL.
Creates the database logins from the supplied credentials.
Configures pmx_app membership and database permissions.
Initializes the application schema through the bootstrap Job.
Registers the built-in Policy roles and gateway authorization resources.
Creates storage claims using PPC’s configured storage classes.
Configures startup, readiness, and liveness probes.
Database provisioning automatically creates pmx_app, a PostgreSQL NOLOGIN permission role, and grants it to runtime.
The wait options keep Helm running until workloads and bootstrap Jobs are ready.
You do not need to inspect database grants, repeat health probes, or recheck chart-created roles.
If Helm fails, use installation troubleshooting.
Keep the credential files until installation completes and you store the credentials through your normal secret-management process.
After Helm completes, follow Creating Policy users
to create or assign the named PPC account that will sign in.
The chart registers the built-in roles. You assign them to people separately.
Verifying the Installation
Helm waits for workloads and database bootstrap through the command’s wait options.
No separate installer checks of database grants, built-in roles, or health probes are required.
Complete these steps with your assigned PPC account:
Get the Policy web address from PPC:
kubectl --namespace default get configmap nfa-config \
-o jsonpath='https://{.data.FQDN}/pty/policy/v1.0/ui/{"\n"}'
The command uses the PPC cluster’s fully qualified domain name (FQDN).
Use your configured path if your installation overrides the default.
Open that address in your browser and sign in with your named PPC account.
Open the Policy Library.
The Library displays the policies you can access.
An empty list is normal before anyone creates a policy.
If you configured Traverse directory connections before installing Policy,
the connection owner may need to save those details again.
See the identity provider (IdP) backfill issue.
3.3 - Creating Policy Users
Create named PPC users and assign Policy roles after installing the Helm chart.
People sign in to Policy with named Protegrity Provisioned Cluster (PPC) accounts.
The Policy Helm chart registers the built-in roles during installation.
A PPC user with administrator permissions assigns these roles to people.
Human accounts are separate from the integration service users prepared in
prerequisites.
Prerequisites
Complete Policy installation
before assigning its chart-created roles.
Use a PPC account with administrator permissions to manage users.
Policy Roles
Choose the role required for the person’s tasks:
Role
Access
policy_viewer
View policies.
policy_author
View, create, edit, compile, preview, and restore policies into draft review.
policy_admin
Add review, approval, archive, audit, system configuration, and observability capabilities to author access.
Use the authorization reference
for capability details and policy-specific grants.
Do not grant administrative access merely to provide author or read-only access.
Create a Policy User
Complete these steps in the PPC command-line interface (CLI):
Log in to the PPC CLI as a PPC user with administrator permissions.
See Accessing the PPC CLI.
Replace the placeholders with the person’s account details.
Run credential-setting commands in a protected CLI Manager session without command recording.
For read-only access, use policy_viewer instead of policy_author.
List PPC users:
admin list users
The output includes the account you created.
For an existing user, follow PPC user management.
Include every role the account must retain when changing its roles.
Updating a user’s roles replaces the existing role list.
4 - Configure Policy
Choose deployment values, runtime settings, and identity controls for Policy.
Platform operators configure Policy through the selected chart and approved
secret management. Protegrity Provisioned Cluster (PPC) administrators control human and dependency access.
Use nonsecret customer values to record deployment choices reproducibly.
A chart value controls generated Kubernetes resources.
An environment variable configures the running backend process.
A credential Secret supplies sensitive values. Changing one does not automatically change the underlying account.
Choose a Reference
Choose the reference that matches the setting:
Refer to Security settings to distinguish human capabilities, resource grants, worker credentials, network access, and signing keys.
Do not edit generated ConfigMaps as a lasting configuration method.
Helm can overwrite those edits, and existing processes may retain old values.
A healthy rollout does not establish correct downstream identity or protection.
Reference human authority, workload identities, credential handling, signing keys, and network trust.
Policy separates authenticated users, command capabilities, resource grants,
and integration identities. Each controls a different boundary.
Successful network access does not establish permission to approve or repair policies.
The application programming interface (API) and Policy Integration Manager (PIM)
also enforce different authority boundaries.
Security Controls
The chart uses non-root workloads, restricted container contexts, dropped Linux
capabilities, and read-only filesystems where applicable.
It disables privilege escalation and limits network paths.
These settings do not replace gateway authentication or cluster network enforcement.
Keep local mode and fake dependencies disabled in customer deployments.
Keep certificate verification enabled with the correct trust material.
Do not treat authentication failures as reasons to bypass the gateway.
Roles and Authorization
With authorization.enabled: true, the chart registers human application roles
and gateway authorization resources.
Policy derives actors from trusted platform identity.
Callers must not forge identity headers or send another user’s audit identity.
The following table summarizes each built-in role and its authority boundary:
Role
Authority and Boundary
policy_viewer
View permitted policy information. Do not submit, request changes, or approve.
policy_author
Add authoring, compilation, preview, and rollback capabilities. Require applicable resource grants for protected commands.
policy_admin
Add broad review, approval, archive, audit, system-configuration, and observability capabilities. Reserve for approved administration.
Reviewer and approver describe responsibilities, not a fictional reviewer role.
Different authenticated people can author, review, and approve.
Policy command checks do not themselves require different people.
Apply your deployment’s approved separation-of-duties requirements.
Never share credentials to demonstrate a handoff.
Use this table to match common tasks with their required command authority:
Task
Required Command Authority
Create, edit, or submit
Require policy:edit and applicable policy owner/editor authority.
Request changes or inspect saved validation
Require policy:review.
Approve
Require policy:approve.
Archive or retry withdrawal
Require policy:archive.
Retry publication
Require policy:approve.
Inspect restricted operations or validation diagnostics
Require policy:audit.
Read metrics
Require policy:observability.
Change runtime log settings or reconcile ownership
Require policy:system-configure. Also require archive authority for reconciliation withdrawal.
Owner/editor grants do not supply review or approval capability.
Author capability alone does not permit reviewer decisions.
Audit read access does not authorize recovery mutations.
Do not grant the broad administrator role merely to satisfy one task.
Identity owners assign the chart-registered roles to the appropriate human accounts.
Gateway policy-library-read, policy-library-edit, and policy-library-admin
permissions map to different capability bundles.
The Library administrator permission does not include every system or observability permission.
Unknown authorities grant no capability.
Refer to roles and permissions and
API authentication for shared contracts.
Consumer Evidence
The empty-string default for GUARDRAILS_CONSUMER_USERNAME accepts anonymous-only pull evidence.
Only requests with absent or empty identity qualify in this compatibility mode.
Named requests do not qualify under the empty-string default.
A nonempty value permits receipts only for an exact gateway-verified service username.
Qualifying 200 and 304 retrievals can both record receipts.
With a nonempty setting, anonymous reads and diagnostics under another identity do not qualify.
A matching receipt does not prove Federated Guardrails activation.
A receipt records a qualifying read of a particular product artifact.
Activation means the consumer actually applies that configuration. Read evidence alone cannot establish it.
The setting does not authenticate that user.
The gateway must validate identity and reject caller-supplied identity headers.
Network policies alone cannot establish trusted identity.
Keep the Guardrails consumer’s credentials separate from human, PIM, and Traverse credentials.
The chart maps apiService.environment.GUARDRAILS_CONSUMER_USERNAME through the API ConfigMap into the environment.
Credential Handling
Keep the following credentials separate.
Database usernames below are examples, not defaults. Dependency usernames are documented conventions.
The following table summarizes credential identities and their boundaries:
Credential
Username or Identity
Permissions and Boundary
Credential Reference
Database maintenance
Choose a login such as policy_maintenance
Own the Policy database and schema. Perform migrations and approved restores, never ordinary API work.
Use policy-db-maintenance by default
Database runtime
Choose a login such as policy_runtime
Inherit pmx_app for reads and allowlisted writes. Do not own schema or rewrite protected history.
Use policy-db-runtime by default
Database backup
Choose a login such as policy_backup
Read tables and sequence values for dumps. Do not write or inherit runtime grants.
Use policy-db-backup by default
PIM worker account
Use the provisioned account, conventionally pmx.pim.service
Permit inventory, background writes, and token login. Do not substitute for the interactive caller.
Use pim-credentials by default
Traverse service account
Use the provisioned account, conventionally pmx.traverse.poller
Permit all-datastore visibility, protection-state writes, and token login.
Attribute commands and authorize caller-driven dependency mutations.
Obtain the user’s own gateway token
pmx_app is an automatically created PostgreSQL NOLOGIN permission role, not a credentialed account.
The database reference
defines its grants and the runtime/backup boundary.
For database and service credential Secret names and keys, refer to the installation
steps for database credentials
and PPC service credentials.
For exact account names, dependency roles, database grants, and Kubernetes identities,
refer to accounts and permissions.
Do not store secrets in values files, --set arguments, tickets, or log excerpts.
Treat logs and diagnostics as sensitive even where credential redaction applies.
The platform-owned login-only policy_service_login role contains
can_create_token. Combine it with the dependency’s required access.
Do not modify chart-managed human roles to obtain worker login.
PIM background publication and withdrawal need policy-write access.
Read-only Workbench permission is insufficient.
Grant only the required dependency access through approved mappings.
The documented PIM account uses workbench_administrator plus policy_service_login.
The documented Traverse account uses discoverx-automation-client, discoverx-admin,
and policy_service_login.
Traverse administrator visibility does not grant the automation role’s state writes.
Its current administrator requirement is a compatibility exception, not a read-only role.
Do not replace either assignment with a guessed least-privilege bundle.
A Policy administrator role does not grant Workbench permission to a human.
Interactive PIM mutations require the caller’s forwarded credential and dependency authority.
They do not silently fall back to the worker account.
Platform account changes do not automatically update Kubernetes Secrets.
For registry access, the chart references the platform-named Secret already
present in the release namespace. It does not create, copy, or rotate it.
Coordinate renewal with the platform owner.
For managed database credentials, inspect external secret reconciliation and
deletion policies before rotating or removing anything.
Changing a Secret alone does not necessarily change an existing database login.
External Resources After Uninstallation
Helm removal does not revoke external accounts or erase every backup.
The uninstallation procedure
separates retained-data removal from irreversible cleanup.
Use these ownership boundaries when preparing that cleanup:
Resource
Owner and Cleanup Boundary
Live database claims and volumes
Have the storage owner confirm the selected claim, reclaim policy, and remaining volume.
Dump claim and remote backup copies
Apply the agreed retention period through the backup owner. Verify required copies before disposal.
Velero resources and external storage
Have the backup owner check off-namespace records, snapshots, copied data, and storage-provider deletion.
Database and integration credentials
Preserve recovery identities when retaining data. Have identity owners disable obsolete dedicated accounts and revoke tokens.
Registry credentials
Retain platform ownership. Remove only release-scoped copies through their provisioner, never revoke shared source credentials.
Expect chart-owned Secret removal. Have the connection owner preserve required settings and repopulate them during recovery.
External secret resources
Have the provider owner check deletion policies and stop obsolete reconciliation before removing generated Secrets.
Platform accounts and native policies
Have the relevant product owners verify account revocation and intended target protection or withdrawal independently.
Deleting a Kubernetes Secret does not invalidate its underlying password or token.
For final removal, the identity owner disables the dedicated PIM and Traverse users
and revokes their active tokens through platform administration.
Shared users require a dependency review rather than automatic deletion.
The secret-provider owner removes obsolete remote credentials and synchronization rules.
The change record should identify each owner and their verification result, without secret values.
For retained-data recovery, required database identities and usable dependency credentials remain necessary.
Rotate the Policy Signing Key
Policy signs ownership markers on managed PIM objects.
This privileged operation changes persisted signing identity and native markers.
It is not a routine password rotation.
Use an approved change window, recoverable signing state, and working PIM access.
Complete the explicit cluster-context setup
in this operator session before running signing commands.
Confirm that the reported cluster and selected namespace identify the intended Policy deployment.
Stop if either differs from the approved change target.
The packaged operator command supports status, rotate, and re-sign.
For an authorized operator, status inspection uses:
The command reports fingerprints, not key material.
After approving rotation, use the same command with rotate instead of status.
Rotation re-signs managed markers and requires no pod restart.
If PIM becomes unavailable, restore access and run re-sign.
Inspect status again before declaring completion.
The previous key’s default seven-day grace period starts only after successful re-signing.
Markers still needing the previous key can suspend that grace period.
The drop-previous command stops accepting the previous key immediately.
Reserve it for an approved compromise response. Dependent markers will stop verifying.
Do not use it to bypass incomplete re-signing.
Network Policy Integration
The chart provides default-deny policies and selected allow paths.
These policies require a container network interface (CNI) that enforces Kubernetes network policies.
Gateway routes protect API and Panel access.
Health probes access the Service directly and do not prove gateway protection.
Direct diagnostic access can bypass gateway authentication.
The apiConsumers list permits selected direct consumers.
Each entry must specify a namespace and a nonempty pod selector.
Use actual workload labels and set apiConsumers: [] when no direct consumer needs access.
Namespace-only consumer access is not a supported replacement.
Network reachability does not replace caller authentication and authorization.
Procedure
Refer to configuration workflow
for deployment controls.
Coordinate role changes with identity owners and credential rotation with dependency owners.
Do not print Secret values or assign broad roles as troubleshooting shortcuts.
Chart-Managed Security
The chart configures workload security settings, network policies, and gateway authorization resources.
It registers the built-in roles and their permission mappings automatically.
Installers do not need to inspect these resources or retest the built-in role boundaries.
Platform administrators provide gateway authentication and a CNI that enforces network policies.
Protegrity Provisioned Cluster (PPC) users with administrator permissions assign user access and manage external dependency credentials.
5 - Back Up and Restore Policy
Take a logical backup, select a recovery snapshot, restore the database, and resume Policy safely.
Use this procedure as the platform operator and database maintenance owner.
Policy keeps PostgreSQL inside its stack.
A backup protects Policy’s database, not changes made in other products.
Agree on acceptable data loss and a maintenance window before recovery.
Note: Earlier Amazon Web Services (AWS) restore drills used one shared database identity.
They do not qualify the current release’s three database identities.
Azure evidence covers mocked chart checks only.
Engineering or Quality Assurance must qualify these command sequences on your target platform before production use.
Before You Begin
Use Bash, Helm, kubectl, and jq with access to the intended cluster.
Install the Velero command-line interface when using Velero snapshots.
Obtain permission to manage Policy Jobs, workloads, and backup resources.
Preserve the original maintenance, runtime, and backup usernames and credential Secrets.
Keep the original chart version, configuration, signing keys, and dependency credentials in protected recovery storage.
Coordinate other maintenance sessions. Suspending a CronJob does not stop existing Jobs or prevent another operator from creating one.
Run the examples in one dedicated Bash shell.
The defaults below match a standard installation; adjust names for custom deployments.
Set POLICY_REGISTRY_HOST to the chart registry used during installation.
Use the chart version from the installation or recovery record, not a newer release.
set -euo pipefail
set +x
umask077CTX="$(kubectl config current-context)"POLICY_NAMESPACE='pty-policy'VELERO_NAMESPACE='pty-backup-recovery'VELERO_SCHEDULE='policy-db-backup'BACKUP_PVC='policy-db-backup-pvc'CHART="oci://${POLICY_REGISTRY_HOST:?Set the chart registry host}/policy/helm/policy"CHART_VERSION='1.1.0'kubectl --context "$CTX" cluster-info
helm --kube-context "$CTX" list --namespace "$POLICY_NAMESPACE" --filter '^policy$'
Confirm the displayed cluster and installed chart match your recovery plan.
Do not continue against another cluster.
For disaster recovery, use the protected configuration and credentials from the source installation.
Understand the Backup Boundary
The chart writes a logical Structured Query Language (SQL) dump to a separate persistent volume claim (PVC).
The default location is policy-db-backup-pvc, containing pg_dump.sql.
It does not contain PostgreSQL’s live data directory.
Each successful dump replaces the previous file only after staging succeeds.
A failed dump leaves the previous file intact, so file presence does not establish freshness.
Velero snapshots this dump claim, not the complete application or dependency environment.
It does not include database credential Secrets or external product state.
An older snapshot contains the dump captured then, not an arbitrary point in database history.
Without Velero or another approved off-node copy, a retained local dump does not protect against storage loss.
Backup Settings
Record nondefault settings in your protected customer values file.
The following settings control dump and snapshot scheduling:
Setting
Default
Purpose
backup.enabled
true
Enable the dump Jobs and backup claim.
backup.schedule
0 */3 * * *
Run a logical dump every three hours.
backup.veleroEnabled
true
Enable Velero snapshots when the platform supplies Velero.
backup.veleroSchedule
30 */3 * * *
Schedule snapshots thirty minutes after dump scheduling.
backup.veleroNamespace
pty-backup-recovery
Locate the platform’s Velero resources.
backup.scheduleName
policy-db-backup
Name the Velero Schedule.
These settings select or configure recovery storage and replay:
Setting
Default
Purpose
backup.backupName
""
Select a specific recovery backup. Otherwise use the Schedule’s latest backup.
backup.pvcName
policy-db-backup-pvc
Name the logical-dump claim.
backup.pvcSize
10Gi
Request capacity for the dump claim.
backup.storageClass
""
Keep a bound claim’s class or use the platform backup class.
backup.restoreDeadlineSeconds
21600
Limit the replay Job to six hours; require a positive integer.
global.restore
false
Stop application processing and enable recovery when true.
Use the protected configuration again when resuming normal operation.
The snapshot offset does not guarantee that a dump has finished.
Choose schedules, capacity, and retention for your deployment.
Changing a storage-class value does not migrate an existing claim.
The claim’s Helm retention annotation does not protect against explicit deletion or storage loss.
Check Automatic Backups
Inspect the configured schedules and recent dump Jobs:
kubectl --context "$CTX" --namespace "$POLICY_NAMESPACE"\
get cronjob policy-db-backup-cronjob
kubectl --context "$CTX" --namespace "$POLICY_NAMESPACE" get jobs,pvc
kubectl --context "$CTX" --namespace "$POLICY_NAMESPACE" get jobs\
-l app.kubernetes.io/component=db-backup --sort-by=.metadata.creationTimestamp
In normal mode, expect SUSPEND to show False, the dump claim to show Bound,
and recent scheduled Jobs to complete.
Select the exact recent Job name from that output:
Expect a Complete condition with status: "True" and a recent completion time.
Investigate a failed Job or an unexpectedly old completion time.
An older successful Job does not prove that the latest scheduled dump succeeded.
When Velero is enabled, inspect its Schedule and completed backups:
Expect the Schedule to remain unpaused and recent backups to report Completed with zero errors.
Correlate the selected snapshot with the preceding successful dump.
Do not assume the thirty-minute schedule offset establishes that relationship.
Take a Backup Now
This sequence creates a new logical dump using the chart’s existing CronJob template.
It does not create database credentials or run the destructive development test scripts.
Run it only in normal mode, with backups enabled and no other maintenance session.
Save normal-mode values privately before changing scheduling.
Expect true from the configuration check.
The private values file can contain sensitive configuration.
Helm accepts this JSON file through its --values option.
Retain it and the exact chart version in approved recovery storage outside the cluster.
Do not include it in support logs or source control.
Confirm both schedules currently run normally, then pause them.
If a schedule was already paused, stop and identify its maintenance owner.
Pausing does not cancel an active dump or snapshot.
Wait for existing dump Jobs and Velero backups to finish.
Check for nonterminal dump Jobs:
kubectl --context "$CTX" --namespace "$POLICY_NAMESPACE" get jobs\
-l app.kubernetes.io/component=db-backup -o json | jq -e '[.items[] | select(
any(.status.conditions[]?;
(.type == "Complete" or .type == "Failed") and .status == "True") | not
)] | length == 0'
Expect true before starting another dump.
If false, inspect the listed Jobs and wait for them to finish.
Also wait for any active Velero backup shown in the previous section.
Do not run overlapping dump writers against the shared staging filename.
Expect this new Job to complete after its recorded start time.
The inherited command replaces pg_dump.sql only after a successful dump.
Completion of this exact Job therefore confirms a fresh dump write.
Stop if it fails or times out; do not treat the previous file as the requested backup.
If Velero is enabled, capture this dump in a named recovery snapshot.
Keep dump scheduling paused until the snapshot finishes.
Expect true and review any warnings before accepting the checkpoint.
Record the exact backup name and completion time, not just the Schedule name.
Without Velero, this procedure creates only the dump on the existing claim.
Recheck both schedules.
If any step fails, inspect the exact Job or backup and notify the maintenance owner.
The schedules remain paused until that owner resolves the failure and explicitly resumes them.
Qualify a Backup Checkpoint
Record the dump Job, its completion time, the exact snapshot name, and the chart version.
Retain the original values and credential references separately.
A completed snapshot alone does not establish application-level recoverability.
Rehearse recovery with representative policy revisions and history.
Include signing-key recovery and external-product reconciliation in that rehearsal.
Policy signs ownership markers on Policy Integration Manager (PIM) objects.
If signing keys changed after the backup, coordinate with the PIM administrator.
For information about signing keys, refer to signing keys.
Restore Prerequisites and Stop Conditions
Restore replaces database contents and can discard changes after the selected dump.
Use an approved maintenance window and preserve the current database when possible.
Keep the original three usernames and matching credentials available.
Use the same chart and application versions as the approved recovery record.
Do not use database restore to repair an ordinary connectivity or publication failure.
Stop when the dump’s provenance, storage attachment, credentials, or version compatibility is uncertain.
Exclude other database clients, including sessions using the maintenance username.
The chart’s session check and advisory lock do not exclude every competing maintenance client.
Velero backup: recover a named earlier snapshot into a prepared recovery target.
Both paths keep application processing stopped during replay.
The chart omits ordinary bootstrap, suspends scheduled dumps, and pauses Velero scheduling in restore mode.
It uses the maintenance identity for one transactional SQL replay.
Set NORMAL_VALUES to the protected original JSON values file before choosing either path.
Check that it describes normal operation, then read the original Velero setting:
test -s "${NORMAL_VALUES:?Set the protected original values file}"jq -e '.global.restore == false and .backup.enabled == true'"$NORMAL_VALUES"USE_VELERO="$(jq -er '.backup.veleroEnabled | tostring'"$NORMAL_VALUES")"
Expect true from the configuration check.
Do not use a values file captured after entering restore mode.
Restore from the Existing Dump Volume
Use the NORMAL_VALUES file saved before recovery overrides.
For another shell, set it to the full path of that protected file.
Confirm the existing claim contains the intended dump; this path cannot select an older file.
Stop scheduled dumps and active dump Jobs before stopping the application programming interface (API).
Deleting backup Jobs here terminates in-flight dumps, not stored database contents.
Expect the restore Job to complete successfully.
The six-hour timeout matches the default replay deadline.
If Helm fails, inspect the Job and its logs; keep the API stopped.
Do not enable automatic rollback or return to normal mode to hide the failure.
Use an approved recovery target with the same Policy namespace and no existing dump claim.
Prepare its platform dependencies, original database Secrets, and protected normal-mode values first.
Recovering storage does not recover those credentials.
Do not delete an existing claim or uninstall a healthy release to follow this path.
If the target contains retained storage, use the retained-storage handoff.
Select the exact completed backup from the source cluster’s available recovery storage.
Use the list in Check automatic backups.
Select the newest completed snapshot for latest recovery, or an approved older snapshot.
RESTORE_BACKUP='replace-with-the-approved-backup-name'kubectl --context "$CTX" --namespace "$VELERO_NAMESPACE"\
get backups.velero.io "$RESTORE_BACKUP" -o json | jq -e '.status.phase == "Completed" and (.status.errors // 0) == 0'test -s "${NORMAL_VALUES:?Set the protected original values file}"
Expect true. Record the selected backup and its captured dump time.
Do not use a failed backup or assume its name establishes freshness.
Create the recovery release with the source values and selected backup.
Do not add --wait-for-jobs in this phase.
The SQL replay Job intentionally stays suspended until Velero completes recovery.
An existing failed or differently selected policy-db-restore needs operator investigation; do not delete it blindly.
Wait for Velero, then check its exact source and error count.
Helm checks Velero’s state when rendering; it does not watch for completion automatically.
Continue only after SQL replay succeeds.
Verify and Resume Normal Operation
Confirm replay completion and inspect restored records before starting the API.
kubectl --context "$CTX" --namespace "$POLICY_NAMESPACE"\
wait --for=condition=complete job/policy-db-restore-job --timeout=10m
kubectl --context "$CTX" --namespace "$POLICY_NAMESPACE"\
exec statefulset/policy-database -c policy-database -- sh -ec \
'PGHOST=127.0.0.1 PGUSER="$PMX_BACKUP_USER" PGPASSWORD="$PMX_BACKUP_PASSWORD" \
psql -X --no-password -v ON_ERROR_STOP=1 -d "$POSTGRES_DB" \
-c "SELECT version_num FROM public.alembic_version;" \
-c "SELECT count(*) AS policies FROM public.policies;" \
-c "SELECT count(*) AS revisions FROM public.policy_revisions;" \
-c "SELECT count(*) AS history_events FROM public.policy_lifecycle_events;"'
Compare the schema and known policy/history records with the recovery record.
Counts alone do not prove data fidelity.
Keep the API stopped if the result differs unexpectedly.
Have the PIM, Traverse, and Guardrails owners reconcile changes made after the backup.
Restoring SQL cannot reverse those external effects.
Do not resume processing when a restored pending request could repeat or reverse an uncertain external change.
Clear manual dump suspension, then restore the original normal-mode configuration.
The original values restore the original Velero setting.
Do not resume with temporary backup.veleroEnabled=false overrides or blindly reuse recovery values.
Normal mode reruns bootstrap and runtime checks before admitting the API.
Sign in with your own Policy account and open Policy Library.
Compare known approved versions, drafts, and history with the selected backup.
Then repeat Take a backup now to confirm a new dump and, when enabled, a new snapshot complete.
If recovery fails, collect the exact Job or Restore status and logs.
Keep restore mode enabled and use the diagnostic handoff.
Do not change credentials, delete storage, or restart ordinary processing merely to obtain healthy pods.
Recovery Limits
SQL replay cannot reverse PIM, Traverse, or Guardrails effects after the backup.
A restored publication receipt does not prove current runtime protection.
Use reconciliation and recovery with the integration owners.
Do not infer a supported downgrade or recovery-time guarantee from a successful replay.
Recover after Uninstall
Use this path when uninstallation removed workloads but retained database storage.
This is not a fresh installation or a routine release change.
A generic reinstall against retained storage is not a qualified customer procedure.
Contact your platform/database recovery owner or Protegrity Support before reattaching retained claims.
Provide claim identities, original chart and image versions, protected configuration references, and the selected recovery checkpoint.
Do not send credential values.
Healthy retained live data may not need SQL replay.
Replaying an older dump can discard newer state.
Do not run a fresh installation against retained storage or regenerate its credentials.
If the shared identity-provider Secret needs recovery, follow the
backfill guidance.
Remove Policy workloads while keeping recoverable data, or explicitly delete approved storage and the dedicated namespace.
Use this task as the platform operator to remove Policy.
Choose Option A to keep data, or Option B to remove it.
Helm removal does not withdraw policies from receiving products.
Verify a backup checkpoint
when you need recovery. Preserve database credentials and required signing state separately.
Confirm the release, namespace, and removal window with the platform owner.
These examples use release policy in namespace pty-policy.
Keep recoverable backups and credentials until you verify the chosen outcome.
Set the approved cluster context before running commands:
exportCTX='your-approved-kubernetes-context'kubectl --context "${CTX:?Set CTX to the approved context}" cluster-info
helm --kube-context "$CTX" --namespace pty-policy status policy
Confirm that the cluster and release match your removal request.
Stop if either identity differs or remains uncertain.
If Helm reports no release, confirm the prior uninstall in your change record.
Then use Option B only after verifying ownership of the remaining resources.
Option A: Uninstall and Keep Data
To uninstall while retaining the data, follow these steps:
Record the release values and storage identities in your approved change record.
helm --kube-context "${CTX:?Set CTX}" --namespace pty-policy get values policy
kubectl --context "$CTX" --namespace pty-policy get pvc -o wide
Record each claim, backing volume, chart version, and running image identity.
Retain the three database usernames, their credential references, and the recovery plan.
Do not copy secret values into the change record.
Confirm that no publication or withdrawal still requires the Policy workers.
Archive acceptance alone does not prove completed removal.
If protection must remain, obtain the receiving product owner’s approval.
Helm removes chart-owned workloads and routes.
The database claims and retained backup claim remain unless another controller removes them.
The chart-owned shared identity provider (IdP) Secret does not remain.
Inspect the remaining workloads and storage.
helm --kube-context "$CTX" --namespace pty-policy list --all
kubectl --context "$CTX" --namespace pty-policy get \
deployments,statefulsets,pods,services,jobs,cronjobs,pvc
kubectl --context "$CTX" --namespace pty-policy get secrets
Expect no Policy serving workloads and no installed policy release.
Compare retained claim and Secret names with your recovery record.
Investigate unexpected leftovers by ownership. Do not delete them automatically.
Verify Retained Data
Confirm that retained claims still reference the recorded volumes.
Check that required credentials and external backup copies remain recoverable.
If expected storage or credentials are missing, stop and involve the storage or identity owner.
To reinstall using retained data, follow
retained-storage recovery.
An ordinary fresh installation is not a recovery procedure.
Option B: Uninstall and Remove Data
Confirm Cleanup Inputs
Complete Option A first.
Have the storage owner review volume reclaim policies, snapshots, and remote copies.
Select the exact live database and backup claim names from the recorded inventory.
The default backup claim is policy-db-backup-pvc. Verify actual names.
Warning: Deleting claims can irreversibly destroy database and backup data. Deleting a namespace removes every resource in it, including Secrets. Continue only with explicit data-loss approval and verified exclusive Policy ownership of pty-policy. Neither operation guarantees erasure of snapshots or remote copies.
Remove Approved Resources
To remove the approved resources, follow these steps:
Inspect the remaining claims before selecting deletion targets.
kubectl --context "${CTX:?Set CTX}" --namespace pty-policy get pvc -o wide
Confirm each selected claim’s exact name and backing volume with the storage owner.
Delete one explicitly approved claim at a time.
Replace the example with the exact claim name before running:
APPROVED_PVC='replace-with-one-approved-claim-name'kubectl --context "${CTX:?Set CTX}" --namespace pty-policy \
get pvc "${APPROVED_PVC:?Set APPROVED_PVC}"read -r -p 'Type the claim name to approve its deletion: ' CONFIRMED_PVC
if["$CONFIRMED_PVC"="$APPROVED_PVC"];then kubectl --context "$CTX" --namespace pty-policy delete pvc "$APPROVED_PVC"elseprintf'Claim confirmation did not match; nothing deleted.\n'fi
Expect deletion only of the confirmed claim.
Repeat for each approved live-data or backup claim. Do not use --all.
If deletion stalls, ask the storage owner to investigate. Do not remove finalizers.
Complete external-resource cleanup.
Revoke obsolete dedicated credentials through their owners.
Do not revoke shared registry access or credentials needed for retained recovery.
Ask the platform owner to verify exclusive namespace ownership.
Inspect all namespaced resource types, including custom resources:
set -o pipefail
kubectl --context "${CTX:?Set CTX}" api-resources \
--verbs=list --namespaced -o name |whileIFS=read -r RESOURCE_TYPE;do kubectl --context "$CTX" --namespace pty-policy \
get "$RESOURCE_TYPE" --ignore-not-found ||exit1done
Stop if any query fails or shows shared, unknown, or required recovery resources.
Resolve external-secret or other controllers that could recreate resources.
Resource labels alone do not prove exclusive ownership.
Remove the dedicated namespace only after the platform owner confirms that review.
Otherwise, keep the namespace and delete only individually approved resources.
read -r -p 'Type pty-policy after approval to delete the dedicated namespace: ' CONFIRMED_NAMESPACE
if["$CONFIRMED_NAMESPACE"='pty-policy'];then kubectl --context "${CTX:?Set CTX}" delete namespace pty-policy
elseprintf'Namespace confirmation did not match; nothing deleted.\n'fi
Expect namespace deletion after its resources finish terminating.
A stuck namespace needs platform investigation, not forced finalizer removal.
Verify Cleanup
kubectl --context "${CTX:?Set CTX}" get namespace pty-policy --ignore-not-found
No output confirms namespace absence.
If you deliberately retained the namespace, inspect it and confirm only approved resources remain.
Ask the storage owner to confirm each volume’s intended deletion or retention.
Verify external credential revocation and backup disposition through their owning systems.
For a clean reinstall, return to
installation preparation.
Proceed as fresh only after confirming that no old database will be reused.
7 - Policy Application Programming Interface
Find Policy API contracts, an ordered lifecycle example, and authorized recovery references.
Use the Policy application programming interface (API) to author and govern policies.
Track delivery separately from approval and target protection.
Approval establishes a governed revision: the approved version of policy intent.
A draft snapshot records saved proposal content, not another approved revision.
Compilation produces target output. Publication and target activation happen separately.
Begin with authentication and shared contracts.
Choose Your Path
Choose the API reference that matches your task:
Complete an author-to-reviewer handoff with the worked lifecycle.
The API base normally uses /pty/policy/v1.0, independently of the application version.
Your deployed /swagger page and /doc document expose its schema.
Use the endpoint-specific runtime rules here when conditional-header descriptions differ.
An entity tag (ETag) is a server-issued resource validator.
Draft commands use Draft-ETag. Archive uses the policy ETag.
Copy the required token unchanged into If-Match to pin the command to inspected state.
Do not substitute the governed policy validator for a current draft token.
7.1 - Authentication and Shared Request Contracts
Authenticate callers and distinguish command authority, policy grants, draft validators, and ownership preconditions.
Call the Policy application programming interface (API) through your authenticated gateway.
The gateway establishes identity and trusted authorities.
Do not expose the backend directly or supply identity-forwarding headers yourself.
Policy derives audit actors from the authenticated principal.
Never send submittedBy, approvedBy, or an impersonated username in mutation bodies.
Authentication Model
The public API uses the stable /pty/policy/v1.0 path.
That path does not track the Policy application build version.
Use your deployment’s configured external root when it differs.
Helm uses apiService.rootPath. Standalone deployments use SERVER_ROOT_PATH.
Examples assume Bash, curl, and a valid gateway-issued access token.
Obtain your own token through your organization’s approved authentication flow.
Use curl 7.76.0 or later for header-file support and --fail-with-body.
Prepare Credential-Safe Requests
Open a dedicated private Bash session for these requests.
Do not reuse another participant’s shell or credential file.
Set the endpoint without a trailing slash, then enter your token at the hidden prompt.
Enter only the token value, without the Bearer prefix.
The Bash built-ins keep that value out of external-process arguments and shell history.
set +x
set -euo pipefail
umask077POLICY_API="https://policy.example.com/pty/policy/v1.0"unset PPC_ACCESS_TOKEN POLICY_TOKEN
POLICY_CREDENTIAL_DIR=$(mktemp -d "${TMPDIR:-/tmp}/policy-auth.XXXXXXXX")POLICY_AUTH_HEADER="${POLICY_CREDENTIAL_DIR}/authorization.header"trap'rm -rf -- "$POLICY_CREDENTIAL_DIR"; unset PPC_ACCESS_TOKEN POLICY_AUTH_HEADER POLICY_CREDENTIAL_DIR' EXIT
trap'exit 129' HUP
trap'exit 130' INT
trap'exit 143' TERM
IFS=read -r -s -p 'Your gateway access token: ' PPC_ACCESS_TOKEN
printf'\n'if[[ ! "$PPC_ACCESS_TOKEN"=~ ^[A-Za-z0-9._~+/-]+=*$ ]];thenunset PPC_ACCESS_TOKEN
printf'Invalid bearer token format; obtain a token through the approved flow.\n' >&2exit1fibuiltinprintf'Authorization: Bearer %s\n'"$PPC_ACCESS_TOKEN" > "$POLICY_AUTH_HEADER"unset PPC_ACCESS_TOKEN
The private directory permits only its owner to access it.
The header file permits only its owner to read or write it.
Do not export token variables or copy this file into shared storage.
The examples pass only its path to curl, leaving standard input available for payloads.
Keep this shell open while running the requests.
Keep tokens out of unprotected or retained files, shared transcripts, source control, and screenshots.
Do not enable shell tracing or curl verbose output around credentials.
Do not print the header file or log authorization headers.
Use normal certificate verification. Do not copy examples with -k.
Obtain each user’s credentials separately through your approved login flow.
Clean up Credentials
Exit the dedicated shell when you finish or hand off to another participant:
exit
The exit trap deletes the header file and its private directory.
It also clears the credential-path variables.
Forced termination or a host crash can prevent trap execution.
Remove that session’s private directory through approved local cleanup if this happens.
Do not retain credential files with response evidence.
Policy Panel Cookie Fallback
Request-driven deployment accepts the gateway’s accessToken cookie when
the request omits the authorization header.
An explicit blank, malformed, or non-bearer header prevents fallback.
Use the gateway’s normal browser protections. Do not spoof forwarded identity.
Policy does not require a separate cross-site request forgery token for these lifecycle commands.
Capabilities and Policy Access
A capability authorizes a command, such as approval.
A policy grant provides owner/editor access to one policy.
Operations that require both reject callers who hold only one.
Responsibilities do not create product roles.
In particular, Policy does not define a separate policy_reviewer role.
Different authenticated users can author, review, and approve.
These command contracts do not themselves enforce two different people.
Follow any additional separation-of-duties rules that your organization requires.
The following table maps each responsibility to its required capability or policy grant:
Responsibility
Required Capability or Grant
Save or submit an existing draft
Require policy:edit and an active owner/editor policy grant.
Restore a governed revision into draft review
Require policy:rollback and an active owner/editor policy grant.
Refresh saved validation or request changes
Require policy:review.
Approve the reviewed draft
Require policy:approve.
Start archive or record withdrawal evidence
Require policy:archive.
Read operations, diagnostics, or audit export
Require policy:audit.
Reconcile ownership
Require policy:system-configure. Also require archive authority for withdrawal.
Read service metrics
Require policy:observability.
Creation requires policy:edit and grants the creator policy ownership.
An owner/editor grant never creates review, approval, or audit capability.
Grant management requires an active policy owner or an authorized recovery override.
The recovery override remains attributable and auditable.
Do not request broad administrative access merely to complete a review example.
Trusted Authority Mappings
The following table lists trusted authorities and the capabilities each one grants:
Trusted Authority
Capabilities
policy_viewer
Grant policy:view.
policy_author
Grant view, edit, rollback, compile, and preview capabilities.
policy_admin
Grant author capabilities plus review, approve, archive, audit, system configuration, and observability.
policy-library-read
Grant policy:view.
policy-library-edit
Grant policy:edit and policy:rollback.
policy-library-admin
Grant view, edit, rollback, review, approve, archive, and audit. Exclude system configuration and observability.
policy-compile-run
Grant policy:compile.
policy-realization-plan
Grant policy:preview.
policy-system-configure
Grant policy:system-configure.
policy-observability-read
Grant policy:observability.
Policy combines mapped authorities.
Unmapped authorities grant no capabilities.
Ask your access administrator for the approved deployment mapping.
An operations read does not authorize a retry mutation.
Gateway access rules also apply to backend reads that preserve optional-identity compatibility.
Conditional Requests
An entity tag (ETag) is a server-issued validator for a resource’s inspected state.
The If-Match request header carries that validator as a command precondition.
Use the validator for the resource that the command actually changes.
Use this table to choose the required validator for each command:
Command
Required Validator
Save, open replacement draft, rollback, cancel, or submit
Echo the current Draft-ETag through If-Match
Request changes or approve
Echo the reviewed current Draft-ETag, not the author’s pre-submit token
Start ordinary archive
Echo the governed policy ETag through If-Match
Decide ownership reconciliation
Echo the registry ETag. Also send inspected generation and Idempotency-Key
Enumerate bindings after offset zero
Echo the first page’s registry ETag
Retry retained deployment or record archive evidence
Send neither a required validator nor a general idempotency key
Treat every validator as opaque.
Copy it exactly, including quotes and any weak-token prefix.
Policy reads return both policy and draft validators where applicable.
Saved-validation responses also identify the exact head through Draft-ETag and draftEtag.
Draft summaries expose the token as etag.
Snapshot identifiers identify saved content. Validators protect conditional requests.
Do not use draftVersionId, currentVersionId, or a numeric policy version as a validator.
Submission advances the draft head.
The reviewer must read the submitted head before approving it.
Do not reuse the author’s pre-submit token.
After a conflict, review intervening changes before issuing another command.
Missing required validators return 428.
Draft save, submit, and approval reject a non-draft token with 400.
A changed draft head normally returns 409 with current draft context.
Request-changes also returns 409 for token mismatch or a non-review head.
Policy and registry version conflicts can return 412.
Refer to error reference for response shapes.
Deployment Authentication
Background publication and withdrawal use configured integration credentials.
Request-driven compatibility deployment forwards the authenticated user’s token to Policy Integration Manager (PIM).
That user also needs PIM permission for the requested native changes.
Do not use compatibility deployment for normal governed publication.
Approval queues that publication asynchronously.
Guardrails product-policy reads can record delivery evidence.
GUARDRAILS_CONSUMER_USERNAME selects the eligible consumer identity.
It does not authenticate callers.
The empty-string default permits receipts only for requests with absent or empty identity.
It does not permit named requests.
A nonempty setting requires an exact gateway-verified username match.
Qualifying 200 and 304 retrievals can both record receipts.
Anonymous reads do not qualify with a nonempty setting. Diagnostics under another identity do not qualify.
Keep the consumer’s credentials separate from human and other service credentials.
Neither receipt nor publication proves downstream activation.
The chart maps apiService.environment.GUARDRAILS_CONSUMER_USERNAME through the API ConfigMap into the environment.
This setting does not change gateway access rules.
Refer to Guardrails consumer evidence
for the supported default and completion boundaries.
7.2 - Policy API Operation Directory
Find canonical operation families and retain links to earlier endpoint references.
The Policy application programming interface (API) uses the stable
/pty/policy/v1.0 base path, independently of the application build version.
Configure POLICY_API for your gateway through the
authentication reference.
Paths identify policies independently of their draft cycles and saved snapshots.
Check each operation’s required capability, resource grant, and validator before calling it.
A successful lifecycle command can accept asynchronous work without completing target delivery.
Choose an Operation Family
Choose the API reference that matches the operation you need:
Follow the worked lifecycle for
save, submission, separate-user review, approval, and delivery inspection.
The entries below retain earlier endpoint anchors.
Follow a separate-user API handoff using current draft validators and independent delivery evidence.
This application programming interface (API) example follows one Data policy.
The author saves and submits. Another authorized user reviews and approves.
An authorized auditor then inspects delivery.
Separate accounts demonstrate a handoff, not mandatory two-person enforcement.
Before You Begin
Prepare the following before running requests:
Use Bash, curl, jq, and a writable local working directory.
Give the author policy:edit. Creation supplies its owner grant.
Give the reviewing account policy:review and policy:approve through approved mappings.
Give the auditor policy:audit for delivery inspection.
Prepare working discovery, identity, and Policy Integration Manager (PIM) integrations.
Select a supported Data classification, principal, and discovered resource.
Do not grant broad administrator access just to copy this example.
Use your deployment’s existing, approved authority assignments.
Do not share tokens between participants.
The selected principal receives null-read permission, not cleartext access.
Follow your organization’s review rules before running mutations.
Prepare Safe Variables
Each participant supplies only their own token in their own session.
Complete the credential-safe request setup
in each participant’s dedicated Bash session.
Each participant creates their own protected header file through the hidden prompt.
Use the same POLICY_API and policy identifier across the handoff.
Do not enable shell tracing, print the token, or log authorization headers.
Follow credential cleanup
when each participant finishes.
set -euo pipefail
: "${POLICY_API:?Set the deployment endpoint during authentication setup}": "${POLICY_AUTH_HEADER:?Complete authentication setup with your own author token}"
Retain only safe response bodies and headers, never the temporary credential file.
The helper preserves the exact draft token:
draft_etag(){ awk '
tolower($1) == "draft-etag:" {
sub(/\r$/, "")
sub(/^[^:]*:[[:space:]]*/, "")
value = $0
}
END {
if (value == "") exit 1
print value
}
'"$1"}
Save as the Author
As the author, complete these steps to prepare and save the draft:
The responses identify available classifications, principals, and discovered resources.
Choose a PIM-supported principal and matching resource classification.
Stop if integration evidence or supported selections are missing.
Set the selected catalog identifiers in your session.
: "${CLASSIFICATION:?Set an exact classification identifier from the catalog}": "${PRINCIPAL_ID:?Set the selected supported principal identifier}": "${RESOURCE_ID:?Set the selected matching discovered resource identifier}"
The server derives protection methods from the selected inputs.
An empty actions list does not mean null-read permission.
Optional trusted applications belong in compileRequest.trustedApplications, separately from permission principals.
Expect 201, a policy identifier, and a Draft-ETag header.
Save creates a draft. It does not approve or publish it.
Save can retain validation findings that prevent later submission.
Keep POLICY_ID for policy paths. Do not replace it with draftPolicyId or a snapshot identifier.
The draftPolicyId identifies the stable Draft Policy. The draft summary’s cycleNumber identifies its cycle.
Submit and Hand Off
As the author, complete these steps to submit the current draft and hand it off:
Expect 200 with the draft entering in_review.
Submission advances its token and queues no publication.
If validation blocks submission, stop and inspect the returned safe findings.
Correct hard conflicts. Do not manufacture acknowledgements.
For reviewable findings, follow the notes and conflict-identifier requirements in the
submission contract.
Give the reviewer the policy identifier and review context.
Do not give them your token or pre-submit validator.
They authenticate separately and retrieve the current submitted content.
Review as Another User
As the reviewer, complete these steps to review the submitted draft:
Authenticate in the reviewer’s session.
Complete the credential-safe request setup
with the reviewer’s own token in a separate dedicated Bash session.
Do not copy the author’s credential file or token.
set -euo pipefail
: "${POLICY_API:?Set the same deployment endpoint during authentication setup}": "${POLICY_ID:?Use the policy identifier supplied for review}": "${POLICY_AUTH_HEADER:?Complete authentication setup with your own reviewer token}"
Expect 200, current draft identifiers, findings, and the same token in Draft-ETag.
This clean-path example stops when conflicts exist.
An author without review capability cannot use this endpoint.
The approver must reconsider any changed findings before acknowledgement.
Compare the validated head with the content just reviewed.
If it changed during the handoff, reread the content before approving.
Do not parse the token to infer that content stayed unchanged.
Approve the submitted draft using the validator returned by validation.
Expect 200, a governed revision, and asynchronous publication work.
Policy revalidates current dependencies before accepting approval.
A stale token or changed validation requires another review, not blind retry.
Never send approvedBy. Policy records the authenticated approver.
Request Changes Instead
The reviewer can return the submitted head without changing its authored content:
curl --fail-with-body -X POST \
-H "@${POLICY_AUTH_HEADER:?Complete authentication setup}"\
-H "Content-Type: application/json"\
-H "If-Match: ${REVIEWED_DRAFT_ETAG}"\
--data '{"reason":"Narrow the selected resource scope before approval."}'\
"${POLICY_API}/policies/${POLICY_ID}/request-changes"
Expect 200 with draft.draftStatus: "changes_requested" and a new draft.etag.
The author reloads the returned draft, corrects the complete compileRequest,
saves through PUT /policies/{policy_id}, and submits again.
Use the new current draft token for each command.
This alternative replaces approval. Do not execute it after approving.
Inspect Delivery as an Auditor
As an auditor, complete these steps to inspect delivery evidence:
Authenticate as an authorized auditor and inspect operations.
Complete the credential-safe request setup
with the auditor’s own token in a separate dedicated Bash session.
Do not copy the author’s or reviewer’s credential file or token.
Set POLICY_API and POLICY_ID to the same endpoint and policy used in the handoff.
: "${POLICY_AUTH_HEADER:?Complete authentication setup with your own auditor token}"curl --fail-with-body \
-H "@${POLICY_AUTH_HEADER:?Complete authentication setup}"\
"${POLICY_API}/policies/${POLICY_ID}/operations"\
-o operations.json
jq '.[] | {deploymentId, generation, operation, enforcementState,
retryable, attemptCount, diagnostics}' operations.json
Expect 200 with a top-level operation array.
Retain the deployment identifier and generation for any authorized recovery.
The governed view selects approved inputs, not an open replacement draft’s scope.
The default view=latest selects that draft’s content instead.
Compare the current governed revision, deployment, and expected locations with current observations.
Approval, successful publication, and consumer receipt do not independently prove protection.
Verify target-specific behavior through your approved protection checks.
Verification and Failure Boundaries
Keep the saved policy identifier, reviewed draft version, governed revision,
deployment generation, and safe validation evidence.
History attributes the submitter and approver to their actual identities.
Review or audit capability controls restricted decision-note visibility.
For 409 or 412, reread and reassess intervening changes.
For missing authority, stop and request the appropriate approved access.
For publication failures, follow the
recovery playbook.
Do not call compatibility deployment to force governed publication.
Retained retry does not compile corrected drafts.
7.4 - Application Programming Interface Errors and Safe Recovery
Interpret Policy API failures without confusing stale drafts, unavailable evidence, and retryable delivery work.
Interpret errors within the operation’s application programming interface (API) contract.
The same status can describe different resources and corrective actions.
Interpret Hypertext Transfer Protocol (HTTP) statuses alongside the response body.
Retain the method, path, status, safe response body, and timestamp.
Keep credentials and sensitive request values out of escalation evidence.
Common HTTP Status Codes
Use this table to interpret common HTTP status codes and identify a response:
Status
Meaning and Response
304
Reuse the cached consumer payload when its validator matches. Treat this as successful conditional retrieval.
400
Correct malformed parameters or the wrong validator type before repeating the request.
401
Authenticate through the gateway with your own valid token.
403
Obtain the operation’s capability or required policy grant through approved access management.
404
Check the operation-specific absence meaning. Do not assume every response proves a missing policy.
409
Read the error message. Reload the draft before editing, the operation list before delivery retry, or ownership inspection before reconciliation.
412
Repeat the read that supplied the ETag. Compare the updated content before preparing a request with the new validator.
422
Correct schema violations or validation findings. Preserve the support reference when present.
428
Read the correct resource and supply its required conditional header.
500
Save the error and request time. Check policy detail and history to determine whether the command completed before retrying.
502
Send the returned deployment error and policy identifier to the Policy Integration Manager (PIM) administrator to check for partial changes.
503
Ask the administrator of the named integration to restore access. A failed PIM inventory request does not mean its objects are absent.
For draft commands, a non-draft token normally produces 400.
A stale draft token normally produces 409, not uniformly 412.
Archive uses the policy token. Reconciliation uses the ownership-registry token.
Refer to conditional requests.
An operations 404 can mean no recorded deployments.
A diagnostics 404 can mean expired evidence.
A saved-validation 404 can mean no draft.
Read the status-code description for the endpoint you called before deciding what to retry.
Error Response Shapes
Common service errors use message and optional causedBy fields.
Workflow errors use detail, which can contain a string, object, or validation list.
Do not assume every error contains detail.code.
Compile, submission, and approval can return structured validation failures.
The following example illustrates an approval failure. Do not expect its code from every operation:
{"detail":{"code":"approval_validation_failed","message":"Approval cannot continue until the validation findings are resolved.","conflicts":[],"issues":[{"path":"$.user_attribute","constraint":"required","message":"Set the identity source user attribute."}],"supportReference":"VAL-example"}}
An authorized auditor can retrieve retained evidence through
validation diagnostics.
Records expire after seven days.
The support reference itself does not authorize access.
If you lack policy:audit, retain the safe failure response and reference for an authorized auditor.
Compare each issues[].path with the request schema for the endpoint.
If the message describes an identity-source setting, as in the example, send it and the support reference to the identity integration administrator.
Do not add an unfamiliar configuration field to your policy request merely because the error names it.
Draft conflicts can include detail.currentDraft, with the current etag,
currentVersionId, and draft identity.
Reload policy detail and compare the saved draft with your intended changes before retrying.
Archive-evidence location conflicts can include detail.unexpectedLocationIds.
Ownership conflicts can include the changed affected-policy set or revision map.
Ordinary schema failures can contain a validation-error list instead.
For a changed draft, read current content and validation with the required authority.
Correct the selected input or review the new findings before resubmitting.
After retrying, reload the policy to check the saved content and status.
For publication failures, follow the delivery verification guides.
Retry and Idempotency Guidance
No general idempotency key makes every lifecycle command replay-safe.
After a timeout, first read current policy, history, and permitted operation evidence.
The server might have accepted a command before the connection failed.
Reconciliation decisions require an Idempotency-Key.
An identical accepted decision can replay without another ownership transition.
Keep the original actor, body, registry token, and key for that exact replay.
Changed evidence requires inspection and a new decision.
Retained deployment retry requires no general idempotency key.
It restarts eligible work that stopped after failure.
A repeated request can return 409 while that work is already running again.
Archive-evidence submission can append another immutable event when repeated.
Check history before repeating it after an uncertain result.
Endpoint Groups and Expected Error Patterns
Use this table to identify the correction boundary for each operation family:
Family
What to Check Next
Catalog, compile, and preview
Correct supplied inputs or ask the integration owner to restore missing configuration.
Draft save and submission
Reload the draft and correct the fields named in validation messages.
Review and approval
Reload the submitted draft and validation results using the reviewer’s own account.
Archive and retry
Read the operation list and select the latest publication or removal request.
Reconciliation
Repeat ownership inspection and build the decision from its current allowedActions, identifiers, versions, and ETag.
Product retrieval
Check the consumer’s HTTP response. Use Guardrails monitoring separately to confirm that it applies the retrieved configuration.
Only acknowledge conflicts that explicitly permit acknowledgement.
Never acknowledge a hard validation failure or shared-protector permission widening.
An author without review capability cannot use saved validation as an unrestricted diagnostic shortcut.
An operator may need to repair integrations before the author can continue.
For ownership mismatches, use explicit reconciliation inspection and allowed decisions.
Do not assume waiting for a background refresh authorizes adoption or replacement.
Retrying delivery reuses retained artifacts. It does not compile corrected drafts.
There is no public run-now endpoint for automatic recompilation.
7.5 - Service and Schema Publication Operations
Reference the request, response, and failure contracts for this operation family.
Use the configured POLICY_API base and protected POLICY_AUTH_HEADER file from
authentication.
All paths below are relative to that base.
Examples read the bearer header from that file. Keep request payloads and logs free of credentials.
Consult your deployed /doc document for complete nested schemas.
Response examples illustrate relevant fields rather than every optional property.
These application programming interface (API) reads return direct payloads.
Most reads return 200. Readiness and liveness return empty 204 responses.
Gateway access rules can still return 401 or 403.
Backend health reads do not independently certify target activation or worker completion.
Use the compatibility method for the same process-local log update.
Require policy:system-configure. Accept no path or query parameters.
Send an application/json object with the required string level.
Supported values include debug, info, warn, and error.
The server also accepts legacy uppercase forms.
Return 200 with {"level":"info"}.
Return 400 for invalid levels, 401 or 403 for identity or capability failures,
or 500 for server failures.
Neither log-update method requires If-Match or an idempotency key.
Gateway authentication or authorization failures return 401 or 403.
Liveness failures return 503.
GET /openapi.json
Retrieve the generated OpenAPI schema as JavaScript Object Notation (JSON).
Accept no body, path parameters, or query parameters.
Apply gateway authentication as your deployment requires.
Return 200 with the schema document.
Gateway failures can return 401 or 403. Server failures can return 500.
This automatic schema route does not appear as an operation inside its own document.
Open the browser reference for the deployed schema.
Accept no body or parameters. Return 200 with Hypertext Markup Language (HTML).
The page loads its schema and initializer from the same API root.
Gateway failures can return 401 or 403. Rendering failures can return 500.
Serve the Swagger browser initializer.
Accept no body or parameters. Return 200 with JavaScript.
This auxiliary route supports the browser reference, not policy mutation.
Gateway failures can return 401 or 403. Server failures can return 500.
Serve the browser reference’s empty icon response.
Accept no body or parameters. Return 200 with the image/x-icon media type.
This auxiliary route carries no policy or health evidence.
Gateway failures can return 401 or 403.
Read service metrics in Prometheus exposition format.
Require policy:observability. Accept no body or parameters.
Return 200 with metric text, not a JSON response.
Return 401 or 403 for identity or observability failures.
Metrics collection can also encounter server failures.
This route does not appear in the generated operation schema.
Use metrics with operation history and
automatic recompilation observations.
Check authenticated catalog access separately. A successful health probe does not test every integration operation.
For a failed probe, retain the status, timestamp, and safe health-check output when available.
Ask the platform operator to investigate readiness or dependency failures.
Wait for the operator to restore service before repeating an authoring request.
7.6 - Catalog, Compilation, and Preview Operations
Reference the request, response, and failure contracts for this operation family.
Use the configured POLICY_API base and protected POLICY_AUTH_HEADER file from
authentication.
All paths below are relative to that base.
Examples read the bearer header from that file. Keep request payloads and logs free of credentials.
Consult your deployed /doc document for complete nested schemas.
Response examples illustrate relevant fields rather than every optional property.
These application programming interface (API) operations do not save or approve policies.
Catalog reads expose discovered vocabulary. Compilation and preview evaluate supplied intent.
Require policy:compile for compilation and policy:preview for native preview.
Successful operations return 200.
For commands using request.json, prepare the complete compile body before running curl.
The worked payload construction
shows how to build a bounded compileRequest from current catalog identifiers.
For compilation or PIM preview, save that nested object’s contents as request.json, without the outer create-policy fields.
Policy Integration Manager (PIM) supplies the native Data target.
Build each compile request from current catalog selections.
Use classification identifiers from /catalog, principal id values from /catalog/principals,
and resource id values from /catalog/resources.
Place principal and resource identifiers in the corresponding enforcement row’s principalIds and resourceIds arrays.
Use the exact ID returned by the appropriate current catalog. Do not substitute a display label or an identifier from a different API.
Catalog retrieval does not populate a server-side authoring session.
Send the complete accumulated input with each compile or preview request.
The table lists item fields, their data types, and requirements or defaults:
Item Field
Type
Requirement or Default
id, classification
Strings
Supply the caller’s correlation key and exact classification identifier.
reversible, protectAtRest, formatPreserving
Booleans
Default to true.
lowEntropy, beyondLatin1
Booleans
Default to false.
Place items in the top-level items array. Omission defaults to an empty array.
The response omits items whose classification yields no modeled method.
Recommendation does not establish that every method supports your selected target.
Principal entries and total count. When identity-source provenance is
available, entries include normalized provider values, the source-supplied
discovery.principalUuid, and pimSupported. Unsupported Data Protection
principals include a pimUnsupportedReason. Unknown source compatibility is
left unset rather than inferred.
Use each entry’s exact id for policy selection. name is a display label.
Do not infer an ID format or reject a UUID that the catalog returns.
Select a PIM-supported principal for Data authoring.
An unset pimSupported value does not establish support.
Directory membership does not grant Policy command authority.
Use the returned resource id in the compile request.
Catalog protection labels describe discovered or derived information, not confirmed target activation.
If a required resource is missing, ask the discovery integration owner to check its source.
Do not fabricate an identifier to bypass missing discovery evidence.
Retrieve action catalog for permissions matrix.
This catalog differs from the native and abstract authoring action vocabularies.
Use /schema/authoring-actions for abstract compile actions and /schema/actions for native schema actions.
{"actions":[{"id":"ca-1","name":"read","category":"data-access","applicableLayers":[1,2,3,4,5],"description":"Read/select rows from a table or column"}]}
Error codes:
Possible error codes are 401, 403, and 500.
POST /policies/compile
Compile a policy and return its validation report and emitted entities.
Path parameters
None.
Request body
Compile request payload. The optional trustedApplications array contains
application gates for PIM datastores, separate from user and group permission
principals. Each entry has an applicationName and one or more
applicationUsers. Refer to deployed OpenAPI document for field constraints.
Request parameters
None.
The public compile body accepts these top-level fields:
Field
Type
Default or Meaning
classificationsInScope, frameworks
Arrays of strings
Default to empty arrays.
sensitivityOverrides, protectionOverrides
Objects mapping strings to strings
Default to empty objects.
sensitivityApproved
Array of strings
Default to an empty array.
configOverrides
Object
Default to empty. Map resource identifiers to typed protection configuration.
Default to empty. Supply enforcement point, principal/action scope, and resource identifiers.
protectionIntents
Array of objects
Default to empty. Supply classification and method-selection signals.
trustedApplications
Array of objects
Default to empty. Supply application names and application-user arrays.
federated_guardrails
Nullable object
Supply native Federated Guardrails rules or permission matrix.
Use the deployed schema for typed configOverrides and native rule definitions.
An empty request can span broad discovery inputs. Prefer explicit bounded scope.
Compilation returns findings without creating a draft or changing protection.
Inspect the returned report, not only the 200 status.
Neither compiled entities nor a successful preview establish submission eligibility or target protection.
Possible error codes are 400, 401, 403, 422, and 500.
POST /policies/preview
Preview a policy’s native lowering without applying changes.
Path parameters
None.
Request body
Product-specific preview payload.
Use product=PIM for a bare compile request.
Use product=FEDX for a Federated Guardrails object with required compile
and optional guardrail_rules, dataprotection_rules, content_action_rules, or federated_matrix.
Request parameters
product is required and accepts PIM or FEDX.
The optional boolean reuse_existing defaults to true for PIM inventory reuse.
Inventory reuse concerns native resource planning. It is not a replay or idempotency guarantee.
Product-specific native plan object. For product=PIM, datastore_scopes
can contain an individual registration scope or a shared protector-group scope.
Group scopes retain each source registration, its approved IPv4 ranges, and
source columns, alongside the group’s canonical range union. The plan can also
include source-sensitive authorization evidence used to check that sharing a
native datastore does not widen permissions.
These application programming interface (API) operations inspect and save policy work.
Use POLICY_API and the protected POLICY_AUTH_HEADER file from
authentication.
Saved drafts, governed revisions, and protection states remain independent.
Response examples show relevant fields, not every optional property.
Use the policy identifier in {policy_id} paths, including draft commands.
Set POLICY_ID to that identifier before running examples for an existing policy.
The separate draftPolicyId identifies the stable Draft Policy, not a replacement path identifier.
The draft summary’s cycleNumber identifies its authoring cycle.
Each save records a draft snapshot. Repeated saves do not create new proposed major revisions.
Approval establishes a governed revision. A compilation minor identifies output within that approved revision.
Neither snapshot identifiers nor revision numbers replace server-issued validators.
GET /policies
List visible policy summaries and aggregate counters.
The backend permits optional identity for this compatibility read.
Gateway access rules still apply.
Accept no body or path parameters.
The following table lists supported query parameters and their types and behavior:
Query Parameter
Type
Requirement
search
Optional string
Filter names by a case-insensitive substring.
status
Optional status string
Select a compatibility policy status from the deployed enum.
limit
Optional integer
Bound the returned page. Omission returns the unbounded selected set.
offset
Optional integer
Select the starting position. Omission starts at zero.
includeProtection
Boolean
Request live protection readback. Default to false.
view
String
Select latest by default, or governed for approved content while a draft remains open.
Return 200 with total, dataCount, aiCount, approvedCount, draftCount,
and a policies array.
Each summary identifies id, compatibility status, source, and independent
policyState, draftState, and enforcementState values.
Additional fields describe names, scope, method, validation, and available actions.
governedRevision identifies the approved major revision.
governedMinorVersion identifies compilation output within that revision.
draftPolicyId, draftCycleNumber, and proposedRevisionNumber identify open draft work.
hasOpenDraft distinguishes an approved policy with a replacement proposal.
validationStatus describes authoritative, unavailable, or stale saved validation.
operationIssue summarizes delayed or failed delivery.
availableActions lists actions offered to the caller.
A command can still fail if permissions or policy content change after the read.
Counters use the search-filtered set before the status filter.
For bounded reads, send limit and offset explicitly and retain the same filters and view on later pages.
Do not use aggregate counters as page lengths.
includeProtection=true queries the integrations for current protection observations and can take longer than a stored-state read.
Gateway failures can return 401 or 403. Malformed query values return 422.
Dependency failures can return 503. Server failures can return 500.
GET /policies/{policy_id}
Inspect one policy’s full content and independent state projections.
Require the policy_id path string. Accept no body.
Support the same includeProtection and view query options as listing.
The backend permits optional identity. Gateway access rules still apply.
Return 200 with a policy object.
The object includes id, readableName, version, status, authored fields,
trusted actor attribution, validation findings, and independent state projections.
Imported external records can expose origin, displayOnly, and editable.
includeProtection=true can populate protectionConfirmation.
The response supplies the policy ETag and, when available, Draft-ETag.
Draft commands require the latter.
Use view=latest to inspect current proposal content before a draft command.
Use view=governed to inspect approved content while a replacement draft remains open.
A policy’s approved governance state does not make its open draft approved.
Return 404 for an unknown policy.
Gateway failures can return 401 or 403. Invalid query values return 422.
Live integration failures can return 503. Server failures can return 500.
POST /policies
Create a new policy identity and its first saved draft.
Require policy:edit. Accept no path or query parameters.
Creation grants policy ownership to the authenticated creator.
No prior validator or idempotency key applies.
The application/json body rejects extra fields:
Field
Type
Requirement
readableName
String
Supply the policy’s display name.
compileRequest
Object
Supply the complete compile input that Policy will validate before saving.
source
Optional string
Select data or ai explicitly.
authoringMode
String
Default to gui-builder.
wizardState
Object
Optionally preserve authoring presentation state. Default to an empty object.
cedarSource, nlSummary
Strings
Optionally supply display source and summary. Default to empty strings.
conflicts
Optional array of objects
Supply legacy display-only compatibility data, never authoritative validation.
Policy recomputes validation from compileRequest.
Client conflict lists and client lifecycle states cannot bypass those checks.
Do not send status, createdBy, or another actor.
Refer to worked example for a complete create payload.
Return 201 with the full policy object and policy/draft validator headers.
Save can retain incomplete work and findings. It does not guarantee submission eligibility.
Return 401 or 403 for identity or edit failures, 422 for invalid input,
or 500 for server failures.
After a timeout, list policies and check the matching policy’s detail and history before creating another policy.
PUT /policies/{policy_id}
Save, open, or restore draft work.
Require the policy_id path string and current Draft-ETag through If-Match.
Accept no query parameters.
Normal editing requires policy:edit plus an active owner/editor grant.
Rollback requires policy:rollback plus that grant.
Authorized recovery overrides remain audited.
The application/json body supports three forms:
Form
Fields and Behavior
Empty object
Open a draft from the governed revision, or return the already-open draft without changing it.
Require sourceVersion and nonblank reason. Confirm an existing draft with confirmDraftVersionId.
sourceVersion is an integer governed revision number, at least one.
reason accepts 1–512 characters.
confirmDraftVersionId identifies the exact current snapshot that rollback replaces.
Obtain that identifier from the current draft summary’s currentVersionId or saved validation’s draftVersionId.
It differs from sourceVersion, which selects the governed revision to restore.
Never send compileRequest alongside sourceVersion.
Rollback restores server-held governed content into a new in-review draft.
It does not immediately replace the currently governed revision.
The body rejects unknown fields, including direct lifecycle-state changes.
Before running this normal-save example, prepare update-policy.json with the complete current compileRequest.
Use the worked payload construction
for its shape, and retain the authored fields you intend to save.
Obtain DRAFT_ETAG from a current policy read before sending the request.
Return 200 with the full policy and latest policy/draft validators.
Saving replacement work preserves the existing governed revision and delivery.
Return the following error codes:
400 for the wrong token type.
401 or 403 for authority failures.
404 for missing context.
409 for a changed head or illegal state.
412 for persistence races.
422 for invalid input.
428 for a missing token.
GET /policies/{policy_id}/validation
Revalidate the exact saved draft snapshot.
Require policy:review, not merely authorship or an owner/editor grant.
Require the policy_id path string. Accept no body or query parameters.
This read requires no If-Match.
Map classifications to derived, override, and effective method values.
conflicts
Array
Return current validation findings with stable conflict identifiers.
The Draft-ETag header identifies the same saved head.
Policy excludes archived policies from cross-policy conflict snapshots.
Return the following error codes:
401 or 403 for identity or review failures.
404 without a draft.
409 without a current saved snapshot or after a concurrent head change.
422 for invalid saved compile input.
Server failures can return 500.
After a changed-head response, reread and review before deciding.
DELETE /policies/{policy_id}
Cancel the open draft cycle without deleting retained history.
Require policy:edit and an active owner/editor grant, or an audited recovery override.
Require the policy_id path string and current draft token through If-Match.
Accept no body or query parameters.
Return 200 with the restored full policy.
An existing governed revision remains current.
Previous draft snapshots remain in history.
This operation does not archive governed protection or erase audit evidence.
Return 400, 401, 403, 404, 409, 412, or 428
for token, authority, missing-context, state, or concurrency failures.
7.8 - Submission, Review, Approval, and Archive Operations
These application programming interface (API) commands govern saved policy work.
Use the POLICY_API base and protected POLICY_AUTH_HEADER file from
authentication.
Every operation takes a required policy_id path string and no query parameters.
Bodies use application/json and reject unknown fields.
Policy derives all actors from trusted identity.
Do not send submittedBy, approvedBy, or an archiver identity in a body.
Separate-user examples do not imply mandatory two-person enforcement.
A saved snapshot records proposal content at a particular draft head.
Submission puts that head into review. It does not establish a governed revision.
Approval creates the governed revision and queues separate publication work.
Use the policy identifier in every {policy_id} path, not draftPolicyId or a snapshot identifier.
Set POLICY_ID to that policy identifier.
Before each draft command, read the current draft and retain its exact Draft-ETag as DRAFT_ETAG.
For review decisions, use the submitted head you actually reviewed, not a pre-submission token.
For archive, retain the current policy ETag as POLICY_ETAG instead.
POST /policies/{policy_id}/submit
Submit the exact saved draft for review.
Require policy:edit and an active owner/editor policy grant.
An audited recovery authority can override the grant requirement.
Send the current Draft-ETag through If-Match.
The body is optional for clean work.
When acknowledging permitted reviewable conflicts, supply:
Field
Type
Requirement
reviewNotes
String
Supply 1–512 characters with nonblank trimmed text when sending a body.
acknowledgedConflictIds
Array of strings
Include current reviewable blocking identifiers. Default to an empty array.
{"reviewNotes":"Reviewed the permitted findings and accepted their documented impact.","acknowledgedConflictIds":["current-reviewable-conflict-id"]}
Return 200 with a policy summary and updated ETag and Draft-ETag headers.
The compatibility status becomes submitted. draftState becomes in_review.
Policy checks the saved validation binding and recompiles against current catalogs.
Hard conflicts cannot receive acknowledgement.
An eligible returned draft can enter review again without an intermediate save.
Submission does not approve or publish.
Reload the submitted draft and use its new Draft-ETag for the review decision.
The token from before submission no longer identifies the current draft.
POST /policies/{policy_id}/request-changes
Return the current in-review draft to its author.
Require policy:review, not an owner/editor grant.
Send the reviewed current draft token through If-Match.
The request body contains this required reason field:
Field
Type
Requirement
reason
String
Supply 1–512 characters with nonblank trimmed text.
The current request schema enforces this reason length.
curl --fail-with-body -X POST \
-H "@${POLICY_AUTH_HEADER:?Complete authentication setup}"\
-H "Content-Type: application/json"\
-H "If-Match: ${DRAFT_ETAG}"\
--data '{"reason":"Narrow the resource scope before approval."}'\
"${POLICY_API}/policies/${POLICY_ID}/request-changes"
Use the returned draft.etag for subsequent draft work.
Policy preserves authored content and records the reviewer’s decision.
An existing governed revision remains current.
POST /policies/{policy_id}/approve
Approve the exact reviewed in-review draft.
Require policy:approve. Policy ownership alone does not grant approval.
Send its current Draft-ETag through If-Match.
Do not reuse the author’s token from before submission.
The required approval body accepts these review notes and conflict identifiers:
Field
Type
Requirement
reviewNotes
String
Supply required review notes for every approval: 1–512 characters with nonblank trimmed text.
acknowledgedConflictIds
Array of strings
Supply permitted current conflict identifiers. Default to an empty array.
curl --fail-with-body -X POST \
-H "@${POLICY_AUTH_HEADER:?Complete authentication setup}"\
-H "Content-Type: application/json"\
-H "If-Match: ${DRAFT_ETAG}"\
--data '{"reviewNotes":"Reviewed current intent and validation.","acknowledgedConflictIds":[]}'\
"${POLICY_API}/policies/${POLICY_ID}/approve"
Return 200 with a policy summary, policy ETag, and current draft validator where applicable.
Relevant response fields include:
Policy revalidates dependencies before creating the governed revision.
Changed or unacknowledged findings can block approval.
Approval queues durable asynchronous publication.
It does not prove publication, consumer receipt, or downstream protection.
Inspect the independent enforcementState and
operation evidence.
Operation inspection requires policy:audit. Approval capability alone does not grant that access.
POST /policies/{policy_id}/archive
Request removal of the approved policy’s published configuration.
Use GET /policies/{policy_id}/operations to monitor that background removal.
Confirm that the policy has a governed revision before selecting archive.
Draft cancellation is a separate operation and does not withdraw governed protection.
Require policy:archive.
Send the latest policy ETag through If-Match, never the draft token.
The archive request accepts this reason field:
Field
Type
Requirement
reason
String
Supply 1–512 characters with nonblank trimmed text.
curl --fail-with-body -X POST \
-H "@${POLICY_AUTH_HEADER:?Complete authentication setup}"\
-H "Content-Type: application/json"\
-H "If-Match: ${POLICY_ETAG}"\
--data '{"reason":"Approved retirement of the governed policy."}'\
"${POLICY_API}/policies/${POLICY_ID}/archive"
Return 200 with a policy summary, deploymentId, and integer generation.
The summary identifies the independent archiving protection state.
Do not interpret the compatibility archive status as completed withdrawal.
Record the returned generation for subsequent
archive evidence
or authorized retry.
Use deploymentId to select the operation and generation to distinguish its work from later attempts.
Response Codes and Concurrency
The table lists possible failure status codes for each lifecycle operation:
401 identifies missing trusted identity. 403 identifies missing authority.
404 identifies missing policy or draft context.
428 identifies a missing required token.
Draft commands normally return 409 for a changed head.
Request-changes also returns 409 when the head is not in review.
Submit and approve return 400 for a non-draft token.
Concurrent policy/revision persistence can produce 412.
Archive returns 400 for malformed policy tokens and 412 for stale versions.
409 can also mean invalid lifecycle state, blocking conflicts, or changed dependencies.
422 can contain body-schema errors or sanitized validation findings.
Compile, submit, and approval validation failures can expose a supportReference.
Refer to error handling for envelope variations.
These commands do not implement a general Idempotency-Key contract.
After a timeout, inspect current policy and history before deciding whether to repeat.
After a conflict, review changed evidence before issuing another command.
Do not apply a fresh token to an old, unreviewed decision.
These application programming interface (API) operations read policy history and manage owner/editor access.
Use the configured POLICY_API and protected POLICY_AUTH_HEADER file from
authentication.
Every operation requires the policy_id path string.
Set POLICY_ID to the intended policy identifier before running the examples.
None uses a general If-Match or Idempotency-Key contract.
A policy grant provides owner/editor access to that policy.
It does not create command capabilities such as review, approval, or audit.
History distinguishes draft saves, approvals, background recompilation, and delivery requests.
GET /policies/{policy_id}/access-grants
Require policy:view and accept no body.
The optional boolean active_only query parameter defaults to true.
Return 200 with {"grants":[...]}.
Each grant has integer id, policyId, subjectType, subjectId, accessLevel,
grantedBy, grantedAt, nullable revokedBy, and nullable revokedAt.
subjectType uses user or role. accessLevel uses owner or editor.
An empty result does not independently establish policy existence.
Identity or capability failures return 401 or 403. Invalid query values return 422.
POST /policies/{policy_id}/access-grants
Require active policy ownership or an authorized audited recovery override.
An editor grant does not authorize grant management.
Creation never grants approval or review capability.
The application/json body rejects extra fields:
Field
Type
Requirement
subjectType
String
Select user or role.
subjectId
String
Supply the exact verified login username or gateway-forwarded authority described below, 1–255 characters.
accessLevel
String
Select owner or editor.
For subjectType: user, use the recipient’s exact gateway-verified login username.
For subjectType: role, use an authority the gateway actually forwards for the intended accounts.
This authority can be a permission name, rather than a role name.
Do not substitute a Protegrity Provisioned Cluster (PPC) opaque account or role identifier, display name, or authoring-catalog runtime principal.
Ask a PPC user with administrator permissions to confirm the relevant identity mapping.
Never supply or spoof gateway identity headers.
Replace the example username alex with the intended recipient’s verified login username before running this request:
Return 201 with the grant object described above.
Policy derives grantedBy from trusted identity.
Creation and listing confirm grant persistence, not the recipient’s effective access.
Policy matches user subjects to verified usernames and role subjects to forwarded authorities.
It does not translate PPC account or role identifiers into these values.
During an approved handoff, have the recipient confirm intended access through the supported workflow using their own authenticated account.
Keep command capabilities separate from owner/editor grants.
Return 401 or 403 for identity or ownership failures, 404 for an unknown policy,
409 for duplicate grants or noneditable policies, or 422 for malformed bodies.
Display-only imported policies cannot receive grants.
After a timeout, list existing grants before repeating creation.
Revoke an active grant without erasing its history.
Require active ownership or an authorized audited recovery override.
The required grant_id path parameter uses an integer.
Accept no body or query parameters.
Set GRANT_ID to the integer id returned when listing the intended grant.
Do not substitute its subject identifier.
Return 200 with the grant object, including revoker and revocation time.
Return 401 or 403 for identity or ownership failures.
Return 404 for an unknown grant, or 409 when revocation would remove the last active owner.
Invalid path values return 422.
List grants with active_only=false to check the revoked grant and its revocation time.
If this is the last active owner, grant ownership to the intended replacement user first.
Confirm the new active grant and the replacement’s intended ownership access before retrying revocation.
Have the replacement use their own authenticated account through the approved ownership-management workflow.
Do not remove the previous owner’s access based only on a saved grant.
GET /policies/{policy_id}/versions
Inspect the compatibility version chain.
Accept no body, query parameters, or additional command capability.
Gateway access rules still apply.
Return 200 with an oldest-first array of full policy objects.
Each object includes id, version, status, and authored policy fields.
These versions do not replace governed revision or draft snapshot identifiers.
Return 404 when no policy versions exist.
Gateway failures can return 401 or 403.
GET /policies/{policy_id}/history
Read newest-first lifecycle activity without a mutation body.
The backend permits optional identity for this compatibility read.
Gateway access rules still apply.
Reasons require policy:audit or policy:review. Other readers receive redacted reasons.
The following table describes the supported history pagination parameters:
Query Parameter
Type
Requirement
limit
Integer
Optionally select 1–100 entries. Otherwise use the bounded default window.
offset
Integer
Optionally select a nonnegative offset. Start at zero.
Return 200 with an array of history entries.
Use X-History-Truncated and X-Next-Offset to continue a truncated page.
The default window contains at most 100 entries.
When the response indicates truncation, request the returned X-Next-Offset with the same limit.
Read subsequent pages before treating the history as complete.
The following table summarizes fields returned in each history entry:
Response Fields
Meaning
versionNumber, status, action, actor, timestamp
Identify compatibility version and attributable activity.
historySource, reason, reasonRedacted
Distinguish legacy, draft, or protection entries and restricted notes.
Identify approved revisions, compilation minors, and rollback sources.
deploymentId, deploymentGeneration
Identify publication or withdrawal lineage.
priorEnforcementState, enforcementState
Describe independent protection transitions.
isCurrent, isGoverned, isSuperseded, isClosed
Distinguish current and retained historical entries.
Fields can contain null values when they do not apply to that event.
Use draftVersionId for a saved snapshot, revisionId for governed identity, and governedRevisionNumber for its major revision number.
A minorVersion identifies compiled output within a governed revision.
Do not substitute compatibility versionNumber for these lineage fields.
Automatic recompilation can add compilation minors without changing author intent.
Do not attribute system compilation events to another human approval.
Return 404 for an unknown policy and 422 for invalid pagination.
Gateway failures can return 401 or 403.
GET /policies/{policy_id}/audit-export
Require policy:audit and accept no body.
Use the same optional limit range and nonnegative offset as history.
The default window remains bounded to 100 entries.
Return 200 with an array of compliance records.
Records include policyId, revisionNumber, minorVersion,
sourceLegacyVersionNumber, sourceRevision, action, actor, reason, and timestamp.
Where applicable, records also include artifactFingerprint, deploymentGeneration,
deploymentFingerprint, deploymentId, priorEnforcementState, and enforcementState.
Governed records can include principals, classifications, enforcement decisions, and protection actions.
The export does not return compiled artifact payloads.
It does not export the entire historical legacy version chain.
The export includes draft snapshots, governed revisions, cancellation, and retained lifecycle evidence.
It retains original actor attribution and reasons when available.
Return 401 or 403 for identity or audit failures, 404 for an unknown policy,
or 422 for invalid pagination.
Inspect target-specific evidence separately. An audit record does not certify activation.
7.10 - Product Retrieval and Compatibility Deployment
Reference consumer output retrieval and distinguish compatibility deployment from governed publication.
Approval queues asynchronous governed publication.
Consumer retrieval, publication, and target activation establish different evidence.
Use the application programming interface (API) base and protected POLICY_AUTH_HEADER file from
authentication.
Publication makes compiled output available to its target.
Consumer receipt records retrieval. Activation means the target uses that output.
Approval alone establishes none of these completion conditions.
GET /product-policies/{product_type}
Retrieve the latest published Federated Guardrails aggregate.
The current public product_type enum accepts only federated-guardrails.
Do not substitute pim or securequery.
Accept no body.
Optional environment and product_id query strings are reserved and currently ignored.
They do not select separate consumer output.
Send the following headers when retrieving published consumer output:
Header
Requirement
Authorization
Authenticate through the gateway according to deployment access rules.
A matching If-None-Match condition returns 304 with no body.
The response supplies Last-Modified, but this operation does not evaluate If-Modified-Since.
The fingerprint identifies contributing policy versions, rather than only comparing generated text.
Background recompilation can change those versions without another human approval.
The product revision and version identify aggregate output, not one policy’s governed revision.
Use policy history to find an individual policy’s approved version and compilation minor.
Return 404 when no published output exists.
Return 422 for an unsupported product type.
Gateway identity and access failures can return 401 or 403.
Guardrails Receipt Boundary
When GUARDRAILS_CONSUMER_USERNAME is nonempty, only the exact trusted consumer
identity records receipt evidence.
The setting does not authenticate callers.
The empty-string default accepts only requests with absent or empty identity, for anonymous compatibility.
Named requests do not qualify under this default.
Qualifying 200 and 304 responses can both record evidence.
With a nonempty setting, anonymous reads and diagnostics under another identity do not qualify.
Receipt does not prove activation or receipt by every target replica.
A qualifying consumer retrieval records receipt. No separate acknowledgement request is required.
Successful retrieval alone does not establish eligibility.
The receipt must match current publication targets and checksums, or exact current contributor lineage in a newer aggregate.
Publication reaches Published. Publication plus qualifying receipt allows reconciliation to Enforced for Guardrails-only policies.
Mixed policies also require Data protection evidence.
Use Guardrails monitoring to check whether the consumer applies the retrieved configuration.
The chart maps apiService.environment.GUARDRAILS_CONSUMER_USERNAME through the API ConfigMap into the environment.
Refer to Guardrails consumer evidence.
The setting does not change gateway access rules.
POST /policies/{policy_id}/deploy
Retain this compatibility operation for eligible legacy approved policies.
Do not use it to force publication of a governed revision.
Governed delivery belongs to approval and background processing.
The server rejects this operation when governed publication owns delivery.
Require policy:approve and a trusted caller identity.
Policy forwards the caller’s bearer credential for request-driven Policy Integration Manager (PIM) writes.
That caller also needs the applicable PIM permissions.
Policy accepts the gateway’s deployment cookie fallback when no explicit authorization header exists.
Do not send identity-forwarding headers or an actor in the body.
The route accepts the following path and query parameters:
Parameter
Type
Requirement
policy_id
Path string
Identify the eligible approved policy.
reuse_existing
Query boolean
Default to true. Inspect existing native inventory for reuse.
This route does not require If-Match or a general Idempotency-Key.
The body uses application/json.
It extends the public compile request with these optional fields:
Field
Type
Meaning
pimBindings
Object
Map selected symbolic references to existing native UID strings.
pimReconciliationReason
String
Explain explicit binding selections. Allow at most 512 characters.
federated-guardrails
Object
Supply compile and optional native Guardrails rules or permission matrix.
pimBindings requires an audit reason and cannot replace an existing ownership binding.
Refer to reconciliation for governed ownership incidents.
The public deployment schema does not accept a Secure Query-native variant.
Use the deployed /doc document for the complete nested compile and native rule schemas.
Before running this compatibility-only request, prepare and review the complete deploy-request.json file.
Set POLICY_ID to the eligible legacy policy’s identifier.
Use the compile-body reference
for its base fields and the additional deployment fields listed above.
Do not pass the outer create-policy envelope from the worked lifecycle.
Return 200 with plan, result, and nullable reconciliation.
The last field can contain protected, unprotected, awaiting_protection,
and unreadable resource-identifier arrays.
These arrays report observed resource states, not confirmation that every intended target applies the configuration.
The following table summarizes compatibility deployment status codes and their meanings:
Status
Meaning
400, 422
Reject invalid request fields, compile input, or binding selections.
401, 403
Reject identity, approval capability, or target authorization.
404
Reject an unknown policy.
409
Reject ineligible lifecycle state, governed delivery ownership, or a native-reference mismatch.
502
Report a non-authentication target rejection.
503
Report target unavailability or unavailable deployment configuration.
500
Report a server or post-target persistence failure.
If the request times out, check policy detail and ask the PIM administrator whether the affected objects changed.
Do not repeat deployment until the administrator checks for a partially applied request.
7.11 - Authoring Schema Operations
Reference the request, response, and failure contracts for this operation family.
Use the configured POLICY_API base and protected POLICY_AUTH_HEADER file from
authentication.
All paths below are relative to that base.
Examples read the bearer header from that file. Keep request payloads and logs free of credentials.
Consult your deployed /doc document for complete nested schemas.
Response examples illustrate relevant fields rather than every optional property.
These application programming interface (API) reads return 200 with schema vocabulary.
They accept no request body and do not save or approve a policy.
Gateway access rules apply. These reads do not require a separate command capability.
Policy Integration Manager (PIM) owns the Data target vocabulary.
Cedar is the policy language whose schema defines entity types, attributes, and actions.
Schema responses describe allowed types and actions. They do not list discovered users, groups, or data locations.
Use /catalog/principals and /catalog/resources to obtain the identifiers needed by compile requests.
For actions, use the vocabulary required by that request field rather than copying a display label from another endpoint.
SchemaActionCatalog, grouped by enforcement point.
Each group identifies its actual Cedar namespace and declared action identifiers.
The federated and data-protection groups expose different native vocabularies.
AuthoringActionCatalog, grouped by enforcement point.
Data authoring includes viewNull for explicit null-read permission.
The federated group returns an empty abstract-action list.
Use its native matrix and the FEDX variant of /policies/preview instead.
Here, FEDX is the API selector for Federated Guardrails, not a separate product.
An empty abstract-action list does not mean that target has no native actions.
An empty Data actions array does not request null-read permission. Select viewNull explicitly.
Reference nine operations for restricted diagnostics, retained delivery recovery, archive evidence, and native ownership reconciliation.
These application programming interface (API) operations support authorized recovery.
They do not replace authoring, review, or target-specific protection checks.
Policy Integration Manager (PIM) ownership mappings connect reference keys to native unique identifiers (UIDs).
A saved mapping does not prove that its native resource still exists.
Use the POLICY_API base and protected POLICY_AUTH_HEADER file from
authentication.
Every path below is relative to POLICY_API.
Set POLICY_ID to the affected policy identifier for policy-specific requests.
For retry, obtain DEPLOYMENT_ID from the operation-list response.
For reconciliation, copy identifiers and versions from the inspection response before constructing a decision body.
For symptom-based instructions, use the
recovery playbooks.
For changed compilation inputs, see
automatic recompilation.
Retained deployment retry does not request recompilation.
A deployment generation identifies a publication or removal request. That request can have several retry attempts.
Retry sends the configuration already saved for that request.
Reconciliation changes which PIM object Policy associates with a saved reference.
Automatic recompilation instead generates updated configuration from already approved policy inputs.
Authority and Preconditions
The table maps each recovery operation to its required capability:
Operation
Required Capability
Read operations or validation diagnostics
Require policy:audit
Retry publication
Require policy:approve
Retry withdrawal or record archive evidence
Require policy:archive
Inspect or decide ownership reconciliation
Require policy:system-configure
Select withdraw_policy
Require both policy:system-configure and policy:archive
These endpoints do not require an owner/editor grant.
Such grants do not supply the command capabilities above.
Policy derives decision actors from authenticated identity, not request-body fields.
A support reference does not grant diagnostic access.
Authors without these capabilities should retain safe evidence for authorized operators.
The following table summarizes the validator or control used for each recovery task:
Token or Control
Scope and Rule
Draft-ETag
Pin draft commands. Never substitute it for ownership evidence.
Policy ETag
Pin ordinary archive initiation. Do not use it for reconciliation.
Registry ETag
Pin reconciliation decisions and later binding-enumeration pages.
governedSetGeneration
Copy this policy-set version from inspection. Policy rejects it if relevant approved policies change before the decision.
Idempotency-Key
Supply 1–128 characters for either reconciliation decision endpoint.
Reconciliation decisions require one strong registry token through If-Match.
An entity tag (ETag) validates inspected registry state. The governed-set generation tracks policy-set changes separately.
Preserve the exact quoted value returned by inspection.
Do not construct a token from ownershipVersion, or use a weak draft token.
Use a new decision key for changed evidence.
Reuse a key only with identical evidence and the same authenticated actor.
Retain the inspection response’s exact ETag as REGISTRY_ETAG.
Set DECISION_KEY to a new 1–128-character key for the specific inspected decision.
Missing registry preconditions return 428. Malformed tokens return 400.
Stale registry evidence returns 412.
Changed governed generations, illegal decisions, or changed decision-key content return 409.
Malformed decision bodies or missing/invalid decision keys return 422.
Repeat inspection after 409 or 412, compare the changed policies and mappings, then prepare a new decision if needed.
GET /policies/{policy_id}/operations
Read deployment generations and their retained publication or withdrawal work.
The request uses this path parameter:
Parameter
Type
Requirement
policy_id
Path string
Identify the policy whose operations you need.
Require policy:audit. Accept no request body, query parameters, or conditional headers.
Return 200 with a top-level array, not an operations envelope.
Each entry includes:
Response Field
Type
Meaning
deploymentId, generation, operation
String, integer, string
Identify the deployment generation and publication or withdrawal operation.
enforcementState, requestedAt
String, timestamp
Describe protection progress and request time.
retryable, attemptCount
Boolean, integer
Indicate advisory eligibility and latest event attempts.
lastError
Nullable string
Describe retained failure text for unprocessed work.
issueCategory, severity
Nullable strings
Classify the projected issue. Severity uses warning or error.
requiresOperatorAction, detectedAt
Boolean, nullable timestamp
Identify operator intervention and issue detection.
replacedByGeneration
Nullable integer
Identify a successful successor when applicable.
diagnostics
Array of objects
Retain sanitized publication diagnostics.
Diagnostics contain supportReference, code, message, remediation, and
detectedAt, with retryable and requiresOperatorAction.
They can also include operationId, statusCode, resourceReference, and
details containing path, constraint, and message.
Return 401 without trusted identity, or 403 without audit capability.
Return 404 with no lifecycle operations for policy when no deployments exist.
That response does not establish whether the policy exists.
The retryable hint considers diagnostics and successor generations.
If diagnostics say retry cannot help, resolve the named problem before submitting the retry command.
Reading operations does not restart them.
Use the selected entry’s deploymentId in the retry path.
Do not substitute its integer generation, a policy revision, or a draft snapshot identifier.
GET /validation-diagnostics/{support_reference}
Retrieve restricted evidence from a compile, submit, or approval validation failure.
The request uses this path parameter to select the diagnostic evidence:
Parameter
Type
Requirement
support_reference
Path string
Copy the exact supportReference from the failure response.
Require policy:audit. Accept no body, query parameters, or conditional headers.
Return 200 with the diagnostic object and Cache-Control: no-store.
{"supportReference":"VAL-example","code":"approval_validation_failed","message":"Policy command validation failed.","remediation":"Review the indicated configuration constraints before retrying.","detectedAt":"2026-10-29T12:00:00Z","details":[{"path":"$.user_attribute","constraint":"required","message":"Set the identity source user attribute."}]}
The shared diagnostic shape can also include nullable operationId,
statusCode, and resourceReference fields.
Return 401 without trusted identity, or 403 without audit capability.
Return 404 when evidence does not exist or its seven-day retention expires.
Preserve the original failure, timestamp, and reference before expiration.
Do not send credentials, raw identity attributes, or sensitive payloads during escalation.
Diagnostic retrieval does not repair the configuration or validate another draft head.
POST /policies/{policy_id}/deployments/{deployment_id}/retry
Reset eligible terminal work within an existing deployment generation.
Policy reuses retained artifacts. It does not compile a corrected draft.
The retry request uses these path parameters:
Parameter
Type
Requirement
policy_id
Path string
Identify the policy.
deployment_id
Path string
Select its retained generation from archive results or operation inspection.
Require policy:approve for publication, or policy:archive for withdrawal.
Accept no body or query parameters.
This operation requires neither If-Match nor Idempotency-Key.
The following table summarizes retry response status codes:
Status
Meaning
204
Confirm the terminal-work reset. Return an empty body.
401, 403
Reject missing identity or the operation-specific capability.
404
Reject an unknown deployment or one belonging to another policy.
409
Reject replaced work, any newer generation, or work without a retryable terminal event.
Correct the underlying condition before retrying.
A newer in-progress generation also prevents retrying its predecessor.
Repeated retry requests need not return 204. The first reset can remove terminal eligibility.
After a timeout, inspect operations before deciding whether another request makes sense.
A successful reset does not prove publication, withdrawal, or protection recovery.
An auditor must read subsequent operation progress. Verify target evidence separately.
If you can retry but lack policy:audit, arrange that progress check with an authorized auditor.
POST /policies/{policy_id}/archive-evidence
Record an immutable manual evidence event for an active withdrawal.
This event does not replace observed deprotection.
Require policy:archive. Identify policy_id through the path.
Accept the following application/json body, with no extra fields.
This operation requires neither If-Match nor Idempotency-Key.
The request body accepts the following evidence fields:
Field
Type
Requirement
deploymentId
String
Identify the active withdrawal deployment for this policy.
ticketReference
String
Supply 1–128 characters. Retain nonblank text after trimming.
description
String
Supply 1–512 characters. Retain nonblank text after trimming.
locationIds
Array of strings
Supply at least one distinct, nonblank expected location identifier.
Prepare archive-evidence.json with the active deployment and verified expected locations:
{"deploymentId":"withdrawal-8","ticketReference":"CHANGE-204","description":"Completed the approved manual withdrawal check for this location.","locationIds":["location-17"]}
Replace the illustrative identifiers with your verified values before submitting the file.
Return 401 or 403 for identity or capability failures.
Return 404 for an unknown policy draft identity or an unrelated/unknown deployment.
Return 409 for an inactive withdrawal.
Unexpected locations return 409 with detail.message and detail.unexpectedLocationIds.
Malformed or duplicate location identifiers return 422.
Capture the deployment from archive initiation or an authorized operations read.
Confirm expected locations with your authorized withdrawal operator before recording evidence.
This API does not expose a complete location-discovery operation.
Stop if you cannot establish that scope. Do not guess identifiers.
Repeated accepted submissions can record additional events rather than deduplicate automatically.
Check authorized history or audit export after an uncertain result.
A 201 records the claim, not completed withdrawal or removal of protection.
GET /policies/{policy_id}/pim-reconciliations
Inspect ownership evidence for a policy’s current governed publication.
Require policy:system-configure. Accept no body or conditional header.
The request uses this path parameter:
Parameter
Type
Requirement
policy_id
Path string
Identify the affected policy.
refKey
Optional query string
Select one nonempty reference key used by its governed plan.
Set REF_KEY to an exact reference key from the policy’s unresolved bindings.
If you do not have one, first call this route without the refKey query parameter to list those bindings.
Return 200 and a strong registry ETag.
Without refKey, return an incident envelope containing policyId,
ownershipVersion, governedSetGeneration, and bindings.
The array contains unresolved bindings, not every healthy mapping.
With refKey, return one binding directly:
Each binding has resourceKind equal to data_element or source.
Its status uses healthy, missing, or replacement_authorized.
Each candidate includes uid, name, compatible, and a definition object.
Only allowedActions describes currently permissible decision choices.
The affectedPolicies array identifies shared impact and exact revision lineage.
Omit refKey to discover unresolved bindings before selecting one for detailed inspection.
A refKey names a symbolic ownership mapping. persistedUid identifies its native resource.
Do not substitute one for the other or derive them from display names.
Return 401 or 403 for identity or capability failures.
Return 404 for a missing binding, missing registry, or a reference outside the governed plan.
Return 409 without a current governed publication, or after a concurrent governed-set change.
Return 422 for malformed query values.
Return 503 when Policy cannot obtain complete native inventory.
An inventory failure never proves native absence.
Preserve the returned registry header and generation alongside reviewed candidate evidence.
POST /policies/{policy_id}/pim-reconciliations
Apply one inspected ownership decision.
Require policy:system-configure. Additionally require policy:archive for withdrawal.
Identify policy_id through the path. Accept no query parameters.
Require If-Match with the inspected registry token and an Idempotency-Key.
All body variants use application/json and reject extra fields.
The following table lists fields required by every reconciliation decision:
Common Field
Type
Requirement
action
String
Select an inspected allowed action below.
refKey
String
Identify the nonblank inspected binding.
reason
String
Supply 1–512 characters with nonblank trimmed text.
governedSetGeneration
Integer
Supply the inspected generation, at least one.
The following table lists each allowed decision and its additional required fields:
Action
Additional Required Fields
Meaning
adopt_candidate
Supply candidateUid, affectedPolicyIds, and affectedPolicyRevisions.
Adopt the selected compatible native candidate.
authorize_replacement
Supply impactAcknowledged, affectedPolicyIds, and affectedPolicyRevisions.
Authorize replacement after accepting affected-policy impact.
withdraw_policy
Supply integer policyVersion, at least one.
Start governed withdrawal using the current policy version.
Supply a nonempty string for candidateUid.
Supply nonempty affected-policy arrays and revision maps for adoption or replacement.
Map policy identifiers to inspected revisionId values, not revisionNumber values.
Include the exact complete affected set.
Replacement requires impactAcknowledged: true. False does not authorize impact.
For withdrawal, obtain policyVersion from a current policy read.
Keep the registry token in If-Match. Do not replace it with the policy token.
Prepare reconciliation-decision.json with one complete decision variant.
Use the replacement, adoption, or withdrawal payload below only when current inspection permits that action.
{"action":"authorize_replacement","refKey":"dataelement:customer__EMAIL","reason":"Reviewed shared impact after confirmed native deletion.","governedSetGeneration":4,"impactAcknowledged":true,"affectedPolicyIds":["policy-1"],"affectedPolicyRevisions":{"policy-1":15}}
Adoption variant:
{"action":"adopt_candidate","refKey":"dataelement:customer__EMAIL","reason":"Reviewed the compatible candidate and shared policy lineage.","governedSetGeneration":4,"candidateUid":"61","affectedPolicyIds":["policy-1"],"affectedPolicyRevisions":{"policy-1":15}}
Withdrawal variant:
{"action":"withdraw_policy","refKey":"dataelement:customer__EMAIL","reason":"Approved withdrawal instead of replacing this binding.","governedSetGeneration":4,"policyVersion":9}
These variants illustrate alternative inspected situations.
Do not submit adoption when inspection returns no compatible candidate.
Return 200 for adoption or replacement, with a registry ETag:
Adoption returns the same shape with action: "adopt_candidate" and status: "completed".
Replacement authorization does not mean Policy already created a replacement resource.
Withdrawal returns 202 and a registry ETag:
Return 401 or 403 for identity or required capability failures.
Return 404 for missing or unrelated bindings.
Return 409 for incompatible candidates, changed affected lineage, invalid actions,
changed generations, or reused keys with different decision content.
Return 503 when complete inventory is unavailable.
The shared 400, 412, 422, and 428 precondition rules also apply.
An identical accepted decision can replay without another ownership transition.
Preserve its original evidence and key after an uncertain response.
Do not change its actor, reason, action, or affected set while reusing the key.
Reinspect the binding after success. Inspect operation progress after withdrawal acceptance.
Neither 200 nor 202 proves target publication or completed withdrawal.
GET /pim-reconciliations/bindings
Enumerate saved reference-to-UID mappings without querying native inventory.
Require policy:system-configure. Accept no body.
The request uses these pagination parameters:
Parameter
Type
Requirement
limit
Query integer
Select 1–100 bindings. Default to 100.
offset
Query integer
Select a nonnegative offset. Default to zero.
If-Match
Conditional header
Supply the first page’s registry token on every page after offset zero.
Bindings follow reference-key order.
The final page returns nextOffset: null.
Use each returned nextOffset for the next request while retaining the first page’s exact registry token.
Keep one registry version throughout enumeration:
Return 401 or 403 for identity or capability failures.
Return 404 when the registry does not exist.
Return 400 for malformed tokens, 412 for a moved registry,
428 for missing later-page tokens, or 422 for invalid pagination.
On 412, restart from offset zero instead of continuing with a new token.
Enumeration establishes saved mappings only, not native absence or cleanup authority.
GET /pim-reconciliations
Inspect selected saved mappings against complete native inventory and current policy blockers.
Require policy:system-configure. Accept no body or conditional headers.
The request uses this repeated query parameter to select saved bindings:
Parameter
Type
Requirement
refKey
Repeated query string
Select 1–100 saved reference keys from enumeration.
Policy deduplicates and sorts the selection.
Set REF_KEY to an exact saved reference key returned by binding enumeration.
Each binding reports healthy or missing.
Retain the target, exact UID mappings, generation, and response header.
Stop cleanup when writerPending is true or any blocking policy remains.
Inspection does not reserve the registry. The decision rechecks these conditions.
Return 401 or 403 for identity or capability failures.
Return 404 for a missing registry or selected binding.
Return 409 for concurrent governed-set changes or reconciliation refusal.
Return 422 for invalid query selection.
Return 503 when complete native inventory is unavailable.
Restore that dependency before interpreting native presence.
POST /pim-reconciliations
Forget only selected, verified-stale saved mappings.
This command never deletes native resources.
Require policy:system-configure, registry If-Match, and Idempotency-Key.
Accept no query parameters.
The application/json body rejects extra fields:
Field
Type
Requirement
action
String
Supply forget_stale_bindings.
target
String
Match the inspected configured PIM target exactly.
Supply 1–512 characters with nonblank trimmed text.
governedSetGeneration
Integer
Match the inspected generation, at least one.
Prepare forget-bindings.json with the inspected target, selected mappings, reason, and generation.
Use the example below only after verifying the same absence and blocker conditions.
Example forget-bindings.json, only after matching the preceding inspection:
{"action":"forget_stale_bindings","target":"https://pim.example.test","bindings":{"dataelement:customer__EMAIL":"58"},"reason":"Confirmed native absence and completed all contributing withdrawal work.","governedSetGeneration":4}
Return 401 or 403 for identity or capability failures.
Return 404 for a missing registry.
Return 409 for changed targets or generations, pending writers, live native resources,
changed mappings, active contributors, unfinished work, or conflicting decision-key reuse.
Return 503 when complete inventory is unavailable.
The shared 400, 412, 422, and 428 precondition rules also apply.
An identical accepted decision can replay without another registry transition.
Policy checks the configured target before replay.
Reenumerate after success and verify removal of exactly the selected mappings.
Do not interpret removal as native resource deletion or permission to recreate an identity.
Evidence and Stop Boundaries
Preserve policy and deployment identifiers, generation, safe error details, and timestamps.
For ownership decisions, also retain inspected mappings, target, registry header,
governed generation, affected revision identifiers, decision key, and reason.
Never include bearer tokens in this evidence.
Stop when inventory is incomplete, a candidate is incompatible, scope is unknown,
or a successor generation owns the work.
Send the response and identifiers to the Policy administrator. Ask the PIM administrator to investigate missing inventory or conflicting native objects.
Do not repair these conditions through database edits or spoofed identity headers.
8 - Work With Policies
Author policies, hand off review, and verify target-specific delivery.
Use Policy to propose protection, review changes, and follow delivery.
Saving, approving, and protecting data produce different results.
A draft holds proposed changes. A governed revision records approved intent.
Compilation generates configuration for Policy Integration Manager (PIM) or Federated Guardrails.
Publication delivers that configuration.
After approval, follow the delivery guide to check whether the receiving product retrieved or applied it.
Refer to states and revisions
before interpreting a policy’s status.
Authors need edit capability and applicable policy access.
Reviewers need review capability. Approvers need approval capability.
These responsibilities do not define additional product roles.
For an existing policy, ask its owner for owner/editor access in addition to the author role.
Refer to roles and permissions.
Select classified data, assign supported protection permissions, and save a reviewable Data draft.
Use the Data journey to configure protection for discovered data.
Classification scope selects data categories and their applicable discovered locations.
Principal scope identifies who receives the configured target permissions.
The current authoring lane enables Encryption.
Standalone Masking and Filtering choices remain Coming Soon.
Before starting, prepare access and catalog inputs.
Use your deployment’s supported principals and native integration.
Do not create a policy against invented catalog identities.
To author and verify a Data policy, follow these steps:
Saving incomplete work does not make it eligible for submission.
The current governed revision, which records approved intent, remains unchanged until approval.
Draft edits do not replace that revision or prove a change in target protection.
Refer to states and revisions.
Choose discovered classifications, supported principals, Encryption, and explicit Data permissions.
Configure a narrowly scoped Data policy before saving its first draft.
Scope means the selected classifications, applicable discovered data, and intended principals.
Act as an authorized author, not as the eventual reviewer.
Complete these prerequisites before configuring Data protection:
Identify one discovered classification and one supported principal.
Use nonproduction inputs that your organization permits you to protect.
Ask the Traverse administrator to confirm the classification’s tables or columns if its meaning is unclear.
Select Classifications and Principals
To configure the Data policy scope, follow these steps:
Open Policy Library.
Select Data Protection Policy from the creation choices.
The authoring form opens. Navigation alone does not save a policy.
Select the classification that identifies your prepared data.
The selected classification defines the data scope for this draft.
Select the supported principal that should receive access.
Use its catalog identity, not a similarly named replacement.
The principal receives permissions at the protection target.
It need not be the signed-in Policy author.
Policy edit authority does not grant that author access to protected data.
Choose all principals only when your intended scope explicitly requires it.
Switching between explicit identities and wildcard scope changes policy meaning.
Reinspect permissions after changing that selection.
Do not use wildcard scope to work around an unsupported principal.
If classifications or principals cannot load, stop before submission.
Send the error to the Traverse integration administrator to investigate missing discovery or identity data.
Never replace missing identities with guessed values.
Configure Protection and Permissions
To choose the protection method and permissions, follow these steps:
Select Encryption.
The current Data lane does not enable standalone Masking or Filtering.
Inspect the recommended protection settings for each classification.
Recommendations depend on current discovery and integration context.
Choose the supported settings that match your organization’s protection requirements.
Assign the required permissions for each selected principal.
Review the generated title.
Enter a meaningful title if your workflow requires a clearer name.
For each principal, choose at most one read mode: cleartext, protected, or null.
Cleartext returns readable data. Protected returns a token or ciphertext rather than cleartext.
Null returns a null value instead of the protected value.
Protection and reprotection permissions remain independent of the read mode.
A principal selection alone does not supply an action permission.
Turning off every read mode does not imply a cleartext grant.
Avoid wildcard scope for the first Data exercise.
Do not infer a principal-specific permission from an absent matrix row.
Inspect compiler findings and the saved policy before relying on any grant.
Check Scope Before Saving
Confirm the classification, principal identities, method, and permissions together.
If you change scope, revisit the permission rows and title.
A title does not prove that the underlying selections remain complete.
Stop when recommendations, schema checks, or principal compatibility fail.
Do not substitute a Coming Soon method or a different identity.
If the finding describes discovery or Policy Integration Manager (PIM) configuration rather than a form field, send it to the administrator of that integration.
Persist proposed work, inspect saved findings, and separate Save from submission and approval.
Save retains authoring work without replacing the current governed revision.
The governed revision records approved intent. The draft records proposed changes.
Compilation checks authored inputs and derives target-specific rules and validation findings.
It does not publish those rules.
Before You Begin
Complete these prerequisites before saving the draft:
Use your author account with edit capability and applicable owner/editor access.
To save the proposed policy work, follow these steps:
Review the title, classifications, principals, and protection permissions.
Select Save Draft.
Policy compiles the current inputs before saving.
Inspect the returned notice.
A successful Save returns you to the Library.
Reopen the policy in Policy Library.
Confirm the saved scope and draft status.
Record the policy identifier for later review and support.
A successful Save can retain compiler findings or incomplete semantic work.
It does not prove submission readiness, approval, or target delivery.
Repeated saves retain snapshots within the same proposed revision.
A snapshot records saved content and its validation evidence at that point.
The latest snapshot is the draft head. Another Save advances that head, not the governed revision.
Inspect Findings
To review the saved validation findings, follow these steps:
Inspect outstanding exceptions and validation feedback for the saved draft.
Correct missing permissions, invalid scope, or unsupported selections.
Save the corrected work.
Reopen the saved draft to confirm the correction.
Do not assume that an unavailable or stale validation count means zero findings.
Submission and approval revalidate current dependencies.
Only explicitly reviewable conflicts permit acknowledgement with reasoning.
Hard failures require correction. Acknowledgement cannot bypass them.
An authorized reviewer can refresh the exact saved head through
GET /policies/{policy_id}/validation in the
application programming interface (API) reference.
That operation requires policy:review.
An author without that capability must not use it as a diagnostic shortcut.
Recover Without Losing Intent
If Save fails, retain your edits and read the reported finding.
For a connection or directory error, ask the administrator of the named integration to restore access before retrying Save.
If you changed the form during compilation, save again using the latest edits.
If Policy reports that the draft changed, reload it and compare its content with your unsaved edits.
In an API client, obtain a new Draft-ETag only after that comparison.
For an uncertain response, inspect the Library before creating another policy.
If the saved result remains unclear, preserve the policy identifier and support reference.
Send those details to your Policy administrator instead of repeatedly selecting Save or creating another policy.
Configure Federated Guardrails permissions, inspect preview, and save an artificial intelligence policy for governance.
Use artificial intelligence (AI) authoring for Federated Guardrails protection.
The current lane configures classification scope and principal-specific Unprotect permission.
Classification scope selects the data categories that generated rules cover.
Principal scope identifies the target identities to which those rules apply.
Unprotect permits the configured inbound path to return cleartext for a principal.
Do not treat Coming Soon options as available protection methods.
Preview is not persistence.
Approval is not publication.
Consumer receipt records eligible retrieval of published output.
Consumer receipt is not evidence that every runtime has activated protection.
Here, runtime means the downstream Guardrails system evaluating traffic, not Policy’s authoring service.
Refer to states and revisions.
Select classification scope and grant principal-specific Unprotect permission for Federated Guardrails.
Configure artificial intelligence (AI) protection as an authorized policy author.
Classification scope selects data categories. Principal scope selects the identities covered by generated rules.
The target principal is not necessarily the authenticated Policy author.
Before You Begin
Complete these prerequisites before configuring an AI policy:
Identify one classification and one explicit supported principal.
Confirm that your operator has configured the intended Federated Guardrails consumer.
Choose Scope and Settings
To configure the AI policy scope and settings, follow these steps:
Open Policy Library.
Select AI Policy from the creation choices.
Opening the form does not create a saved policy.
Select the prepared classification.
Select the supported principal.
Select Federated Guardrails.
Review the generated title.
Enter a clearer title when needed.
Use catalog identities for users, agents, services, or groups that your deployment supports.
Do not substitute display names for native identities.
Stop if a required classification or principal cannot load.
Send the missing selection and error message to the Traverse integration administrator before submitting work.
Knowledge Graphs, Protegrity Semantic Guardrails, third-party guardrails, and Privacy
appear as Coming Soon choices.
This procedure does not enable those choices.
Set Unprotect Permission
Unprotect allows a selected principal to recover readable values from protected content.
The generated rules also protect data for the selected principals.
The Unprotect toggle controls the reverse operation. Turning it off does not disable protection.
To set permissions for each principal, follow these steps:
Inspect the principal row in Permissions Matrix.
Set Unprotect according to the principal’s intended permission.
Enable it to allow readable values. Otherwise leave it off.
Review every row after changing the selected principals.
Bulk selection applies to the current principal selection.
Use it only when every selected identity needs the same Unprotect decision.
Inspect individual rows afterward.
An all-principals selection produces wildcard scope rather than a list of named identities.
Use it only with explicit authorization for that broader scope.
For a first policy, prefer an explicit principal.
Verify the Intended Matrix
Check the classification and every principal-specific Unprotect decision together.
Changing principal scope can change generated rules.
Do not infer saved or deployed permission from the matrix alone.
8.2.2 - Preview and Save an Artificial Intelligence Draft
Inspect Federated Guardrails preview feedback and verify that Save persists the intended draft.
Preview helps inspect current artificial intelligence (AI) authoring decisions.
It does not create a saved policy or reserve an approval token.
Preview derives output from the current inputs without publishing it to Guardrails.
Compilation checks authored inputs and derives target rules and findings.
Save runs compilation separately. It does not persist the preview response as approval evidence.
Before You Begin
Complete these prerequisites before previewing or saving:
Use your author account with edit capability and applicable owner/editor access.
To inspect the generated preview, follow these steps:
Review the current classifications, principals, and Unprotect decisions.
Inspect the preview feedback after the current inputs finish loading.
Review any reported warnings.
Correct scope or permissions when the feedback identifies unintended output.
Wait for feedback that corresponds to your current selections.
Do not treat a previous preview as evidence for later edits.
If preview reports an error, retain that message before changing inputs.
For a connection or directory error, send the message to the administrator of the named integration.
Save and Verify
To save the AI policy draft and verify it, follow these steps:
Confirm a nonblank policy title.
Select Save Draft.
Policy compiles current inputs and attempts to persist the draft.
Inspect the Save result.
A successful Save returns you to the Library.
Reopen the saved policy.
Confirm its AI source, classification scope, and principal permissions.
Record its policy identifier for review.
The saved draft is proposed work, not the governed revision containing approved intent.
Each Save records a snapshot within the proposal. The latest snapshot is its current head.
Save and preview use different operations.
A successful preview does not guarantee that Save succeeds.
A saved draft does not prove approval, publication, or consumer receipt.
If Save reports validation or compatibility errors, correct the named inputs.
If another user changed the draft, refresh current work before repeating a decision.
If the response remains uncertain, inspect the Library before creating a duplicate.
Keep the visible error and support reference for an authorized operator.
Prepare Review
Inspect saved findings before submission.
Correct hard failures rather than acknowledging them.
An authorized reviewer can inspect current saved validation through the
application programming interface (API).
That read requires review capability. Ordinary author access does not imply it.
Hand off saved policy work between authors, reviewers, and approvers without confusing approval with delivery.
Authors submit drafts. Reviewers request changes or approve them.
Approval creates an approved version, called a governed revision, and starts background publication.
Each saved snapshot records proposed content and validation evidence.
The latest saved snapshot is the draft head.
Several snapshots can belong to one open proposal without creating several governed revisions.
Delivery runs asynchronously afterward.
Keep drafts, governed revisions, and protection states
separate throughout this journey.
Actors, Capabilities, and Policy Grants
The following names describe responsibilities, not additional product roles.
The table summarizes each governance responsibility, its required authority, and its limit:
Responsibility
Required Authority
Boundary
Author Alex
Require policy:edit and applicable policy owner/editor access.
Save and submit proposed work without approving it.
Reviewer Morgan
Require policy:review.
Inspect saved validation and request changes without acquiring approval authority.
Approver Morgan
Require policy:approve.
Approve the current reviewed submission, not an earlier draft.
Operator Sam
Require policy:audit for restricted diagnostics.
Inspect operations without automatically gaining recovery mutation authority.
Read-only stakeholder
Require permitted view access.
Inspect permitted information without changing policy state.
The policy_author authority supplies author capabilities, not review or approval.
The policy_viewer authority supplies viewing capability.
The policy_admin mapping includes broader review, approval, and recovery capabilities.
Do not grant it merely to reproduce this example.
Use your deployment’s approved authority and gateway-permission mappings.
Owner/editor grants establish policy resource access.
They do not supply command capabilities.
An author role mapping alone does not prove that the caller holds a grant on an existing policy.
Review and approval remain distinct capabilities even when one approved mapping supplies both.
Policy does not define a separate policy_reviewer role.
Refer to roles and permissions.
Follow the Handoff
To complete the separate-user author and reviewer handoff, follow these steps:
Use separate authenticated accounts for this example.
Never share credentials or send another user’s name as the audit actor.
Your organization may impose additional separation-of-duties rules.
This example does not claim that Policy mandates different people for every command.
Manage Policy Access
An authorized owner can manage active owner/editor grants through the
application programming interface (API) access operations.
Listing grants requires policy:view.
Creating or revoking grants requires active ownership or authorized administrator recovery, not an editor grant alone.
Do not assume the Panel exposes every access-management operation.
Before changing access, ask a Protegrity Provisioned Cluster (PPC) user with administrator permissions to confirm the recipient’s identity mapping.
For a user grant, use the exact gateway-verified login username.
For a role grant, use an authority the gateway actually forwards for the intended accounts.
This can be a permission name, not a PPC role’s identifier or display name.
Do not substitute opaque PPC account identifiers, display names, or runtime principals from the authoring catalog.
Never supply or spoof gateway identity headers.
Follow the subject identity rules and access operations.
After a change, list grants again to confirm the intended active owner/editor entry.
Listing confirms persistence, not effective recipient access.
Preserve a valid owner when removing access.
During an approved handoff, have the recipient confirm intended access using their own authenticated account through the supported workflow.
For ownership transfers, confirm ownership-management access before removing the previous owner’s access.
An editor grant does not authorize ownership administration by itself.
Do not broaden roles to solve a missing policy grant.
For owner-recovery cases, involve an authorized administrator using the audited recovery path.
Change or Retire Governed Work
Editing a governed policy leaves its current approved revision unchanged.
Normal Edit resumes existing open work.
Refer to rollback or archive only for their distinct purposes.
Inspect history before making either decision.
Automatic recompilation can create compilation minors without changing author intent.
A compilation minor is a recompilation within the same governed revision, not another approval of changed intent.
Refer to automatic recompilation.
For a complete example, follow your first policy.
8.3.1 - Submit Saved Work for Review
Submit the exact current saved draft and hand it to another authenticated reviewer.
Act as the author who has prepared and saved proposed policy work.
Before You Begin
Complete these prerequisites before submitting work:
Identify the reviewer who will receive the policy identifier.
Submit Current Work
To submit the current saved work, follow these steps:
Open the saved policy in Policy Library.
Inspect its current draft content and validation findings.
Correct hard failures before continuing.
Select Submit for Review when Policy offers the action.
Supply reasoning and acknowledge only the current, permitted reviewable conflicts when prompted.
Confirm In Review in current policy detail.
Submission changes the saved draft’s review status. It does not publish the policy.
Give the policy identifier to the separately authenticated reviewer.
Use a specific handoff message, such as:
“Review this policy’s current submission, classification scope, and principal permissions.”
Do not send credentials or ask the reviewer to reuse your browser session.
Direct API Handoff
For the application programming interface (API), use
POST /policies/{policy_id}/submit relative to the configured API base.
Refer to submission request examples.
For a direct API handoff, follow these request checks:
Read GET /policies/{policy_id} before submitting.
Put the exact current draft token in If-Match.
Use reviewNotes and acknowledgedConflictIds only as the endpoint specifies.
Do not send submittedBy. Policy derives the actor from authenticated identity.
Check that the returned draft status is In Review and retain its new Draft-ETag value.
Do not substitute the governed-policy ETag for the current Draft-ETag.
An entity tag (ETag) is a server-issued concurrency validator, not a permission or approval.
Send the current Draft-ETag value in If-Match to bind the command to the current draft head.
The head is the latest saved snapshot of proposed content and validation evidence.
Treat tokens as opaque. Never construct or parse them.
Submission changes the draft head.
The reviewer must obtain the post-submission token rather than reuse your pre-submission token.
Repeated saves and submission can change snapshot identity without creating a new governed revision.
Verify or Stop
Confirm In Review through policy detail and permitted history.
An approval or publication event should not follow from submission alone.
If validation findings changed, read the new messages before acknowledging them.
If Policy rejects a stale token, reload the policy and compare its content with the draft you intended to submit.
Do not merely copy a fresh token onto an old decision. Compare the current content and findings first.
If submission times out, inspect current detail before repeating it.
Do not create a replacement policy to bypass an uncertain result.
Inspect current saved work, request actionable changes, or approve the exact reviewed draft.
Authenticate as the reviewer, using your own account.
Before You Begin
Complete these prerequisites before reviewing a submission:
Obtain the submitted policy identifier from the author.
Confirm policy:review to inspect saved validation and request changes.
Confirm policy:approve if you will approve the submission.
An owner/editor grant does not supply either capability.
Refer to authority requirements.
Inspect the Current Submission
To inspect the submitted policy, follow these steps:
Open the policy identifier that the author handed off.
Confirm that the current draft remains In Review.
Inspect classifications, principals, methods, and permissions.
Inspect the current validation findings.
Read permitted history and the author’s review reasoning.
For direct application programming interface (API) use, read policy detail and
GET /policies/{policy_id}/validation under your reviewer identity.
Saved validation returns the exact current head and its Draft-ETag.
The head is the latest saved snapshot in the proposal.
The entity tag (ETag) is a concurrency validator, not approval evidence.
Use that current token for the decision.
Do not reuse the author’s pre-submission token.
If dependencies or findings changed, review them again.
Resolve non-overridable failures through author correction.
Only explicitly reviewable conflicts permit acknowledgement with reasoning.
Request Changes
To request changes to the submission, follow these steps:
Select Reject when the action is available.
Enter a nonblank reason that names the correction and expected result.
Confirm the request.
Policy returns editable work while preserving its content.
Give the author the policy identifier and correction request.
For example: “Use a title that identifies the protected classification and intended principal.”
The current application programming interface limits this reason to 512 characters.
Keep the reason actionable rather than pasting an entire investigation.
For direct clients, use POST /policies/{policy_id}/request-changes
with reason and the current draft token in If-Match.
The response contains a new token in its draft summary.
There is no separate reject endpoint.
The Panel labels this request-changes action Reject.
Open Change History and check that the request records your reason and user identity.
The interface can label the returned proposal Rejected.
The author can still edit that work. Any previously approved version remains unchanged.
Returned work awaits author correction. Resubmitted work has entered In Review again and needs a new review.
The author continues with correction and resubmission.
Approve the Reviewed Submission
Proceed only after reviewing the current submission, including any resubmitted corrections.
You must hold approval authority, even if you previously requested changes.
To approve the reviewed submission, follow these steps:
Refresh the policy’s current submitted content and findings.
Confirm that no hard failures remain.
Acknowledge only the required, permitted current conflicts.
Select Approve Policy on the review page.
Enter nonblank review notes that explain the decision.
Confirm approval.
Policy creates the governed revision and queues asynchronous publication.
Reload the policy and open Change History to check the approved version, your user identity, and your notes.
For direct clients, use POST /policies/{policy_id}/approve
with reviewNotes and applicable acknowledgedConflictIds.
Put the exact reviewed draft token in If-Match.
Do not send approvedBy. Policy records your authenticated identity.
Refer to API reference.
Stop Conditions
Stop when the draft changed, the token became stale, or new findings appeared.
Reload the policy and validation results, then review any changed content before deciding again.
Do not acknowledge hard failures or approve an older copied submission.
If approval or rejection times out, check Change History for the decision before sending it again.
Approval starts background publication of the reviewed configuration.
Continue with delivery verification.
8.3.3 - Correct Returned Work and Resubmit
Address reviewer feedback within the same policy proposal and return current saved work for another review.
Act as the author after a reviewer requests changes.
Use your own authenticated account with edit capability and policy resource access.
The returned proposal remains editable, even when the interface labels it Rejected.
An existing governed revision remains unchanged.
Returned work is not yet a new submission. Save records corrections. Resubmission returns those corrections to In Review.
Before You Begin
Complete these prerequisites before correcting returned work:
Obtain the policy identifier and correction request from the reviewer.
Confirm edit capability and applicable owner/editor access.
Keep the existing proposal. Do not create a replacement policy.
Correct the Proposal
To correct the returned proposal, follow these steps:
Open the policy identifier that the reviewer returned.
Read the reviewer’s reason in the available decision or history information.
Open the available edit or resume action.
Policy reopens the existing proposal.
Correct the named title, classification, principal, method, or permission input.
Save the corrected draft.
Reopen the policy to verify the saved correction.
If your account cannot see the full reasoning, ask the reviewer for actionable feedback.
Do not interpret a redacted or unavailable note as an empty decision.
Do not create another policy merely to avoid the returned-work status.
Refer to Data Save or
artificial intelligence (AI) preview and Save for lane-specific validation.
If Save fails, preserve the current edits and visible error.
For a connection or directory error, ask the administrator of the named integration to restore access before retrying Save.
Resubmit and Hand Off
To resubmit the corrected work, follow these steps:
Inspect current saved findings.
Correct hard failures or address permitted reviewable findings.
Hand the same policy identifier back to the reviewer.
For direct application programming interface (API) use, obtain the current draft token.
The server-issued draft entity tag (ETag), returned as Draft-ETag, identifies the current head for concurrency checks.
Do not reuse a token from before the request for changes or later Save.
Do not send another user’s name as the actor.
Verify the Handoff
History should retain the earlier request and the later resubmission.
The reviewer must reload the submitted draft and review its corrected content before approval.
If another user changed the draft, compare their changes with yours before saving again.
Stop rather than overwriting unknown newer work.
Propose earlier governed content through rollback or start asynchronous withdrawal through archive.
Policy rollback and archive solve different problems.
Rollback proposes earlier policy intent for another review.
Archive removes this policy’s configuration from the receiving products.
Neither operation restores a database or rolls back a software installation.
Restoring database contents is an operator recovery task, not a policy rollback.
Closing a draft abandons only proposed changes. It does not withdraw approved output.
Complete these prerequisites before restoring or archiving a policy:
Identify the policy and the intended outcome: restore earlier intent or retire its contribution.
Confirm policy:rollback and applicable owner/editor access for rollback.
Confirm policy:archive and the retirement impact for archive.
Arrange an authorized operator’s withdrawal check if you lack audit access.
Restore Earlier Policy Intent
You need policy:rollback and applicable policy owner/editor access.
Choose an earlier governed revision, not the current revision or an arbitrary saved snapshot.
A governed revision records approved intent. A draft snapshot records saved proposed work.
To restore earlier policy intent, follow these steps:
Inspect current governed and open-draft information.
Identify the earlier governed revision that contains the intended policy content.
Select Roll back when the action is available.
Select the intended earlier governed revision in the dialog.
Review the warning about existing open draft work.
Enter a reason for restoring that revision.
Acknowledge replacement if an open proposal exists.
Confirm the rollback decision.
Rollback creates a new In Review proposal from the selected content.
Open the resulting draft and Change History to check its content and the version selected for rollback.
The current governed revision remains unchanged.
Follow review before the restored proposal can become governed.
If you edit that proposal, save and resubmit the corrected work before approval.
Replacement confirmation applies only to the exact open draft head shown by the server.
If that head changes, inspect the newer work before confirming again.
Do not treat successful rollback as immediate target recovery.
If you cannot identify the correct source revision, stop.
Ask an authorized reviewer to confirm the intended content.
For direct clients, follow the exact rollback preconditions in
the application programming interface (API) reference.
Archive a Policy
You need policy:archive and a clear retirement reason.
Confirm the policy identifier and impact on shared protection before proceeding.
To archive a policy, follow these steps:
Inspect the current governed revision and any open draft.
Review affected targets and shared contributions.
Select Archive when the action is available.
Enter a nonblank reason.
Confirm the retirement decision.
Policy closes applicable open work and starts asynchronous withdrawal.
Inspect policy detail and the withdrawal operation.
For direct clients, use POST /policies/{policy_id}/archive
with reason and the current governed-policy ETag in If-Match.
Do not substitute a draft token.
Do not send archivedBy. Policy derives the actor from trusted identity.
Refer to canonical API examples.
An initial archive response does not prove completed withdrawal.
Withdrawal removes this policy’s contribution from applicable target output.
Archive completion does not prove that every shared location became unprotected.
Other policies can retain protection over shared resources.
Verify or Stop
Reload the policy and check Change History for the rollback or archive request before repeating a command that timed out.
If Policy reports changed content or a conflicting Policy Integration Manager (PIM) object identifier, send the error to your Policy administrator.
The administrator can follow
recovery.
Separate approval, publication, consumer receipt, and target-specific protection evidence.
Approval queues publication rather than synchronously activating every target.
Check the currently approved version, not unsaved edits or an older delivery request.
The Operations tab lists publication and removal requests. Each has a request number called generation.
Retrying a request sends its previously saved configuration again.
Before You Begin
Complete these prerequisites before checking delivery:
Identify the currently approved policy version.
Confirm permitted policy visibility.
Arrange an operator with policy:audit to inspect restricted Operations details.
If you hold that capability, you can perform the operation checks yourself.
Follow the Target-Specific Path
To verify delivery for the target, follow these steps:
Have the authorized operator check the latest publication request in Operations.
The operation identifies retained publication work and any reported error.
Follow the verification path for your policy’s targets:
A mixed policy needs evidence for every applicable target.
Successful Data protection does not substitute for Guardrails receipt.
These verification guides cover Data protection and Federated Guardrails.
For Secure Query, ask its administrator for the verification procedure supported by your deployment.
Interpret Results
The following table distinguishes the evidence provided by each delivery result:
Result
What It Establishes
What It Does Not Establish
Approval
Record the human governance decision.
Prove completed publication.
Publication
Make the approved target artifacts available through their publication path.
Prove protection at every location.
Positive Data evidence
Observe protection for the current expected Data locations.
Prove a different target received its output.
Qualifying Guardrails receipt
Record retrieval of the current configuration by the configured consumer.
Prove that Guardrails applied it to real requests or updated every replica.
Archive completion
Remove this policy from the published configuration.
Prove that other policies no longer protect the same data.
A Guardrails receipt records an eligible consumer retrieval of published output.
It is not a consumer assertion that protection has activated.
The chart supports both anonymous-only compatibility and an exact named consumer match.
Its empty-string default accepts absent or empty request identity, not named requests.
Publication reaches Published. Publication plus qualifying receipt allows reconciliation to Enforced for Guardrails-only policies.
Mixed policies also need Data evidence.
Follow Guardrails verification to check the consumer configuration and current receipt.
Refer to states and revisions.
For periodic changes after approval, see automatic recompilation.
For the complete author-to-reviewer journey, follow your first policy.
8.4.1 - Verify Data Delivery Evidence
Check publication and complete current location evidence without inferring protection from approval.
Verify Data protection after an authorized approver creates a governed revision.
Before You Begin
Complete these prerequisites before verifying Data delivery:
Confirm permitted policy visibility.
Arrange an operator with policy:audit to inspect restricted deployment diagnostics.
Ask the Traverse integration administrator which tables or columns the approved policy should protect.
Expected locations are the data locations that compilation of the governed revision identifies for protection.
They are not every discovered location or the selections in a newer draft.
Verify the Current Deployment
To verify the current deployment, follow these steps:
Open the policy in Policy Library.
Record the current governed revision and visible protection state.
Have the authorized operator check the latest publication request in Operations for errors.
Record its deployment identifier and request number (generation) if you need administrator help.
Use the application programming interface (API) policy-detail reference
when your Panel does not expose the required detail.
Use view=governed&includeProtection=true for approved delivery readback.
The governed view selects approved inputs for current protection observations.
The default view=latest selects replacement-draft content while that draft remains open.
Check the approved scope, not the replacement proposal, when verifying delivery.
Use the operations reference
for restricted deployment details.
Restricted operation inspection requires audit authority.
Do not obtain broader access merely to interpret a status badge.
Verify Location Evidence
To verify protection at each expected location, follow these steps:
Ask the Traverse integration administrator to check the protection status of each table or column identified above.
Ask the administrator to confirm that those observations apply to the currently approved policy version.
Check that every expected location reports protected.
For example, suppose the approved scope expects locations A and B.
If A reports protected and B explicitly awaits protection, progress remains incomplete.
If Traverse returns no observation for B, ask its administrator to investigate that missing location.
If Traverse is unavailable, wait until the administrator restores access before checking protection again.
Missing, unexpected, or mismatched location identities prevent a complete match to the expected set.
Policy can show Enforcing while some locations report protected and delivery or protection checks remain incomplete.
Check every expected location and any Guardrails delivery before accepting Enforced as the current result.
Stop and Escalate
If the administrator cannot identify the expected tables or columns, or Traverse omits them, keep the verification open.
Retain the policy identifier, revision, deployment, generation, timestamp, and visible issue.
Do not write protection state manually or guess missing locations.
For failed publication, follow inspection and retry.
If publication stopped with an error, resolve that error even if Traverse later shows protected data.
If Guardrails also applies, follow Guardrails evidence.
Distinguish published Guardrails output from qualifying consumer receipt and runtime activation.
Verify Federated Guardrails delivery after approval.
Before You Begin
Complete these prerequisites before verifying Guardrails delivery:
Prepare the policy identifier and current governed revision.
Ask the Guardrails administrator whether retrieval uses anonymous compatibility or a named consumer account.
Confirm the deployment’s apiService.environment.GUARDRAILS_CONSUMER_USERNAME value with its configuration owner.
Arrange an operator with policy:audit to inspect restricted Operations details.
A receipt records that consumer’s retrieval of the generated configuration.
It does not confirm that Guardrails has started applying the configuration to requests.
The chart maps this value through the API ConfigMap into the consumer-username environment variable.
The empty-string default accepts only requests with absent or empty identity.
A nonempty value requires an exact gateway-verified username match.
See consumer evidence and configuration
for supported settings.
Neither publication nor an ineligible retrieval proves receipt completion.
Inspect Publication and Receipt
To verify publication and the consumer receipt, follow these steps:
Open the policy in Policy Library.
Record the currently approved policy version and displayed protection status.
Have the authorized operator check the latest publication request in Operations for errors.
Ask the Guardrails administrator to confirm a successful fetch using the configured identity mode.
Reload the policy and check its protection status.
Publication reaches Published. Publication plus qualifying receipt allows reconciliation to Enforced for a Guardrails-only policy.
If the policy remains Published after a successful fetch, send the policy version, operation details, and retrieval time to your deployment or support owner.
A successful fetch must include the current policy version.
Guardrails can retrieve one combined configuration containing several policies.
An older configuration or one containing a different version of this policy does not confirm current delivery.
Use the application programming interface (API) retrieval reference and
authentication for consumer retrieval contracts.
An eligible retrieval can record receipt on either a full 200 response or an unchanged 304 response.
Eligibility requires the configured identity mode: absent or empty identity for the empty-string default, or an exact gateway-verified named match.
Named requests do not qualify under the empty-string default.
Receipts must match current publication targets and checksums, or exact current contributor lineage in a newer aggregate.
Follow approved gateway access rules and keep named consumer credentials separate.
Never supply trusted identity headers yourself.
Without a qualifying pull, a published Guardrails-only deployment remains Published.
With publication and qualifying receipt, it can reach Enforced.
For mixed deployments, also complete Data evidence.
Understand the Evidence Boundary
A receipt confirms retrieval, not successful processing of real requests.
Ask the Guardrails administrator to perform the deployment’s runtime test after retrieval.
If several Guardrails replicas run, confirm their configuration through Guardrails monitoring. Policy’s receipt does not verify each replica.
For example, retrieving a combined configuration containing policy version 2 does not verify delivery of version 3.
Background recompilation can also change the generated configuration without changing the approved major version.
When investigating a mismatch, give the administrator the full version, including its compilation minor, and the retrieval timestamp.
Stop and Escalate
Stop when publication failed, the consumer identity is uncertain, or receipt evidence mismatches.
If the retrieval identity does not match the configured mode, ask the configuration owner to correct the mismatch.
Approval retries cannot repair an identity mismatch.
Retain the policy, revision, generation, timestamp, and visible support reference.
Ask the Guardrails administrator to include the retrieved product response’s fingerprint when available.
The retrieval reference describes this aggregate-output field. Do not infer it from the policy title or revision.
Ask your Policy administrator to compare the recorded retrieval with the policy’s current generated configuration.
Do not retry approval merely because the consumer has not fetched the output.
8.4.3 - Inspect Delivery Issues and Verify Withdrawal
Route publication failures to authorized recovery and verify withdrawal without claiming universal deprotection.
Use this task when publication fails or an archived policy remains Archiving.
Each delivery request has a generation number. Retries reuse the configuration saved for that request.
Restricted operation inspection requires policy:audit.
Before You Begin
Complete these prerequisites before investigating delivery:
Retain the policy identifier and visible error.
Confirm audit capability before following Operations directions.
Otherwise, give this task to your Policy administrator.
Confirm policy:approve for publication retry or policy:archive for withdrawal retry.
Audit access alone does not permit either command.
Inspect Before Retry
To inspect a failed delivery before retrying, follow these steps:
Open the policy’s Operations tab.
Select the latest request and record its deployment identifier, error message, and support reference.
If you cannot open Operations, send the policy name and visible error to your Policy administrator.
For direct application programming interface (API) use, inspect
GET /policies/{policy_id}/operations under audit authority.
Refer to recovery reference
for diagnostics and command-specific prerequisites.
Do not interpret an unavailable diagnostics record as successful delivery.
An operations 404 can mean no recorded deployment.
A support reference does not grant access to restricted diagnostics.
Retry Eligible Retained Work
To retry eligible retained work, follow these steps:
Ask the administrator handling the failure to confirm that its cause is resolved.
Reopen Operations and check that no later publication or removal request exists.
Use Retry publication or Retry archive if Policy offers the action for that request.
Check the subsequent attempt for errors and follow Data or Guardrails verification.
Publication retry requires policy:approve.
Withdrawal retry requires policy:archive.
For direct clients, use the generation-specific deployment retry contract.
An empty 204 response means the reset succeeded, not that delivery recovered.
Retry sends the previously saved configuration. It does not include edits made after that request.
The server rejects replaced work or a generation with a newer successor.
Treat a retryability hint as advisory, not permission to bypass command checks.
For a missing or conflicting Policy Integration Manager (PIM) object identifier, ask your Policy administrator to follow the ownership-reconciliation playbook before retrying.
If policy intent needs correction, return to authoring, review, and approval.
Retry does not use a newly edited draft.
For ownership reconciliation, follow the operator
recovery playbooks.
To verify that withdrawal completed, follow these steps:
Open Operations and find the removal request created by archive.
Read its current status and error message.
If an error remains, follow the publication troubleshooting table linked above.
Reload the policy until archiving completes. If it remains Archiving, send the operation details to your Policy administrator.
While withdrawal remains incomplete, the policy can retain Approved governance
and show Archiving delivery progress.
Do not interpret archive initiation as completed removal.
Guardrails withdrawal publishes revised aggregate output without the retired contribution.
Policy does not wait for a Guardrails consumer to fetch that revised output before completing Guardrails withdrawal.
If the policy also uses Data protection, a successful Guardrails update does not complete the Data removal.
Withdrawal removes this policy’s contribution.
Other policies can retain protection over shared resources.
Archive completion does not certify destruction of all cryptographic material.
It also does not prove that every location became unprotected.
Authorized archive evidence records an attributable claim for the active withdrawal.
It does not replace target completion evidence or certify deprotection.
Follow the archive evidence contract
when an operator needs that record.
If the request has been replaced, or the error identifies an unknown PIM object, stop retrying and send the error to your Policy administrator.
Return to delivery or operations.
8.5 - Create and Review Your First Policy
Follow a Data policy from a saved draft through separate-user review and delivery checks.
This journey uses two authenticated users: author Alex and reviewer Morgan.
Morgan also needs approval authority to approve the corrected submission.
Use separate accounts, not shared credentials or client-supplied actor names.
This example does not require every deployment to enforce two-person approval.
Before You Begin
Complete these prerequisites before starting the example:
Ask a Protegrity Provisioned Cluster (PPC) user with administrator permissions to assign Alex policy_author.
Ask that administrator to give Morgan the policy:review and policy:approve permissions.
Identify one discovered classification and one supported principal.
Identify the expected Data locations and their configured protection integration.
Use a nonproduction example that your organization permits you to protect.
Classification scope identifies the selected data categories and their applicable discovered locations.
The selected principal is the target identity receiving permissions, not necessarily Alex or Morgan.
Their Policy capabilities authorize authoring and review, not access to the protected data.
Do not grant a broad administrator role merely to follow this example.
Refer to authority requirements.
Steps
Follow these steps to complete the author-to-reviewer workflow:
As Alex, configure a Data policy.
Select the prepared classification and explicit principal, then configure Encryption and the required permissions.
Save and inspect the draft.
Record its policy identifier and confirm that the saved content matches your selections.
You have completed the authoring and governance journey when history shows
Alex’s submission, Morgan’s requested changes, Alex’s resubmission, and Morgan’s approval.
You have not completed delivery merely because approval succeeded.
Stop when validation blocks submission or approval.
Correct the field named by the validation message and reload the validation results.
For a connection or directory error, ask the administrator of the named integration to investigate.
If publication fails, preserve the deployment identifier and support reference.
Refer to delivery issues instead of repeatedly approving unchanged work.
8.6 - Common Policy Workflows
Choose a canonical journey for authoring, review, delivery, or retirement.
Use this map to choose the next task.
Follow the linked instructions rather than maintaining separate copies of the workflow.
For a complete worked example, use your first policy.
Policy Library Workflows
Start with Library inspection.
Find the intended policy, inspect its current state, and read permitted history.
Use the policy identifier to avoid acting on a similarly named row.
Policy Authoring Workflows
Choose Data authoring for the enabled Encryption journey.
Choose artificial intelligence (AI) authoring for Federated Guardrails.
Both paths require supported classifications, principals, and approved author access.
Classifications select data categories. Principals identify the target identities receiving permissions.
Neither path activates protection merely by saving a draft.
Create a Policy
After saving and inspecting findings, submit
and hand the policy identifier to the reviewer.
Workflow: Review Conflicts Before Approval
Refer to review.
Reload the submitted draft and read its current validation findings.
Request changes for hard failures.
After correction and resubmission, reload and review the corrected draft.
Only explicitly reviewable findings permit acknowledgement.
Acknowledgement records a deliberate exception with current finding identifiers and reasoning.
It cannot waive hard failures.
Workflow: Approve or Archive a Policy
These are different decisions, not alternative ways to finish a draft.
Refer to approval to approve the reviewed draft and start publication.
Refer to archive to remove a policy’s published configuration.
Approval creates the governed revision containing approved intent.
Archive starts withdrawal of that contribution, not deletion of its history.
Track delivery and withdrawal after either consequential operation.
Prefer explicit supported principals for a narrowly scoped first policy.
Check classification identities and discovered scope rather than names alone.
Scope includes selected classifications, applicable data, and intended principals.
Review permission rows again after changing principal scope.
Do not treat wildcard selection as a missing or empty scope.
Use a meaningful nonblank title.
Inspect saved content and findings after Save.
Do not interpret preview or an enabled Save button as submission eligibility.
Refer to Data or artificial intelligence (AI) instructions.
Lifecycle Management Practices
Keep author and reviewer responsibilities explicit.
Use each person’s own authenticated account.
Owner/editor grants do not supply review or approval capability.
Conversely, an author authority mapping does not prove an owner/editor grant on an existing policy.
Do not grant broad administrator access merely to complete a handoff.
Concurrency evidence must match the resource and the content under review.
An entity tag (ETag) validates a resource version. It does not grant authority.
Draft and governed-policy validators are not interchangeable.
The conditional-request reference
defines each command’s header requirements and stale-work handling.
Keep actionable reasons with requested changes and approval decisions.
Refer to governance for command-specific prerequisites.
Operational Practices
When reporting a delivery error, include the policy identifier, approved version, deployment identifier, error message, and support reference.
Ask the administrator named by delivery troubleshooting to resolve the error before retrying.
Retry sends the previously saved configuration. Edited drafts require submission and approval.
Periodic recompilation preserves authored intent and approval identity.
It can change compilation minors and queue delivery when source context changes.
A compilation minor recompiles the same governed revision without approving new intent.
Refer to automatic recompilation.
Verification
After approval, follow the Data or Guardrails verification guide rather than stopping at the approval notice.
For Data, check every expected location’s protection status with the Traverse administrator.
For Guardrails, confirm consumer retrieval and use Guardrails monitoring to check runtime behavior.
After archive, check that archiving finishes. Another policy can still protect the same data.
8.8 - Policy Use Cases
Match reader responsibilities to policy authoring, inspection, governance, and recovery outcomes.
These use cases explain when to choose each workflow.
Use the linked instructions for prerequisites, actions, and verification.
Use Case 1: Browse Policies in Policy Library
A stakeholder finds policies by name, classification, or principal.
The Library tasks explain search and filtering.
A read-only user cannot edit, approve, or archive policies.
Use Case 2: View Policy Summary Without Leaving the Library
A reviewer inspects scope, exceptions, and current state in the view panel.
Refer to summary inspection.
Do not confuse open proposed content with the governed revision.
Use Case 4: Author Policy Inputs Using Guided Steps
A Data author selects classified scope, principals, Encryption, and permissions.
Scope means selected data categories, their applicable data, and the intended target identities.
An AI author configures Federated Guardrails and principal-specific Unprotect permission.
Save, preview, and submission remain different operations.
Use Case 5: Review Conflicts and Approve Policy
A separately authenticated reviewer inspects the current submission.
The reviewer requests corrections or, with approval capability, approves reviewed work.
Refer to review decisions and then delivery.
Use Case 6: Track Policy State Using KPI Summaries
A stakeholder uses key performance indicator (KPI) tiles to narrow the loaded list.
The tiles do not establish target activation.
Refer to detail and history for an individual policy.
Use Case 7: Change an Approved Policy Safely
An author opens replacement draft work while the existing governed revision remains current.
The governed revision records approved intent. Saving a replacement does not approve it.
The replacement follows submission and review.
Automatic recompilation instead updates compiled output without rewriting author intent.
Refer to automatic recompilation.
Use Case 8: Reject and Resubmit a Draft
A reviewer requests changes with an actionable reason.
The author corrects and resubmits the same proposal.
The Rejected presentation does not make the work permanently uneditable.
Returned work awaits correction. Resubmitted work enters In Review for another decision.
Use Case 9: Roll Back to an Earlier Approved Version
An authorized author restores earlier policy intent as proposed work.
Another review and approval must precede replacement of the governed revision.
Policy rollback does not roll back software or restore a database.
Release Alignment Note
Choose an enabled authoring option.
The guides below cover Data Encryption and Federated Guardrails. Options labeled Coming Soon do not start an authoring workflow.
8.9 - Inspect and Use the Policy Library
Find policies, inspect current content and history, and choose authorized lifecycle actions.
Use the Library to inspect saved Data and artificial intelligence (AI) policies.
The Library includes policies created in Policy and information imported from Policy Integration Manager (PIM).
Authored policies have Policy identifiers and governance history.
Native identifiers belong to resources in downstream systems. Matching names do not make those identities interchangeable.
Not every visible row permits editing.
Before You Begin
Complete these prerequisites before using the Library:
Obtain the Policy address and your own authorized account through
access preparation.
Confirm policy:audit before inspecting restricted operations.
Arrange an authorized operator’s help if you lack that capability.
Access Policy Library
To open Policy Library, follow these steps:
Log in using your own authorized account.
Open Policy Library.
Confirm that the list loads without a retrieval error.
A read-only account can inspect permitted information without acquiring mutation authority.
If loading fails, keep the visible error instead of interpreting an empty list as no policies.
Understand Policy Library Columns
Read policy identity, source, classifications, principals, methods, exceptions, and modification information together.
Scope means the selected classifications, applicable data, and principals covered by the policy.
Treat policy state and protection state independently.
An Approved row can still have an open draft or incomplete publication.
The governed revision records approved intent. An open draft proposes changes to it.
Refer to states and revisions.
An unavailable or stale validation count does not mean zero exceptions.
Inspect the saved findings before submission or approval.
Imported display-only policies do not become editable merely because you can view them.
Search for Policies
To find and verify a policy, follow these steps:
Enter a recognizable name, classification, or principal in the search field.
Inspect the matching rows.
Confirm the policy identifier or detailed scope before taking action.
Search narrows the displayed collection. It does not grant access.
If no row matches, clear search and any active tile filter.
Do not create a duplicate until you have checked the intended policy identifier.
Search Input Options
Use policy names, classifications, or principals as search input.
Check the resulting scope before taking a lifecycle action.
Narrow and Sort the Policy List
To filter and sort the displayed policies, follow these steps:
Select the applicable Data Policy, AI Policy, or Drafts tile.
Choose an available sortable column to order the displayed results.
Clear the active tile when you need the broader collection again.
Sort Options
Use the sort direction shown by the selected column.
Do not infer a review priority from list order alone.
KPI Tiles
Key performance indicator (KPI) tiles summarize the loaded collection.
Open an individual policy to check publication and protection status. The tiles count policies, not completed deliveries.
Review Policy Summary in the View Panel
To inspect a policy summary, follow these steps:
Select the intended row or its View action.
Inspect the policy summary.
Confirm classifications, principal scope, protection methods, and outstanding exceptions.
Inspect the current governed and proposed information when available.
Do not mistake draft content for the governed revision.
If details fail to load, reopen or refresh the policy before making a decision.
Use the application programming interface (API)
when the Panel does not expose required evidence.
View Panel Fields
Inspect identity, scope, current state, exceptions, and source together.
Use current detail rather than inferring content from a summary cell.
Inspect History
To inspect a policy’s lifecycle history, follow these steps:
Open the policy’s view panel.
Inspect Change History.
Identify creation, saves, submission, review decisions, and approval events.
Check the responsible actor and timestamp for each relevant event.
Distinguish the currently approved version from earlier approved versions and the editable draft.
Use the history view’s continuation control when more entries remain.
Read the version’s actor, timestamp, and available notes before choosing it for rollback.
History lists lifecycle events and their metadata, not a full historical-content comparison.
Repeated saves belong to one proposal and can appear as separate events.
Each Save records a snapshot. The latest saved snapshot is the draft head.
Keep current draft identity separate from governed revision identity.
Do not treat a record version counter or saved snapshot identifier as a governed revision number.
Do not infer that the first visible entry identifies the governed revision.
For complete permitted history, use GET /policies/{policy_id}/history.
Follow pagination in the API reference
instead of assuming the visible history contains every retained event.
History can redact decision reasoning according to caller authority.
An absent visible reason does not prove that the reviewer supplied none.
An authorized auditor can use the separate audit export contract.
If history fails to load, do not treat the failure as an empty audit trail.
Preserve the policy identifier and error for an authorized operator.
Inspect Lifecycle Operation Details
Use this task only with audit capability.
Otherwise, give the policy identifier and visible error to your Policy administrator.
To inspect an operation when you have audit capability, follow these steps:
Open the policy’s Operations tab.
Select the latest request and read its attempt count and error message.
Copy its deployment identifier and support reference if you need help from your Policy administrator.
Restricted operation reads require audit capability.
Read access does not confer retry or reconciliation authority.
Continue with delivery issues.
Use Status-Aware Row Actions
Policy offers actions according to current state and authority.
The server still authorizes each command.
An absent action is not a reason to forge a request or broaden permissions.
Choose an available action that matches the work you need to do:
Cedar source describes generated access rules.
Use this reference when your view or API response includes Cedar source.
It does not prescribe an additional Panel action.
It does not show whether PIM applied the configuration or Guardrails retrieved it.
Use delivery verification to check those results.
For API authoring, keep the full structured compile request rather than replacing it with copied Cedar text.
Review Checklist
Compare the generated rules with the classifications, principals, and permissions you selected.
If they differ, correct the structured authoring inputs and compile again.
Start Policy Creation From Policy Library
To start policy creation, follow these steps:
Choose Data Protection Policy or AI Policy.
Follow the selected authoring journey.
Opening the form alone does not save a policy.
The selected journey opens an authoring form.
Only a successful Save creates persisted draft work.
8.10 - Policy Authoring Procedures
Choose the Data or artificial intelligence authoring lane and follow its canonical tasks.
Policy offers separate Data and artificial intelligence (AI) authoring journeys.
Use the lane that matches your protection target.
These journeys share governance, but they use different permission models.
Before You Begin
Prepare discovered classifications, supported principals, and approved author access.
Refer to start here and
roles and permissions.
Configure Data Scope
Refer to Data scope selection.
Scope identifies the selected classifications, applicable data, and intended principals.
Select an available classification from the catalog rather than typing a new category name.
Review changed scope before saving or resubmitting.
Choose Principals
Use explicit supported principals for a narrowly scoped first policy.
An all-principals selection broadens scope. It does not mean no access.
Refer to principal selection.
Choose Protection and Permissions
Refer to Data protection and permissions.
The current Data journey enables Encryption.
It marks standalone Masking and Filtering choices Coming Soon.
Data-Element Naming
Inspect the effective title and classification context before Save.
The title labels authored work. A native data element is a separate target resource with its own identity.
Two data elements with the same name can still have different identifiers in Policy Integration Manager (PIM).
Secure Query Availability
Attribute-based access control (ABAC) and row-level security (RLS) describe
different kinds of access restriction.
ABAC evaluates attributes when deciding access. RLS restricts which rows a query can return.
They do not make the disabled Data Filtering choice available.
This guide does not prescribe a supported Secure Query authoring recipe.
Ask your Secure Query administrator for the procedure supported by your deployment.
This is not a required step in the Data authoring journey.
Refer to integration flows for the products covered by these Policy guides.
Save and Submit Data Work
Refer to Data Save and validation.
Saving persists a draft. It does not approve or publish it.
The draft is proposed work. The governed revision records approved intent after review.
Continue with submission only after inspecting saved findings.
Review and Approval Controls
Refer to review and approval after submission.
The Panel’s Reject action requests changes. It does not erase the proposal.
Choose AI Authoring
Refer to AI authoring.
Configure Federated Guardrails and principal-specific Unprotect choices.
Then inspect preview and save.
Preview does not persist or activate a policy.
The AI configuration instructions explain classifications,
supported principals, and principal-specific Unprotect permission.
8.11 - Policy Lifecycle Operations
Choose a task for editing, submitting, approving, restoring, or archiving a policy.
Refer to lifecycle and governance for the complete actor handoff.
Use the links below to choose the action you need.
Lifecycle States
Treat draft status, governed revision, and protection progress separately.
The draft holds proposed changes. The governed revision records approved intent.
Protection progress describes target-specific delivery or protection evidence, not draft readiness.
An approved policy can have an open replacement draft.
Refer to states and revisions.
Open the policy in the Library.
Use the available edit or resume action to reopen existing draft work.
Do not replace an open proposal merely to begin editing.
The current governed revision remains current while you prepare its replacement.
Continue with Data Save and validation
or artificial intelligence (AI) preview and Save.
Edit Controls
Do not use rollback as a substitute for reopening a draft.
Submit a Policy for Review
Refer to submission as the authorized author.
Submission creates In Review work, not a governed revision or publication.
Confirm In Review and hand the policy identifier to the reviewer.
Resolve Requested Changes and Resubmit
Refer to correction and resubmission.
Use the same policy identifier and inspect the new current draft head.
A request for changes returns editable work.
The interface can label that work Rejected.
Only resubmission returns the corrected saved head to In Review.
Refer to request changes for the UI action and API command.
Approve a Policy
Refer to review and approval.
The approver must reload the submitted draft and read its current validation findings.
Approval Prerequisites
Use your approval capability and the current reviewed draft token for that decision.
Review Automatically Generated Minor Versions
Periodic recompilation can create a compilation minor without another author edit.
A compilation minor recompiles approved intent within the same governed revision.
It is not a new governed revision or another approval decision.
It preserves author intent, approval identity, and open drafts.
Unchanged output creates neither a new minor nor publication work.
Inspect history and
automatic recompilation.
Do not use publication retry as a recompile command.
Monitor Publication and Protection State
Refer to delivery verification.
Approval queues publication. Publication does not prove target protection.
Archive a Policy
Refer to archive.
The command starts withdrawal and can close open draft work.
Its initial result does not prove completed deprotection.
Withdrawal removes this policy’s contribution. Shared protection can remain.
Close an Open Draft
Use your author account with edit capability and applicable owner/editor access.
To close an open draft, follow these steps:
Open the intended policy in Policy Library.
Select Delete draft when the action is available.
Confirm the policy identifier in the dialog.
Accept cancellation.
Policy closes proposed work without deleting governed history.
Reopen the policy and verify that no open draft remains.
Do not treat canceling a draft as archiving its approved revision.
Deletion Considerations
The draft deletion action abandons proposed work, not its retained history.
It does not withdraw the approved contribution.
Review Enforcement-Point Coverage
Compare the approved scope with per-target delivery evidence.
A visible target label does not prove target activation.
Do not add an unavailable target to bypass a publication issue.
Enforcement-Point Deployment Controls
Refer to delivery verification for the applicable target.
Approval starts publication. Use the linked guide to monitor it rather than looking for a separate deploy action.
Manage Policy Access Grants
Refer to policy access management.
Owner/editor grants support resource access, not review or approval authority.
Roll Back Policy State
Refer to policy rollback.
Rollback creates proposed work for review. It does not restore a database or chart.
The restored proposal starts In Review. The current governed revision stays unchanged until approval.
8.12 - Policy Integration Flows
Understand how discovery, principal catalogs, native policy context, and target delivery affect policy work.
Policy reads classifications, data locations, and principals from Traverse, and existing policy information from Policy Integration Manager (PIM).
It uses those inputs to generate configuration for the receiving products.
Integration Architecture Summary
Traverse supplies discovery context and Data protection observations.
PIM supplies existing policies, roles, and identity-source configuration.
Federated Guardrails consumes the relevant published product output.
Refer to concepts before choosing an authoring lane.
Operators configure dependencies through operations.
Upstream Flow: Discovery Data Into Policy
Discovery identifies classifications and locations that affect policy compilation.
Authors choose valid discovered scope rather than inventing location identities.
Incomplete or unavailable discovery cannot establish complete protection evidence.
Refer to Data authoring and Data verification.
Discovery Inputs Used by Policy
Classification identities, discovered fields, and source context determine applicable protection.
The latest editable draft does not define the expected locations for an older governed revision.
Upstream Flow: Principal Catalog Into Policy
Principal catalogs provide supported identities for authoring.
Display names help readers, but native identities govern target meaning.
Native identities identify users, groups, or resources in an integrated system.
Policy identifiers identify authored policies, drafts, or governed revisions. They do not replace native identities.
Neither kind of target identity grants the caller Policy command capabilities.
A missing identity requires investigation, not substitution with a similarly named principal.
Principal Inputs Consumed by Policy
Explicit identity scope and wildcard scope have different meanings.
Selecting a principal does not automatically grant every protection action.
Refer to Data permissions
and AI permissions.
Trusted Application Inputs
Trusted application bindings describe target application context.
They do not grant the caller review, approval, or administrator authority.
Ask the PIM integration administrator to confirm that the selected identifier names the intended trusted application, not a similarly named application.
PIM Policy and Member-Source Harmonization
Native policies and member sources supply existing target context.
Imported or display-only information does not automatically become editable authored work.
If Policy reports a missing or conflicting PIM object identifier, ask your Policy administrator to inspect its saved mapping.
A stale mapping is a stored native reference that no longer matches the expected live resource, resource kind, or target.
Policy must verify that identity before reuse. A matching display name does not repair it.
Do not delete or adopt native resources merely to clear a publication error.
Refer to recovery.
Upstream Flow: Cedar Schema Attributes Into Policy
Schema attributes constrain valid compiler inputs.
They do not enable Coming Soon authoring features.
Use the current supported schema and preserve structured authoring input.
Do not copy retired attribute examples into a new policy.
Approval queues publication for a pinned governed revision.
That revision fixes the approved intent for the delivery work.
Later edits to an open draft do not change the configuration already queued for publication.
Refer to delivery for publication and protection checks.
Deployment Payload Categories
Different targets consume different artifacts and acknowledgement paths.
A published Guardrails artifact does not prove Data protection.
A native publication response does not prove consumer activation.
Data-Element Identity Across Targets
Policy preserves target-specific identities and contributor relationships.
Do not treat a matching display name as proof of shared ownership.
Use the identifiers returned by ownership inspection, not names copied from another policy.
Protector Location Validation for PIM Deployment
Native deployment must respect supported source and protector scope.
Protector scope means the source address ranges that the native integration can represent.
Do not broaden a range or substitute a protector to bypass validation.
If validation rejects a source address or protector, send the error to the PIM integration administrator.
Keep the requested range unchanged until the administrator confirms the correct protector and address range.
Operational Integration Checks
Periodic recompilation refreshes inputs before deriving approved output again.
It preserves author intent, approval identity, and open drafts.
Changed output can create compilation minors and queue publication.
A compilation minor recompiles intent within the same governed revision. It does not approve a new policy decision.
Unchanged output creates neither.
Fresh-input failure does not authorize compilation against cached discovery.
If refresh or validation fails, Policy keeps the previous approved configuration.
There is no public run-now endpoint.
Deployment retry instead reuses retained artifacts.
Refer to automatic recompilation.
For incomplete publication or withdrawal, use
delivery issues and
API recovery.
A Guardrails receipt records eligible consumer retrieval, not activation on every runtime.
Ask your Secure Query administrator for the verification procedure supported by your deployment.
9 - Troubleshoot Policy
Choose a safe recovery path using symptoms, available evidence, and your authority.
Start with the failed task, not a service restart.
Policy tracks draft work, governed revisions, and protection progress separately.
A healthy service does not prove that a policy protects its targets.
Choose Your Next Task
Use this table to choose the troubleshooting guide that matches the symptom:
Retain the policy identifier, failed action, timestamp, and returned message.
Include the time zone and any support reference.
Read the policy’s current state through your permitted interface.
Record draft status separately from governance and protection states.
Confirm who can perform the next task.
Authors, reviewers, approvers, auditors, and system operators have different authority.
Open the matching playbook above.
Each playbook defines its evidence, stop conditions, and success checks.
Do not share credentials or invent another user’s audit identity.
Owner or editor access does not grant every command capability.
Refer to roles and permissions.
When You Cannot Inspect the Evidence
An ordinary author might lack access to restricted diagnostics or operations.
Retain the visible error and ask an authorized operator to investigate.
A support reference does not grant diagnostic access.
Policy does not provide universal self-service recovery for audit-only evidence.
Use the glossary to distinguish authentication tokens, version validators, and delivery evidence.
Use the diagnostic handoff
when the next action requires authority you do not have.
Keep the recovery directory
for links to earlier recovery topics.
9.1 - Troubleshoot Authoring and Review
Recover draft and review work using current content, correct permissions, and resource-specific validators.
Use this task when saving, submission, review, or approval fails.
Application programming interface (API) callers must retain response headers and details.
An existing governed revision can remain current while replacement draft work fails.
Do not infer a delivery failure from a draft validation error.
Prerequisites
Prepare the following:
Identify the policy and the exact action that failed.
Check applicable policy access grants for authoring.
Edit authority alone does not replace an active owner or editor grant.
Ask a Protegrity Provisioned Cluster (PPC) user with administrator permissions to correct a missing command permission.
For a missing owner/editor grant, ask an existing owner of that policy.
Ownership does not grant review or approval capability.
An author role does not create review authority.
Use your deployment’s approved authority mapping. Do not request broad administration by default.
A reviewer describes a responsibility, not a separate policy_reviewer product role.
Different users can author, review, and approve.
Policy does not impose a universal two-person approval requirement.
Follow any additional separation-of-duties rules in your organization.
Use the Token for the Resource You Change
An authentication token proves caller identity.
A resource validator identifies the version you inspected.
Do not interchange them.
Use this table to identify the resource evidence required for each task:
Task
Required Resource Evidence
Save, submit, request changes, or approve draft work
Use the exact current Draft-ETag or draft summary etag in If-Match.
Archive a governed policy
Use its governed-policy ETag in If-Match, not the draft token.
Make an ownership reconciliation decision
Use the strong registry ETag from ownership inspection.
Retry retained deployment work
Use the exact deployment identifier. This endpoint requires neither If-Match nor a general idempotency key.
Complete the following steps:
Read the current policy with GET /policies/{policy_id}.
Keep both response validators distinct.
Compare the current draft with the content you intended to change.
Resolve another user’s changes before attempting your decision again.
Obtain the current saved validation as an authorized reviewer.
Use GET /policies/{policy_id}/validation. It requires policy:review.
Use the current reviewed draft token for the intended draft command.
Do not construct it from a visible version number.
Read GET /policies/{policy_id} again.
Check that the draft status reflects your command and that the saved content includes your intended changes.
An author without review authority must hand validation inspection to a reviewer.
After submission, the reviewer must reload the submitted draft and use its new Draft-ETag value.
The author’s pre-submission token is no longer the review token.
A missing token can return 428.
Draft commands can return 400 for the wrong token kind or 409 for a changed head.
Request-changes reports a mismatched token as 409.
Archive can return 412 for stale governed-policy evidence.
Read the response. Do not treat every 409 as the same failure.
Resolve Validation and Conflict Findings
Complete the following steps:
Read the returned error message and each issue’s path and message.
If an issue names a policy field, compare that field with the request you sent.
Correct draft fields that you control.
Resolve blocking conflicts rather than treating every finding as an acknowledgement choice.
Send directory, connection, or discovery errors to the administrator of the named integration.
Include the error and support reference. Do not change unrelated policy fields to clear an integration error.
Save corrected work through the normal authoring task.
Saving does not submit or approve the policy.
Ask an authorized reviewer to refresh validation for the saved head.
Current dependencies can change findings even when draft text remains unchanged.
Submit or review through the lifecycle tasks.
Acknowledge only permitted findings with the required notes and current conflict identifiers.
Hard permission-widening conflicts do not become safe through acknowledgement.
Missing classification, protector, or identity evidence can require an external owner.
Refer to restricted diagnostics
when an auditor must inspect configuration details.
Handle Returned Work and Approval
When a reviewer requests changes, the author should retain the reason.
Correct and save the draft before resubmitting eligible current work.
The reviewer uses their own authenticated account for the next decision.
Policy derives actor identity from authentication.
Do not send submittedBy, approvedBy, or spoofed identity headers.
Approval queues publication. It does not prove delivery or protection.
If approval succeeds but delivery stalls, switch to
publication recovery.
Do not repeatedly approve merely because protection remains incomplete.
Verification and Stop Conditions
Reload the policy and check the saved content, draft status, and recorded decision actor.
After approval, follow the delivery verification guides.
Use the diagnostic handoff
if you cannot obtain the required permission, current validator, or integration details.
Do not discard another user’s work, override hard conflicts, or share credentials.
Identify reported Policy installation limitations, their workarounds, and the evidence required before declaring recovery.
Use this reference before installation and when a documented limitation matches your symptoms.
An issue entry is not a general instruction to replace credentials or relax permissions.
Record installed component versions when reporting an occurrence.
Identity Provider Secret Backfill After Traverse
Condition and Reported Behavior
This issue concerns Policy installed after an existing Traverse deployment.
The reported behavior leaves the shared identity provider (IdP) connection Secret unpopulated.
Existing Traverse connection details do not automatically backfill it when Policy is installed later.
Policy can therefore lack the connection metadata required for member-source provisioning.
Workload readiness alone does not establish that this metadata exists.
Workaround
The reported workaround is to save the existing IdP connection details again in Traverse.
The connection owner should use their authorized connection-management workflow after Policy installation.
Preserve the intended settings and existing credentials.
Do not rotate passwords, recreate the connection, or reinstall Policy merely to trigger this update.
If re-saving does not populate the Secret, ask the platform operator to verify the configured scanner identity.
The chart’s idpSecret.writer must name the actual scanner ServiceAccount and namespace.
Its permission is limited to patching the named Secret in the Policy namespace.
Do not grant broad Secret permissions as a workaround.
Verification
Find the configured Secret name in the chart’s idpSecret.name value.
The default namespace is pty-policy.
Its default data key is sources.json.
Set IDP_SECRET_NAME to that Secret name and CTX to the intended Kubernetes context.
An authorized operator can check key presence without printing connection values:
kubectl --context "$CTX" --namespace pty-policy get secret \
"${IDP_SECRET_NAME:?Set IDP_SECRET_NAME to the configured Secret name}"\
-o go-template='{{if .data}}{{if index .data "sources.json"}}sources.json: present{{else}}sources.json: missing or empty{{end}}{{else}}sources.json: missing or empty{{end}}{{"\n"}}'
Use your configured Secret name, namespace, and key when defaults differ.
present confirms only that the key contains bytes.
It does not prove valid JavaScript Object Notation (JSON), the expected provider entry, or usable directory credentials.
Have the authorized integration owner verify the expected connection entry through approved tools.
Then repeat the operation that previously lacked member-source configuration.
Keep Secret values, bind passwords, and tokens out of logs and support attachments.
Escalate if the entry remains absent or the original operation still fails.
Find a failed publication or removal request, identify who can resolve its error, and retry only after checking the cause.
Use this task when a policy reports a publication or removal error after approval or archive.
Policy performs these operations in the background, so the approval or archive request can succeed before delivery finishes.
Withdrawal means removing this policy’s previously published configuration from the receiving products.
Prerequisites
Prepare the following:
Identify the policy and failed publication or withdrawal.
Obtain policy:audit for operation inspection, or involve an authorized auditor.
Obtain policy:approve for publication retry or policy:archive for withdrawal retry.
In Policy Panel, open the affected policy’s Operations tab for visible evidence.
If you cannot open it, send the policy name and visible error to your Policy administrator.
The remaining steps require the permissions listed above.
Find the Latest Publication or Removal Request
Each publication or removal request has a generation number.
A larger number identifies a later request for the same policy.
Retries remain part of the same request and increase its attempt count.
Complete the following steps:
Read GET /policies/{policy_id}/operations with policy:audit, or open the policy’s Operations tab.
Select the entry with the largest generation number.
For example, if the response contains generations 7 and 8, investigate 8 rather than retrying 7.
Copy that entry’s deploymentId, operation, lastError, and diagnostics into your incident record.
The operation field distinguishes publication from removal. diagnostics can provide a message, remediation, and support reference.
Match the error description to the next-action table below.
If the message does not explain the failure, send these details to your Policy administrator rather than guessing a repair.
If replacedByGeneration names a later request, investigate that request instead.
An earlier failed publication might precede a later removal request. Retrying the earlier work is not the intended recovery.
An operations 404 can mean no recorded deployments.
Confirm the policy separately before concluding that it does not exist.
Choose the Authorized Recovery Path
The descriptions below illustrate failure types. They are not exact error-message strings.
Use this table to match a failure description with its next action:
Error Description
Next Action
Policy cannot connect to Policy Integration Manager (PIM), or PIM refuses its login.
Ask the PIM administrator to check availability and the configured service account. Then check whether the attempt count increases.
PIM rejects a named configuration field.
Ask the PIM integration administrator to correct that field. Use the reapproval steps below if the policy itself must change.
Policy reports a missing or conflicting PIM object identifier.
Policy sent a change but could not confirm whether PIM applied it.
Ask the PIM administrator to inspect the affected object before another attempt. The previous change might already have succeeded.
The error says another publication or removal request replaced this one.
Return to Operations and inspect the later request.
The cause is resolved and retryable is true.
Follow the retry steps below using the selected entry’s deploymentId.
If requiresOperatorAction is true, include the diagnostic message, remediation, and supportReference in your administrator handoff.
If retryable is false, investigate the diagnostic rather than forcing a retry.
If Guardrails retrieval succeeds but the policy remains Published, check the
consumer identity and current receipt.
The empty-string consumer setting accepts absent or empty request identity, not named requests.
A nonempty setting requires an exact gateway-verified username match.
A missing qualifying receipt is not failed retained publication work.
Retrying publication cannot repair an identity mismatch or establish runtime activation.
Retry Retained Work
Complete the following steps:
Ask the administrator identified in the table to confirm that the reported problem is resolved.
Read the operation list again and confirm that the same request remains the latest and has retryable: true.
If a later request exists, investigate it instead.
Set DEPLOYMENT_ID to that operation’s exact deploymentId.
Use the appropriate publication or withdrawal capability.
If Panel offers Retry publication or Retry archive, use the same safety checks.
Do not use both the button and API request for the same attempt.
An absent retry control does not authorize a manual bypass.
This endpoint requires no request body, If-Match, or general Idempotency-Key.
A 409 can mean that automatic processing is still active or a later request exists.
Read the operation list again before selecting another deployment identifier.
Correct Inputs and Seek Reapproval
Retry reuses retained deployment artifacts.
It does not compile a corrected draft or incorporate later source configuration.
Complete the following steps:
Ask the policy author to correct rejected policy fields, or the integration administrator to correct the named connection setting.
Ask the PIM administrator to check whether the failed request created or changed any PIM objects.
A timeout or error does not guarantee that PIM made no changes.
After the administrator resolves the previous request, follow the normal draft correction, submission, and approval journey.
Policy can block reapproval while prior publication remains incomplete or uncertain.
Inspect the new governed revision and deployment after successful approval.
Follow the Data or Guardrails verification guide linked above.
If approval reports pim-publication-incomplete, send the error and previous deploymentId to the PIM integration administrator.
Do not repeatedly approve or delete the policy to clear this error.
Refer to authoring and review troubleshooting
for the current draft handoff.
Record Manual Archive Evidence
Use this path only for evidence tied to an active withdrawal.
It requires policy:archive, not merely audit access.
Complete the following steps:
Copy deploymentId from the latest removal request in Operations or the operation-list response.
Ask the PIM or Traverse integration administrator for the location identifiers associated with that removal request.
Do not submit evidence until the administrator supplies and checks those identifiers.
Prepare the ticket reference, description, and distinct location identifiers.
Explain what the operator actually observed.
Submit POST /policies/{policy_id}/archive-evidence using the
archive evidence contract.
The request includes deploymentId, ticketReference, description, and locationIds.
Retain the returned event identifier and recording time.
A 201 response records immutable audit evidence, not completed deprotection.
Follow withdrawal verification.
Confirm that the policy finishes archiving. Recording manual evidence alone does not complete removal.
This evidence endpoint requires no general If-Match or idempotency key.
It appends an event. Inspect an uncertain result before submitting duplicate evidence.
A 409 can identify inactive withdrawal or unexpected locations.
Stop if you cannot obtain the expected location scope.
Verification and Escalation
Read the latest operation again and check whether its error persists.
For publication, follow the Data or Guardrails verification guide for the policy’s targets.
For removal, follow withdrawal verification rather than treating an accepted archive request as completion.
If uncertainty remains, preserve the current generation and
escalate.
Do not claim recovery from approval, retry acceptance, or an evidence event alone.
Resolve a missing or conflicting PIM object mapping using the identifiers and actions returned by the reconciliation API.
Use this task when publication reports missing or conflicting native ownership.
Policy Integration Manager (PIM) identities differ from Policy’s saved reference keys.
Do not repair a mismatch by guessing an identity from its name.
A binding associates a saved Policy reference with a native object’s identifier.
The ownership registry stores these associations. Its version changes independently of a draft or policy revision.
Prerequisites
Prepare the following:
Identify the affected policy and operation.
Obtain policy:system-configure for inspection and decisions.
Obtain additional policy:archive authority if you intend to withdraw.
Arrange an authorized integration owner for native inventory or configuration problems.
Save the response and its ETag header in your incident record.
The decision request needs its refKey, governedSetGeneration, candidate identifiers, and affected policy versions.
Ask the owners of the policies listed in the response to review the proposed adoption, replacement, or removal.
Several policies can refer to the same PIM object.
A healthy original identity can return no allowed action.
A 503 means inventory evidence remains unavailable.
It cannot prove native absence.
A 409 can mean that a policy changed after inspection or has no current approved publication to repair.
Read the error message, then repeat inspection before preparing a decision.
Choose Only an Allowed Decision
The following table defines the decision boundary for each allowed action:
Allowed Action
Decision Boundary
adopt_candidate
Select only a compatible candidate from the current inspection.
authorize_replacement
Acknowledge the inspected affected-policy impact before authorizing replacement.
withdraw_policy
Start withdrawal only with archive authority and the inspected policy version.
Make a decision only from the current inspection:
Select an action from the current allowedActions.
Stop if inspection offers no suitable action.
Prepare its body using the reconciliation reference.
Copy the response’s refKey and governedSetGeneration, then add the fields required for the selected action.
State why you chose the candidate, replacement, or removal.
Attach the strong registry ETag as If-Match.
Do not use a draft token or governed-policy token.
Assign an Idempotency-Key to this exact decision.
Retain the key, body, resource, and precondition in the approved incident record.
Submit POST /policies/{policy_id}/pim-reconciliations.
Adoption or replacement authorization returns 200. Withdrawal acceptance returns 202.
Read the policy-scoped inspection again.
Confirm the reconciled identity or follow the returned withdrawal deployment.
Replacement authorization does not mean Policy already created a replacement.
Withdrawal acceptance does not mean Policy already removed protection.
Refer to publication and withdrawal recovery
for subsequent operation verification and eligible retry.
Handle Races and Uncertain Results
Use the response to select the next inspection or handoff:
For 428, supply the required registry precondition.
For 400, obtain a valid strong registry token from inspection.
For 412, inspect again because the registry changed.
For 409, read the error message and repeat inspection. Compare the returned policies, candidate, and allowedActions with your request.
For 503, ask the PIM administrator to restore inventory access, then repeat inspection.
After changed evidence, reconsider the decision before preparing a new request.
Use a new key for a newly decided mutation.
After a lost response, reuse a key only for the identical prior decision.
Do not change its body or evidence while claiming an exact replay.
If you cannot reconstruct the original request, ask the administrator handling the incident to inspect the current mapping before another submission.
Verification and Stop Conditions
Repeat the inspection request and check that the returned PIM identifier matches your decision.
Then follow delivery verification for the affected policy.
If PIM inventory is unavailable, an affected policy owner has not agreed, or allowedActions offers no suitable choice, escalate the incident.
Enumerate saved bindings and forget only mappings that complete live inventory and current Policy evidence prove safe to remove.
Use this task for stale saved ownership mappings across policies.
Cleanup removes Policy’s mapping, not a native Policy Integration Manager (PIM) object.
For a current policy incident, start with
policy ownership reconciliation.
A binding maps a Policy reference key to a native object’s identifier.
Stale means current, complete evidence proves the saved mapping no longer applies. Age alone does not establish that.
Prerequisites
Prepare the following:
Obtain policy:system-configure for all operations in this task.
Confirm complete live PIM inventory access with the integration owner.
Continue until nextOffset becomes null.
Confirm that the collected unique mappings match the reported total.
Restart from offset zero if any page returns 412.
Discard the mixed-version listing rather than adding a new token midway.
A later-page 428 means the request omitted its required precondition.
A 404 can mean the ownership registry does not exist.
Enumeration lists saved reference keys and native unique identifiers (UIDs).
It does not read native inventory or establish cleanup safety.
Inspect Selected Mappings
Inspect the selected mappings against live evidence:
Select only the saved keys relevant to the incident.
Use up to 100 keys per inspection, not guessed native names.
Inspect the selected key.
Set REF_KEY to an enumerated key:
For multiple keys, repeat the refKey query parameter.
Confirm that each selected mapping reports missing.
Compare its persistedUid with your selected saved mapping.
Confirm that every selected blockingPolicyIds list is empty.
Do not bypass active or unfinished policy work.
Confirm that writerPending is false.
Retain the target, governedSetGeneration, ownership version, and this inspection’s registry ETag.
Stop on 503: unavailable inventory cannot prove native absence.
Restore complete dependency access, then inspect again.
Also stop for live identities, blocking policies, or a pending writer.
Do not manually clear those blockers.
Forget Only the Verified Mappings
Complete the following steps:
Prepare forget_stale_bindings using the
global decision contract.
Include the inspected target, selected reference-to-UID mappings, reason, and governed-set generation.
Put the inspection’s strong registry ETag in If-Match.
A draft or governed-policy validator cannot substitute for it.
Assign an Idempotency-Key to the exact decision.
Retain the original request and key for uncertain-result recovery.
Submit POST /pim-reconciliations.
A successful 200 response identifies the reconciliation, new ownership version, and forgotten mappings.
Enumerate the current registry again.
Confirm that the selected mappings no longer appear.
For 409 or 412, inspect the changed registry and policy context again.
Reconsider the decision before sending new evidence with a new key.
After a lost response, replay only the identical original decision with its original key.
Never reuse that key for different mappings, evidence, or intent.
Verification and Escalation
Match the returned forgotten mappings against the approved selection.
Confirm their absence from a consistent current registry listing.
Do not report native resource deletion: this operation does not perform it.
Stop when inventory, blockers, or current decision evidence remain uncertain.
Use the diagnostic handoff
instead of broadening the cleanup scope.
9.6 - Troubleshoot Automatic Recompilation
Distinguish unchanged output, failed refreshes, blocked cycles, and deferred publication without inventing a manual recompilation trigger.
Use this task when changed source information does not produce expected approved output.
Automatic recompilation periodically checks approved policies against fresh inputs.
It differs from reviewer-requested saved validation and retained-deployment retry.
Prerequisites
Prepare the following:
Identify the approved policy and the source change you expected it to reflect.
Ask the platform operator to inspect effective scheduling and bounded logs.
Use policy:audit only when operation inspection becomes necessary.
An author can report the policy, source change, and visible history.
An author need not obtain cluster access or system-configuration authority.
Establish Whether a Cycle Should Run
Establish eligibility and effective scheduling first:
Confirm that the policy has an approved governed revision.
Saving an unapproved draft does not place its proposed changes into this process.
Record the source change and its timestamp.
Include the expected effect without assuming that every change alters compiled output.
Ask the operator to check the effective policy_recompile_interval_seconds setting.
The default is 300 seconds. Nonpositive values disable scheduling.
Ask the operator to inspect cycle outcomes after the source change.
Cycles wait before running, and execution adds time to the interval.
The interval is not a completion deadline or an immediate change-event trigger.
Do not restart Policy to force a cycle.
Policy exposes no public run-now endpoint for this task.
Follow deployment change control before enabling a disabled schedule.
Choose the Matching Outcome
Use this table to match a recompilation outcome with the appropriate next action:
Observed Outcome
Next Action
Complete with unchanged output
Verify current source scope and expected effect. Expect no new compilation minor or publication work.
Input refresh failure
Restore fresh discovery and live Policy Integration Manager (PIM) inventory access through the integration owner.
Blocking validation failure
Resolve the reported source, permission, method, or configuration finding with its responsible owner.
Persistence failure
Ask the platform operator to investigate the in-stack database and runtime health without editing records.
Superseded cycle
Check policy history for a later approval or archive, then observe the next scheduled cycle.
Skipped concurrent cycle
Observe the active cycle. Do not launch competing work.
Deferred cycle
Check the latest Operations request for unfinished delivery. Ask the Policy administrator about a reported legacy-policy adoption requirement.
An input-refresh failure does not authorize compilation against cached discovery.
Blocking cycles preserve the previous governed set.
The governed set is the current governed policy content considered together during validation.
Do not assume that a missing minor revision means that Policy ignored the schedule.
Unchanged output intentionally creates neither a new version nor publication work.
Resolve the Cause and Observe the Next Cycle
Complete the following steps:
Preserve the cycle’s time, outcome, and sanitized diagnostics.
Include the affected policy and effective settings in the incident record.
Send connection errors to the named integration’s administrator, or policy validation errors to the author and reviewer.
Do not change author intent merely to clear an operational failure.
Observe the next scheduled cycle after correction.
Use its actual outcome rather than assuming success after a fixed wait.
Inspect permitted policy history for changed compilation output.
Automatic recompilation preserves authored intent, approval identity, and open drafts.
Inspect subsequent publication separately when output changes.
A compilation minor and queued work do not prove protection.
If intended policy content must change, use the normal
authoring and governance journey.
Deployment retry sends retained artifacts. It does not request automatic recompilation.
Legacy adoption or blocked delivery can require separate authorized decisions.
Do not promise that another cycle will resolve them automatically.
Verification and Stop Conditions
For unchanged output, confirm a successful cycle using fresh inputs.
For changed output, confirm the new compilation minor and associated publication work.
Then follow the Data or Guardrails verification guide.
Stop and escalate
when repeated cycles fail, the outcome remains unavailable, or a required action exceeds your authority.
Include effective scheduling, observed outcomes, and the dependency owner’s findings.
9.7 - Common Policy Errors
Identify the right evidence and recovery task for common Policy failures.
Use the action and response together when identifying an error.
Keep application programming interface (API) response details with your incident evidence.
The same status code can describe different problems.
Keep returned details and support references before attempting recovery.
Find the Matching Symptom
A member source is a directory or identity source configured in Policy Integration Manager (PIM).
Its connection metadata differs from Policy’s own service login or a human user’s token.
Use this table to match an error symptom or response with its interpretation and next task:
Configuration errors can require an administrator or a dependency owner.
Restricted diagnostic access does not imply permission to change that dependency.
Refer to diagnostics for the handoff.
Verifying the Common Errors
Verify the outcome of the failed task, not merely service health.
Use these checks to confirm the task’s result:
Reload the draft and check saved content and status after a correction.
Check the new approved version in Change History and its delivery request in Operations after approval.
Follow the Data or Guardrails verification guide after publication recovery.
Check saved mappings after ownership repair or cleanup.
Check routing and readiness separately after platform recovery.
Liveness and readiness checks cannot prove policy publication or target protection.
Use the relevant playbook’s verification before closing the incident.
9.8 - Collect Policy Diagnostics
Collect accessible evidence and prepare a safe handoff without assuming cluster or administrator access.
Collect enough evidence to identify the failed task and responsible operator.
Start with information you can access.
Do not request broad administrator access merely to report an issue.
Prerequisites
Prepare the following:
Use your own supported Policy session or application programming interface (API) credentials.
Obtain policy:audit only when your assigned investigation requires restricted diagnostics.
Obtain namespace read access only for the optional platform checks.
Follow your organization’s incident process for sensitive evidence.
Steps
Collect evidence available without cluster access:
Record the failed action and its timestamp with time zone.
Include the configured Policy address and release version when known.
Retain the response status and sanitized error details.
Capture a support reference if the response includes one.
Open the affected policy in Policy Library, or read it through GET /policies/{policy_id}.
Record the policy identifier, displayed version, draft status, and protection status.
Record the last successful action.
Include relevant source changes and the time the problem started.
Route the evidence to the matching troubleshooting task.
Stop if its next step requires authority you lack.
Do not send bearer tokens, cookies, passwords, private keys, or rejected sensitive values.
Remove authentication headers from captured requests before sharing them.
Inspect Restricted Evidence
An authorized auditor can inspect operations and validation diagnostics.
Run the examples in Bash.
Complete the endpoint, trusted certificate authority (CA), and token setup in
Configure API access.
This setup does not require cluster access.
Use your own token, not a worker account or another participant’s token.
Keep the protected header file in that setup’s dedicated shell.
Follow its credential cleanup when you finish.
Set the API alias and affected policy identifier before the first request:
exportPOLICY_API="${POLICY_BASE_URL:?Complete endpoint setup}"exportPPC_CA_FILE="${PPC_CA_FILE:?Set the trusted CA bundle path}"exportPOLICY_ID='replace-with-the-affected-policy-identifier'
POLICY_API and the operations guide’s POLICY_BASE_URL identify the same versioned API base.
Keep response headers when using these read-only requests:
Save the operation-list response in your incident record after removing sensitive values.
Select the entry with the largest generation number.
Record its deploymentId, lastError, attemptCount, and diagnostics. These identify the latest delivery request and its failure.
Retrieve retained validation evidence when you have a VAL- support reference.
Set SUPPORT_REFERENCE to that exact reference:
Retain only the evidence needed for the incident.
Successful diagnostic responses specify Cache-Control: no-store. Use approved incident storage.
Validation diagnostics expire after seven days.
A 404 can mean absent or expired evidence.
An operations 404 can mean no recorded deployments, not a missing policy.
A 403 requires an authorized handoff, not a different endpoint.
Publication diagnostics can contain PUB- support references.
Do not send these references to the validation-diagnostics endpoint.
An operator with server access can correlate them with publication logs.
An API-only caller should pass the reference to that operator.
Collect Optional Platform Evidence
Only a platform operator with namespace read access should run these commands.
Replace pty-policy if your installation uses another namespace.
Set and confirm the intended cluster context first:
exportCTX='your-approved-kubernetes-context'kubectl --context "${CTX:?Set CTX to the approved context}" cluster-info
Stop if the reported cluster differs from the incident’s deployment.
Collect only the platform evidence relevant to the incident:
List workload status and recent events.
kubectl --context "${CTX:?Set CTX}" get pods,svc,events -n pty-policy
Inspect an affected pod from that list.
Replace POD_NAME with its exact name:
kubectl --context "${CTX:?Set CTX}" describe pod POD_NAME -n pty-policy
Review logs for secrets before attaching excerpts.
Do not collect Secret contents or query the database as a routine diagnostic.
Check previous-container logs only when the pod history requires them.
Prepare an Escalation
Provide the responsible administrator or your organization’s support contact with:
The failed task, timestamp, time zone, status code, and sanitized message.
The policy, draft, governed revision, deployment, and generation identifiers you can access.
The support reference and authorized diagnostic result, including expiry or access refusal.
The current state and last successful action.
The selected playbook, actions already attempted, and observed results.
The missing authority or evidence that prevents safe progress.
If a reconciliation request lost its response, include its request body and idempotency key after removing sensitive values.
Keep that information in the approved incident record, not public logs.
Ask the administrator handling reconciliation to check the current mapping before submitting another decision.
Verification
Confirm that the recipient can identify the failed task and next authorized action.
Missing cluster access or expired diagnostics does not invalidate the report.
Record those limits and preserve the original public error.
9.9 - Recover Policy Safely
Find the canonical recovery task without confusing deployment retry, ownership repair, and platform recovery.
Use this directory to select a recovery task.
Each linked playbook identifies the required authority and completion evidence.
Application programming interface (API) requests require the command’s specific authority.
Do not substitute a deployment retry for a corrected policy approval.
Do not substitute a Helm rollback for database recovery.
Retry continues retained delivery work.
Reconciliation compares saved ownership or protection evidence with current observations.
Database recovery restores retained local state and still requires checking external effects.
Escalation Data to Collect
Retain the failed action, timestamp, policy identifier, and sanitized response.
Include deployment and generation identifiers when available.
Refer to diagnostics and escalation
to collect evidence within your access.
Cluster access is not a prerequisite for reporting a policy failure.
Recover From Failed Release Change
Stop before rolling back workloads against a changed database schema or owner.
Helm rollback does not reverse database schema or ownership changes.
An older chart might expect credentials that no longer own the database.
Refer to installation and release-change triage.
Use the administrator’s qualified deployment or restore procedure.
Keep PostgreSQL inside the Policy stack.
Recover From a Partially Failed Policy Deployment
A failed publication might already have changed native resources.
Do not delete ownership records or assume that failure means no effect.
Refer to publication and withdrawal recovery.
That playbook separates retained-artifact retry from corrected-draft reapproval.
Resolve a Missing PIM Ownership Binding
Policy Integration Manager (PIM) bindings connect saved references to native identities.
Only a caller with policy:system-configure can inspect and reconcile them.
Refer to policy ownership reconciliation.
Use only actions that the current inspection permits.
Forget a Verified-Stale PIM Ownership Mapping
Global cleanup removes saved mappings, not native objects.
It requires complete inventory evidence and no blocking work.
Refer to verified-stale binding cleanup.
An unavailable inventory cannot prove native absence.
Recover API Routing
Refer to installation, identity, and routing troubleshooting.
Check configured public paths and gateway acceptance before changing chart values.
Do not disable authentication or certificate verification as a repair.
Recover a Stalled Publication or Withdrawal
Refer to publication and withdrawal recovery.
Retry only eligible current-generation work after resolving its cause.
Record manual archive evidence separately from observed deprotection.
9.10 - Troubleshoot Installation, Identity, and Routing
Isolate platform startup, access, and route failures without weakening authentication or assuming a safe database rollback.
Use this task when Policy cannot start, authenticate callers, or serve configured paths.
Separate platform availability from policy delivery failures.
Healthy workloads do not establish protection for an approved policy.
Prerequisites
Prepare the following:
Obtain the configured Policy address and installed release details.
Use your own supported gateway session or application programming interface (API) credentials.
Involve a platform operator for namespace, release, gateway, and log inspection.
Identify the first failing workload or initialization task.
Use pod status, events, and bounded logs from the failed interval.
Check database bootstrap and runtime configuration through the authorized operator.
Keep PostgreSQL inside the Policy stack.
Ask the operator to verify Secret references and required key names.
Do not print or attach credential values.
Determine whether the release change altered database schema, grants, or ownership.
Preserve this evidence before selecting a recovery procedure.
Ask the platform and database administrators for the deployment or restore procedure tested with the selected release versions.
Do not restart an older API until they confirm that it can use the current database schema and accounts.
Helm rollback does not reverse database schema or ownership changes.
An older chart might expect a former shared database login.
Do not blindly roll back workloads after a database-role migration.
Database recovery also requires reconciliation of external effects before resuming work.
These checks do not establish a universal supported rollback or restore recipe.
Resolve Authentication and Permission Failures
Check authentication, command authority, and dependency access separately:
Record the failing route, action, and status code.
Separate failed authentication from a refused policy command.
Reauthenticate through the supported gateway for a 401 response.
Do not inject trusted identity headers or bypass the gateway.
Check the command capability for a 403 response.
Ask a Protegrity Provisioned Cluster (PPC) user with administrator permissions
to check the required capability against your account’s role mapping.
Check applicable policy resource grants for edit or rollback work.
Ask an existing owner to resolve grant issues.
For a Policy Integration Manager (PIM) or Traverse login failure, ask that product’s administrator to check the account used by the failing request.
Policy authority does not establish native integration permissions.
Do not grant broad administrator access as a routine repair.
An owner/editor grant does not create approval, audit, or system-configuration capability.
For draft decisions, use authoring and review troubleshooting.
Distinguish Credential Kinds
Your gateway login authenticates interactive requests.
Your draft, governed-policy, and registry validators protect resource versions.
An idempotency key identifies an exact reconciliation decision.
None of these keys replaces authentication.
Interactive dependency calls and unattended workers can use different credentials.
A caller’s delegated bearer token does not repair a worker’s configured service identity.
A workload service identity does not grant an interactive user native permissions.
Kubernetes ServiceAccounts, registry pull credentials, and dependency users serve different purposes.
Ask the PIM or Traverse administrator to verify the service user for worker failures, or your own dependency access for interactive failures.
Do not copy worker credentials into user requests or share another user’s token.
Refer to API authentication.
Diagnose Public Routing
Compare the public route with the configured deployment:
Confirm the configured host and versioned API base with the administrator.
Do not assume a 404 means the policy itself is missing.
Compare the failing public path with the installed configuration.
The usual API prefix is /pty/policy/v1.0.
Ask the operator to inspect gateway routes.
For the default namespace:
kubectl --context "${CTX:?Set CTX}" get httproute -n pty-policy
Ask the operator to inspect the affected route’s acceptance and backend references.
Use the actual gateway name and namespace from that route.
Ask the operator to verify backend Service endpoints and ports.
Correct the installed route configuration through approved change control.
Retest the configured Panel path and a known API path independently.
The usual Panel path ends in /pty/policy/v1.0/ui/, not the host root.
Do not reapply chart values merely because a route is missing.
Confirm whether this installation uses Gateway API routing first.
Do not disable authentication or certificate validation to make a probe succeed.
Check Service Health Without Claiming Policy Recovery
Set POLICY_API, PPC_CA_FILE, and the protected POLICY_AUTH_HEADER file using the
diagnostic setup.
Use your deployment’s required authentication:
Liveness normally returns 204.
Readiness returns 204 when its checks succeed. 503 needs dependency investigation.
These checks do not validate approval, publication, target activation, or deprotection.
Check Shared Identity Provider Metadata
The shared identity provider (IdP) connection document supports native member-source creation.
It is not the Traverse poller’s login Secret.
When Policy follows an existing Traverse installation, the shared document might remain empty.
Use the reported workaround
and ask the connection owner to verify the intended entry.
Do not grant extra scanner permissions or replace working service credentials to conceal missing metadata.
Verification and Escalation
Confirm workload stability, supported authentication, route acceptance, and the original failing request.
After deployment recovery, repeat installation verification.
Then follow the delivery guide for affected policies.
Stop when database compatibility, trusted identity, or route ownership remains uncertain.
Use the diagnostic handoff
with the installed release, failing path, timestamps, and sanitized operator findings.
10 - Additional Information
Find Policy concepts, terminology, system operations, and frequently asked questions.
Use these references to understand policy behavior and maintain the running service.
For task instructions, start with Usage or Installation.
Concepts and Terminology
Use these references to understand Policy concepts and terminology:
Policy concepts explains authoring inputs, validation, and permissions.
Understand authoring, governance, revision identity, authorization, and delivery evidence before performing tasks.
Policy connects authored intent to reviewed revisions and target-specific delivery.
The Library helps users find policies and inspect their lifecycle history.
Data and artificial intelligence (AI) authoring capture different protection inputs.
The compiler validates those inputs and prepares target-specific artifacts.
Read by Concern
Choose the reference that matches your question:
States and revisions distinguishes proposed work, approved content, and delivery.
An author can prepare a replacement while an approved revision remains governed.
A reviewer must inspect the current submitted content before deciding.
An operator follows delivery and recovery evidence after governance completes.
An application developer must preserve API errors, identities, and concurrency tokens.
No single status label answers every question.
Refer to states and revisions
before interpreting a policy’s progress.
Understand Policy responsibilities and find the appropriate conceptual, workflow, or operational guide.
Policy combines guided authoring, review decisions, governed revisions, and delivery evidence.
Refer to Understand Policy for the canonical conceptual references.
Refer to Start here for an ordered learning path.
Key Capabilities
Policy supports the following responsibilities:
Find policies and inspect available detail and history through Policy Library.
Author Data protection or artificial intelligence (AI) policies with lane-specific inputs.
Save proposed work separately from the current governed revision.
Submit, request changes, and approve with the appropriate authority.
Publish approved artifacts and inspect target-specific delivery evidence.
Refresh approved compilation output through background processing.
Policy Release Highlights
Supported authoring choices and available interface actions depend on your release and authority.
Use the corresponding task guide rather than inferring support from a conceptual example.
The API reference distinguishes operation contracts from interface presentation.
Documented Use Cases
Refer to use cases
for author, reviewer, operator, and integration journeys.
Supported Platforms
The deployment guides target Kubernetes with the required Protegrity platform integrations.
They do not establish support for arbitrary standalone platform combinations.
System Requirements
Operators need the release’s platform, storage, gateway, identity, and integration prerequisites.
PostgreSQL runs inside the Policy stack.
Authors and reviewers need the capabilities for their assigned tasks.
Refer to installation
and access preparation.
Architecture
Refer to Architecture
for component responsibilities and delivery boundaries.
10.1.1.1 - Role-Based Access Control and Artificial Intelligence Policies
Distinguish access to Policy from the runtime permissions expressed by an authored policy.
Role-based access control (RBAC) governs access to Policy operations.
An authored artificial intelligence (AI) policy governs a different concern:
runtime behavior for the selected principals and classifications.
Here, runtime means downstream processing of requests or data, not administration of the Policy service.
Do not treat these two permission systems as interchangeable.
RBAC in Policy
The platform authenticates users through its supported gateway integration.
Policy maps trusted authorities to command capabilities.
Editing and rollback also require applicable policy access grants.
The policy_author bundle does not provide review or approval authority.
An owner grant does not add either capability.
Different authenticated users can therefore perform the author and reviewer responsibilities.
This capability separation does not itself enforce mandatory two-person approval.
AI authoring captures classification and principal-specific runtime permissions.
Its permissions matrix describes the selected principals’ allowed behavior.
It does not assign those principals administrative roles in Policy.
For example, a principal can receive a runtime unprotect permission.
Unprotect means allowing supported runtime access to protected content. It does not remove a governed policy.
That permission does not allow the principal to submit or approve a Policy draft.
Likewise, a Policy approver does not automatically receive runtime unprotect access.
Preview output, saved content, approval, and consumer receipt remain distinct checkpoints.
A delivered Federated Guardrails artifact does not prove execution against real traffic.
Refer to validation and review decisions
and delivery verification.
Verification
Verify product access and authored runtime permissions independently.
Refer to authoring procedures
for the selected lane.
Refer to lifecycle and governance
for the review handoff.
A policy can have governed content and an open replacement draft simultaneously.
Saving that replacement does not make it the approved policy.
Publication and observed protection remain separate from both authoring and approval.
Three Independent Questions
The following table distinguishes the questions answered by draft, governance, and delivery evidence:
Concern
Question
Relevant Information
Draft work
What proposal can the author edit or submit?
Inspect draft identity, current snapshot, and draft status.
Governance
Which content has completed approval?
Inspect the governed revision and its approval history.
Delivery and protection
What happened at the intended targets?
Check the latest operation and the Data observations or Guardrails consumer receipt.
Before first approval, no governed revision or protection evidence may exist.
An empty protection value does not mean protection succeeded or failed.
Do not derive these independent concerns from one displayed status.
Drafts and Saved Snapshots
The policy identifier remains stable across its lifecycle.
A draft identifies proposed work for that policy.
Each successful save creates a retained snapshot of that work.
Repeated saves do not create repeated governed revisions.
The draft head is its current saved snapshot, not the governed revision.
A snapshot records saved content. The draft’s head changes when later work supersedes it.
Submission puts the current proposal into review.
A request for changes returns editable work with the reviewer’s reason.
The author can correct that proposal and submit it again.
Reviewing a draft does not publish its contents.
Governed Revisions and Compilation Minors
Approval creates a governed revision from the exact reviewed draft.
It also starts asynchronous delivery work.
A later authored replacement must pass through the review workflow again.
Automatic recompilation serves a different purpose.
It recompiles approved intent against fresh context without requiring author edits.
Changed output creates a compilation minor under the governed revision.
Approved intent means the reviewed classifications, principals, methods, and permission selections.
A compilation minor changes generated target configuration, not those authored selections.
It preserves the original approval identity and leaves open drafts unchanged.
Unchanged output creates no compilation minor or publication work.
For example:
Alex saves and submits a draft.
The draft remains proposed work until an authorized approval succeeds.
Morgan approves the current submission.
Policy creates the first governed revision and queues publication.
A later automatic cycle detects changed compilation output.
Policy records a compilation minor and queues new delivery work.
Alex edits the authored policy.
The new draft remains separate from the governed revision and its compilation minors.
A deployment generation identifies a particular publication or withdrawal operation.
A retry continues retained work for that generation.
It does not approve new authored content or substitute a corrected draft.
The deployment identifier selects the retained operation. Its generation distinguishes successive publication or withdrawal operations for the policy.
Inspect operation history rather than deriving either value from the governed revision number.
For Data protection, verify the expected location scope and positive protection observations.
For Federated Guardrails, a consumer receipt records retrieval of the currently generated configuration.
A receipt does not prove execution against real traffic or activation by every replica.
A policy using both targets needs complete Data observations and the matching Guardrails receipt.
Publication failure does not undo the approval that created the governed revision.
Withdrawal can also remain incomplete after an archive request succeeds.
Do not treat archive acceptance as completed deprotection.
Concurrency Tokens Identify Different Resources
Application programming interface (API) clients must retain server-issued validators.
An entity tag (ETag) is an opaque validator for one resource version.
Send the exact value, including quotes, in the operation’s required If-Match header.
It is not an authentication token, policy identifier, or interchangeable revision number.
The table identifies each resource’s validator and the distinction API clients must preserve:
Resource
Validator
Required Distinction
Current draft
Draft-ETag, supplied as If-Match for draft commands
Re-read after save, submit, or review decisions.
Governed policy
Policy ETag for archive
Do not substitute the draft token.
Ownership registry
Registry ETag for reconciliation decisions
Do not substitute a policy or draft token.
The API reference
defines each operation’s exact token and error contract.
Continue with lifecycle and governance
for the author and reviewer tasks.
10.1.3 - Roles and Permissions
Distinguish authentication, command capabilities, policy access grants, and downstream authority.
Authentication establishes who is making a request.
Authorization determines whether that identity can perform the requested operation.
Some commands also require access to the particular policy.
A command capability answers whether an identity may perform an operation at all.
A policy access grant answers whether that operation may affect this specific policy.
Commands that require both checks must satisfy both.
Responsibilities Are Not New Roles
An author prepares and submits proposed work.
A reviewer inspects a submission and can request changes with the required authority.
An approver accepts the reviewed content with approval authority.
An operator observes delivery and performs specifically authorized recovery tasks.
One person can hold multiple responsibilities.
Different users can also perform them with separate authenticated accounts.
The capability model does not itself enforce mandatory two-person approval.
There is no separate policy_reviewer role in the role bundles below.
Product Role Bundles
The following table summarizes each product role bundle and its key limitation:
Role
Capability Scope
Important Limit
policy_viewer
Grant policy:view.
Do not assume edit, review, approval, or restricted diagnostic access.
policy_author
Add edit, rollback, compile, and preview capabilities.
Require an applicable policy grant for ordinary edit and rollback. Do not grant review or approval.
policy_admin
Add review, approval, archive, audit, system configuration, and observability.
Do not treat this broad bundle as the default way to grant one responsibility.
Platform permissions can map to capabilities separately from these role bundles.
Their membership does not necessarily match the product bundles exactly.
Ask the platform administrator to verify the effective authorities for your task.
Unknown authorities do not create capabilities.
An authority is a permission asserted by the trusted platform gateway.
It is not a request field that clients may choose for themselves.
Command Capabilities
Use this table to identify the capability and policy boundary for each task:
Task
Required Capability
Additional Boundary
Create, edit, or submit authored work
policy:edit
Require the applicable policy access grant for existing-policy edits and submission.
Roll back authored work
policy:rollback
Require the applicable policy access grant.
Refresh saved validation or request changes
policy:review
Do not substitute author ownership for review authority.
Approve a submission
policy:approve
Review the current draft and use its current concurrency token.
Archive a policy
policy:archive
Use the governed-policy validator and provide a reason.
Inspect retained operations or restricted validation diagnostics
policy:audit
Do not assume a support reference grants access.
Reconcile native ownership
policy:system-configure
Require additional archive authority for withdrawal decisions.
Inspect operational metrics
policy:observability
Do not assume system configuration authority includes metrics access.
Retry authority follows the retained operation.
Publishing retry requires approval authority. Withdrawal retry requires archive authority.
Refer to recovery and reconciliation
for the complete operation-specific rules.
Policy Access Grants
An owner or editor grant determines access to particular authored work.
It does not create review, approval, archive, or system configuration capabilities.
An author role also does not automatically grant edit access to every policy.
For example, policy:edit without an applicable owner/editor grant does not authorize an existing-policy edit.
An owner grant without policy:approve does not authorize approval.
Refer to policy access management
for grant changes.
Do not remove the last active owner during routine access maintenance.
Administrator recovery is a separate audited path, not an ordinary grant substitute.
Identity and Downstream Access
Use the supported platform sign-in or gateway authentication path.
Policy records the authenticated actor. Clients must not impersonate another reviewer.
Do not supply submittedBy or approvedBy as a workaround.
Policy authority does not automatically create permission in a downstream system.
An operator may need separate integration and target access.
Refer to security settings
and API authentication.
Understand how catalog-backed authoring choices define policy scope and target-specific behavior.
Authoring combines the data or runtime scope with intended principals and permissions.
Catalog choices have operational meaning. They are not interchangeable display labels.
Classifications and Scope
A classification identifies a category of discovered data.
For Data protection, its resolved locations determine where protection applies.
Review that scope before submission, particularly after catalog changes.
The same display name does not prove the same current location set.
Scope is the resolved set of locations or runtime subjects to which the selected inputs apply.
Record identifiers and representative locations, not just a classification’s display name.
An empty selection and an unresolved classification are different problems.
An empty selection supplies no classification.
An unresolved classification supplies an identifier that current discovery cannot match to the required input.
Correct the selected input when it is wrong.
Ask an operator to inspect discovery when expected catalog data is missing.
Principals and Permissions
A principal identifies an intended runtime subject, such as a configured group.
Select it from the available catalog and verify its intended membership.
Do not confuse a policy’s runtime principals with the users administering Policy.
For example, an application group may receive an unprotect permission.
That permission does not allow the group to approve Policy drafts.
Conversely, approval authority does not automatically grant runtime data access.
Protection Methods and Authoring Lanes
Data authoring captures protection choices supported by the selected release and target.
Artificial intelligence (AI) authoring uses its own principal-permission matrix.
Do not infer that every method listed in a catalog supports both lanes.
Do not treat hidden, unsupported, or unavailable choices as tutorial prerequisites.
Preview helps inspect target-specific output.
Saving retains authored inputs, including supported incomplete work.
Submission and approval require current validation and the appropriate review decisions.
Changing Context
Discovery, configured identities, and native target inventory can change over time.
Policy therefore validates current context during governance operations.
Automatic recompilation can also generate updated artifacts from approved intent.
Neither mechanism authorizes silently changing an author’s proposed policy.
Distinguish saving, previewing, validating, acknowledging conflicts, approving, and verifying delivery.
Each checkpoint answers a different question about a policy.
A successful earlier checkpoint does not guarantee success at the next one.
Checkpoint Meanings
The following table explains what each checkpoint establishes and what to verify next:
Checkpoint
What It Establishes
What Remains to Check
Save
Retain accepted authored input as a draft snapshot.
Resolve incomplete or invalid work before submission.
Preview
Inspect target-specific compilation output for the supplied input.
Save the intended content and validate its current context.
Saved validation
Check the latest saved draft for an authorized reviewer.
Correct blocking findings or review conflicts that permit acknowledgement.
Submit
Accept eligible current draft work into review.
Obtain the authorized review decision.
Approve
Commit the reviewed governed revision and queue delivery.
Verify publication and target-specific protection evidence.
Publication
Deliver generated configuration to the receiving product.
Follow the Data or Guardrails verification guide.
Blocking and Reviewable Findings
Some findings require correction before the operation can continue.
Other findings permit an explicitly recorded review acknowledgement.
An acknowledgement records an authorized acceptance of a specifically reviewable finding.
It does not suppress validation, widen permissions, or override a blocking finding.
Use the returned conflict identifiers and the current operation contract.
Do not acknowledge every finding merely to make a request succeed.
Review notes explain an approval.
A request-changes reason explains what the author must correct.
Neither text field replaces a missing capability or stale concurrency token.
Fresh Validation and Stale Work
Current dependencies can change after a preview or earlier save.
That context includes discovered locations, identity metadata, and current native target inventory.
Submission and approval therefore validate current inputs and governed context.
A reviewer must load the submitted draft and its current validation results before approving.
If a command reports changed work, refresh the policy and review the new content.
Do not blindly replace the token and replay a consequential decision.
Refer to API error handling.
Diagnostics and Escalation
An error can provide a support reference without disclosing restricted diagnostics.
An ordinary author may need an authorized operator to inspect that reference.
Record the operation, policy identifier, time, and safe error details.
Never include access tokens or sensitive payload values in a support request.
The reference identifies retained evidence. It neither contains that evidence nor grants permission to read it.
Define the identities, revision records, delivery evidence, and recovery terms used throughout Policy.
Policy uses different records for authored work, approved content, and target delivery.
Similar names do not make those records interchangeable.
This reference explains the distinctions used in task instructions and error messages.
Authoring and Governance
The following table defines terms for authoring and governance:
Term
Meaning and Boundary
Authored intent
Describe the author’s selected classifications, principals, methods, and permissions, before target-specific compilation.
Authoring lane
Distinguish Data authoring from artificial intelligence (AI) authoring. Their inputs and supported protection choices differ.
Classification
Identify a category of discovered data. Its current resolved locations determine Data scope.
Scope
Identify the data locations or runtime subjects affected by the selected policy inputs. A display name alone does not establish scope.
Principal
Identify a runtime subject, such as a configured directory group. Do not confuse it with the person administering Policy.
Draft
Hold proposed policy work that can proceed through saving, submission, review, and approval.
Draft identity and cycle
Keep the stable draftPolicyId separate from its cycleNumber. A later authoring cycle can retain the same draft identity.
Snapshot
Retain a particular saved state of authored work. Saving again does not create another approved revision.
Draft head
Identify the draft’s current saved snapshot. Inspect its current status and validator before changing it.
Governed revision
Record content that completed approval. An open replacement draft does not replace this content.
Compilation minor
Record changed compiled output under an existing governed revision without changing its authored intent or approval attribution.
Review acknowledgement
Record an authorized acceptance of a specifically reviewable finding. Do not use it to bypass a blocking conflict.
For example, saving a corrected draft changes proposed work.
Approval creates governed content.
Automatic recompilation can then change generated output without another author edit.
Refer to states and revisions.
Identity and Request Evidence
The following table defines identity and request-evidence terms:
Term
Meaning and Boundary
Authentication token
Establish the caller’s authenticated identity through the supported gateway. Keep it secret.
Authority
Identify a permission asserted by the trusted platform. Clients must not invent identity or authority headers.
Command capability
Permit an operation, such as policy:approve. Ownership of a policy does not supply that capability.
Policy access grant
Assign owner or editor access to particular authored work. Commands can also require a separate capability.
Entity tag (ETag)
Identify an opaque server-issued resource validator. Send its exact quoted value in the required If-Match header.
Idempotency key
Identify one exact reconciliation decision for safe replay after an uncertain response. Do not reuse it for different intent or evidence.
Service user
Authenticate background integration calls. Keep this identity separate from human users and Kubernetes workload identities.
pmx_app
Name a fixed PostgreSQL NOLOGIN permission role inherited by the runtime login. It is not another account requiring a password.
Identity provider (IdP)
Supply directory or identity-source information. Shared connection metadata does not grant Policy command authority.
An application programming interface (API) request can require authentication,
a command capability, a policy grant, and a resource validator.
Each satisfies a different condition.
Refer to roles and permissions
and API authentication.
Compilation, Delivery, and Protection
The following table defines compilation, delivery, and protection terms:
Term
Meaning and Boundary
Compilation
Convert policy intent and current source context into target-specific configuration.
Artifact
Hold generated target configuration, not an editable draft or proof of active protection.
Publication
Deliver approved artifacts to the relevant integration. Verify the operation’s required completion evidence separately.
Deployment generation
Number successive publication or removal requests for a policy. Retry keeps the same generation and increases the attempt count.
Outbox
Retain queued publication or withdrawal work durably in Policy’s database. A queued event is not completed delivery.
Worker lease
Reserve queued work for a worker for a limited time. Expiry can delay reassignment after process loss.
Terminal operation
Stop ordinary automatic processing after failure. Use the permitted recovery path rather than assuming a restart retries it.
Consumer receipt
Record a matching consumer read of the artifact. Do not treat it as proof of activation, real-traffic enforcement, or every replica’s receipt.
Protection evidence
Establish the applicable target-specific result, such as current positive Data observations. Healthy services alone do not provide it.
Fail-closed recompilation
Keep the last accepted configuration when fresh inputs or validation fail. Do not automatically deny all traffic.
The following table defines ownership and recovery terms:
Term
Meaning and Boundary
Native object
Identify an object in a target product, such as Policy Workbench, rather than a Policy draft or governed revision.
Ownership binding
Connect a saved Policy reference to a native object’s unique identifier. Names and reference keys do not substitute for that identifier.
Stale validator
Describe request evidence that no longer matches the current resource. Re-read and review before deciding again.
Stale binding
Describe a saved ownership mapping whose native object may be absent. Complete inventory and blocker checks must establish cleanup safety.
Deployment retry
Resume delivery of configuration saved for a failed request, without compiling later draft edits or fresh discovery.
Ownership reconciliation
Choose which Policy Integration Manager (PIM) object Policy associates with a saved reference, using the inspection response and system-configuration permission.
Policy rollback
Start an In Review draft from a prior governed revision. Do not treat it as immediate target replacement, database recovery, or Helm rollback.
Database restore
Replay a selected backup into the in-stack database under an approved recovery plan. External target changes require separate reconciliation.
Release qualification
Confirm compatible chart, API, Panel, PostgreSQL, and storage versions, including a tested migration and restore procedure.
For recovery actions and authority requirements, use the
recovery directory.
For installation limitations, consult known issues.
10.2 - System Operations
Operate background processing, observe policy compilation and delivery, and restart Policy safely.
Policy continues work after users save, approve, or archive policies.
Background services refresh discovery, generate approved configuration, publish it, and check delivery progress.
Platform operators maintain these services. Authors and approvers decide policy content.
Choose an Operational Task
Choose the task that matches the required evidence or change:
Refer to background processing to distinguish the workers,
their effective cadence, and their stop controls.
Refer to automatic recompilation to understand fresh-input
cycles, compilation minors, unchanged output, and failed-cycle recovery.
Refer to observation and restarts to inspect process health,
metrics, operation history, and restart boundaries.
Refer to backup and restore for database recovery.
Do not restore data merely to clear a publication warning.
Follow an Incident From Evidence to Recovery
Complete the following steps:
Record the affected policy identifier, approved version, error message, and time.
Check API logs for the last recompilation outcome using observation and restarts.
If compilation succeeded but delivery stopped, inspect the policy’s latest request in Operations.
Deployment retry resends retained artifacts. It does not request recompilation.
Policy exposes no public automatic-recompilation run-now endpoint.
Do not restart the API as a forced compilation trigger.
Continue to recovery playbooks for publication
or ownership incidents, and API recovery
for authorized inspection and commands.
10.2.1 - Background Processing and Cadence
Distinguish discovery refresh, native import, recompilation, publication, and protection reconciliation.
The application programming interface (API) process owns Policy’s background services.
They are not separate Kubernetes Deployments.
Each service performs a different task. One successful worker does not prove
another worker completed its work.
Native import and publication use Policy Integration Manager (PIM).
Services and Defaults
The following table summarizes each background service, its default cadence, and its purpose:
Service
Source Default
Purpose and Boundary
Discovery catalog refresh
Use 300 seconds.
Refresh Traverse inputs. Retain the prior snapshot after failed refresh.
Native policy import
Use 60 seconds.
Import external PIM policies into the Library when PIM is configured.
Automatic recompilation
Use 300 seconds.
Compile approved intent against fresh discovery and live inventory.
Publication
Use 5 seconds.
Process durable approved publication or withdrawal work asynchronously.
Protection reconciliation
Use 30 seconds.
Evaluate current revision and deployment evidence for protection progress.
Legacy activation
Use 30 seconds.
Check older deployed records. Do not substitute for governed revision evidence.
The configuration guide explains the distinction between
chart values, process environment, and credentials.
Record effective settings for the running release rather than relying on this table.
Periodic services sleep before work and run serial cycles within each task.
Execution and dependency waits add time to the configured interval.
These intervals are not activation guarantees or service-level commitments.
The current chart requires one API replica. Do not scale it for faster processing.
Startup Import and Discovery Freshness
PIM startup import defaults to enabled independently of periodic import.
A startup import failure does not itself block API startup.
Disabling periodic import does not disable that startup attempt.
Periodic import also requires a configured PIM base address.
Import discovers existing native policies. It does not automatically adopt them
into governed publication. Resolve ownership and legacy adoption through authorized workflows.
Disabling periodic catalog refresh leaves lazy first-request loading.
A failed ordinary refresh can leave the prior snapshot available.
Automatic recompilation applies a stricter fresh-input gate:
it cannot silently compile from that retained snapshot.
Publication and Protection
Approval queues publication rather than performing every target write synchronously.
The publication worker processes bounded batches of retained events.
These events form the outbox, a database-backed queue that survives a process restart.
The worker can finish a request, schedule another attempt, or stop after failure.
A processed-event count is not a successful-publication count.
Default retry delays are 5, 15, 30, 60, and 300 seconds.
Deterministic refusals can stop earlier than transient connectivity failures.
Worker ownership leases default to 300 seconds.
A lease temporarily reserves work for one worker.
Terminal means automatic attempts have stopped, not that publication succeeded or the policy disappeared.
After process loss, reclaiming unfinished work can wait for lease expiry.
Restarting does not retry work whose automatic attempts have stopped.
Protection reconciliation evaluates revision-scoped evidence independently.
It compares observations with the current governed revision and deployment generation.
That generation distinguishes delivery operations. It is not the policy’s authored revision number.
For Data, missing, old, or incomplete observations keep Policy from reporting Enforced.
For Federated Guardrails, a matching receipt records consumer retrieval, not runtime activation.
A policy using both targets needs complete Data observations and the matching Guardrails receipt.
Refer to lifecycle and delivery.
Disablement and Stopping
A nonpositive polling interval disables the corresponding periodic service.
It does not erase durable work, withdraw native policies, or grant a manual trigger.
Stopping the API stops scheduling all its background services and interrupts user access.
It does not stop independent consumers or undo native writes.
Use the configuration workflow
for supported cadence changes.
Refer to monitoring and restarts for a controlled process change.
Do not repurpose database restore mode as an ordinary pause mechanism.
10.2.2 - Automatic Recompilation of Approved Policies
Understand periodic fresh-input compilation, preserved approvals and drafts, compilation minors, and safe recovery boundaries.
Policy’s application programming interface (API) periodically recompiles approved
policies against fresh discovery and live Policy Integration Manager (PIM) inventory.
Source changes can alter generated output without changing an author’s intent.
This background check does not replace human review or approval.
For example, fresh discovery can associate another location with an existing
classification. The same approved intent can then produce different target artifacts.
The worker validates the refreshed set before accepting compilation changes.
It does not react immediately to each discovery change event.
Scheduling and Effective Configuration
The backend setting policy_recompile_interval_seconds defaults to 300 seconds.
The environment variable POLICY_RECOMPILE_INTERVAL_SECONDS supplies that setting.
The shipped chart also defaults to 300 through this value:
Nonpositive values disable periodic recompilation.
The worker sleeps before its first cycle and between cycles.
Execution time adds to the interval. Five minutes is not a completion deadline.
Disabling scheduling preserves stored revisions and queued publication work.
It neither withdraws policies nor disables the other workers.
Check the actual release values, generated configuration, and startup message.
Do not assume source defaults match an existing installation.
Refer to observation and restarts
for nonsecret checks.
There is no public run-now endpoint for automatic recompilation.
Restarting the API is not a supported immediate-trigger mechanism.
The next process also sleeps before its periodic cycle.
Fresh Inputs and Set-Wide Validation
An eligible cycle refreshes discovery, then reads live PIM inventory.
It pins those fresh inputs for compilation and peer validation.
Pinning means using the captured inputs throughout that cycle, rather than mixing later refreshes into the same result.
It validates both individual policies and their combined generated output.
Changed source context can reveal conflicts that earlier inputs did not expose.
Failed discovery refresh does not permit recompilation from cached discovery.
Unavailable live inventory also prevents acceptance.
The catalog’s separate ability to retain an old snapshot does not relax this rule.
An apparently usable catalog can therefore coexist with blocked recompilation.
Blocking compilation, validation, or persistence failures preserve the previous
governed set. Policy does not accept a partially refreshed subset.
This preservation concerns local governed state and queued work.
It does not certify target availability or undo earlier external changes.
Here, fail-closed means refusing an unsafe replacement while retaining previous governed state.
It does not mean automatically denying all target traffic.
What Stays Unchanged
Automatic recompilation preserves:
The author’s saved intent and the approval that authorized it.
The original approval identity and decision information.
Any open replacement draft, including unfinished or in-review work.
Earlier governed revisions and their historical evidence.
System compilation history remains distinct from a person’s approval event.
The worker records its compilation action rather than impersonating an approver.
An author still needs the ordinary submission and approval workflow to change intent.
Refer to states and revisions.
Changed and Unchanged Output
Changed accepted output creates compilation minor versions under the existing
governed major revision. It also queues asynchronous publication work.
This is not a new authored major revision or a new human approval.
Unchanged output creates neither compilation minors nor publication work.
A successful cycle with no new version can therefore be normal.
Do not treat an unchanged version number as proof that the worker stopped.
Successful compilation establishes that Policy accepted refreshed artifacts.
Queued publication does not establish delivery.
Publication and consumer receipt do not independently establish actual target protection.
Continue through the delivery and lifecycle guidance
for target-specific verification.
Outcomes and Operator Interpretation
Use this table to interpret recompilation outcomes and choose an operator response:
Outcome
Meaning and Response
Complete, changed
Expect compilation minors and queued publication. Inspect subsequent delivery.
Complete, unchanged
Expect no new version or publication. Confirm a successful cycle rather than forcing an edit.
Blocked
Read the cycle’s phase and error. Ask the named integration’s administrator to resolve connection or configuration failures.
Failed cycle
Restore the named dependency or escalate the exception. Scheduling attempts another cycle later.
Superseded
Check policy history for a newer approval or archive. Policy discards the older cycle’s result automatically.
Deferred
Inspect active delivery in Operations, or ask the Policy administrator to resolve the reported legacy-policy adoption requirement.
Skipped
Check API logs for the other running cycle’s completion. Investigate if skips continue without a completed cycle.
Disabled
Confirm the effective nonpositive interval and the approved operational reason.
Concurrent governance can supersede work during compilation or persistence.
Deferred work can include active publication constraints or legacy adoption requirements.
Legacy deployments do not gain automatic governed adoption or publication.
Some safe source-preserving scope updates can proceed automatically.
Do not infer authorization for every native ownership change.
Observation and Recovery
An operator should collect the following evidence before changing configuration:
Effective interval, process start time, and recent cycle timestamps.
Policy count, failed-policy count, completion flag, and diagnostic phase.
Superseded or deferred indicators and any returned reason.
Current governed revision, compilation minor, and relevant open draft.
Dependency availability, request identifiers, and later deployment generation.
The API logs an Approved policy recompilation summary for owned cycles.
Inspect structured log fields where your logging platform retains them.
Metrics count cycle outcomes. API logs provide the phase and reason.
A blocked metric can represent blocked, superseded, or deferred work.
Read the logged reason before changing a setting or retrying publication.
For a transient dependency failure, restore access and observe a later scheduled cycle.
Do not substitute cached inventory or reduce the interval to bypass validation.
For missing policy inputs or conflicts, ask the policy author and reviewer to correct and approve the proposed change.
For legacy adoption or missing PIM mappings, ask the Policy administrator to follow ownership recovery.
Do not edit database records, erase checkpoints, or manufacture approval evidence.
Publication retry sends the configuration saved for that delivery request.
It does not incorporate corrected drafts or fresh discovery.
The reviewer’s validation request checks a saved draft. It does not start automatic recompilation.
Inspect effective scheduling, health, metrics, and operation history before a controlled restart.
Use this task as the platform operator during routine checks or incidents.
These diagnostic checks are not installation steps.
Read the error before restarting.
Restarting does not correct policy fields or missing Policy Integration Manager (PIM) object mappings.
The application programming interface (API) process also owns background scheduling.
Prerequisites
Prepare the following:
Set CTX to the intended Kubernetes context.
Obtain workload-read access for logs, events, and configuration references.
Obtain policy:observability for metrics and policy:audit for restricted operation evidence.
Obtain separate deployment authority only when a restart requires it.
Obtain your platform hostname, trusted certificate authority (CA) bundle, and current access token.
Configure API Access
Complete the credential-safe request setup
with your own user token in a dedicated Bash session.
Then set the deployment endpoint and trusted CA file in that same shell:
Use the configured API root if your platform overrides the default.
All requests use the protected POLICY_AUTH_HEADER file from the shared setup.
Do not include token values in logs or support records.
Follow credential cleanup
when you finish.
Neither audit access nor a support reference grants recovery mutation authority.
Do not grant policy_admin merely to collect evidence.
Use the permission reference.
Inspect Effective Scheduling
Complete the following steps:
Read the release’s nonsecret values.
helm --kube-context "$CTX" --namespace pty-policy get values policy
Keep credentials out of the evidence record.
Review approved image identities alongside these values.
The default chart produces 300. A nonpositive value disables scheduling.
Use the configured name if your release changes apiService.containerName.
Verify the deployment binds POLICY_RECOMPILE_INTERVAL_SECONDS to that key.
Inspect only the relevant nonsecret section of the workload specification.
A value elsewhere in a file does not establish the running process’s configuration.
Look for the startup interval message and subsequent cycle summaries.
Retain timestamps, diagnostic phases, and superseded or deferred reasons.
Redact sensitive details before sharing logs.
Source defaults and generated configuration can differ from a process that has
not restarted after a change. Do not print the full process environment.
For supported deployment settings, refer to configuration.
Liveness returns Hypertext Transfer Protocol (HTTP) 204 for a responding process.
Readiness returns empty 204, or 503 when a startup prerequisite fails.
Health and version return JavaScript Object Notation (JSON) responses.
Structured health can report lifecycle degradation with HTTP 200.
A 401 requires valid authentication. A 403 requires the appropriate permissions.
Expect Prometheus text, not JavaScript Object Notation (JSON).
The outbox is the durable queue of publication and withdrawal events.
Terminal work has stopped automatic attempts. An operator must investigate before selecting recovery.
The following metrics help distinguish stalled work:
Metric
Interpretation
pmx_policy_recompilation_total
Count cycle outcomes as complete, blocked, skipped, or error.
Record the current process’s last successful cycle time.
pmx_policy_outbox_pending
Count retained pending publication or withdrawal work.
pmx_policy_outbox_oldest_age_seconds
Measure age since the oldest pending event’s creation.
pmx_policy_outbox_terminal
Count retained terminal work requiring investigation.
Recompilation counters and last-success metrics reset with the process.
Skipped cycles do not replace the last owned result.
Repository-backed queue gauges refresh on scrape.
Inspect affected policies through permitted history and operation reads.
Use the recovery API guide.
Record revision, deployment generation, attempts, diagnostics, and replacement information.
Use the error message to select recompilation troubleshooting or publication recovery.
Send connection failures to the named integration’s administrator and policy conflicts to the policy author and reviewer.
Do not infer protection from healthy services, an empty queue, or a successful cycle.
Verify target-specific evidence and actual target behavior independently.
Refer to automatic recompilation outcomes
to distinguish unchanged, blocked, superseded, and deferred work.
Restart Under Change Control
Complete the following steps:
Capture current logs, metrics, deployment generations, and pending work.
If a PIM request lost its response, ask the PIM administrator to check whether the change completed before restarting.
Confirm the restart uses the same approved image and database schema.
Restart the default API Deployment during the approved outage window.
Expect service interruption with the single-instance deployment.
This restarts all process-owned background services.
Wait for rollout completion.
kubectl --context "$CTX" --namespace pty-policy rollout status \
deployment/policy-api --timeout=5m
If startup waits or fails, inspect schema checks, credentials, and events.
Do not weaken readiness or runtime privileges to bypass the failure.
Repeat authenticated verification and inspect later worker cycles.
Check that pending operations resume after existing worker leases expire.
Use publication recovery for operations that stopped after failure.
Normal shutdown waits for active recompilation and publication work.
The chart’s termination grace period is 30 seconds.
Long external calls can exceed it. Shutdown does not guarantee every write drained.
Preserve uncertain-write evidence and follow recovery.
For an approved extended stop, use your deployment-management pause procedure.
Confirm no controller or Helm reconciliation will restart the API unexpectedly.
Do not delete credentials, claims, or database rows to stop processing.
On resumption, recheck external state and retained work before declaring recovery.
Frequently asked questions about Policy deployment, policy workflows, and operational behavior.
These answers cover the application programming interface (API), governance, delivery, and administration.
For terms such as draft head, compilation minor, and native binding, use the
glossary.
Where Is the Policy API Exposed?
Use the gateway base configured for your installed release.
Find the route and discovery links in the API guide.
Do not assume the API base from the documentation URL.
Can Different People Submit and Approve?
Yes. The author and reviewer can use different authenticated accounts.
Each needs the capabilities for the operation they perform.
Policy ownership alone does not grant approval authority.
Refer to roles and permissions.
Does Approval Mean Data Protection Is Active?
No. Approval commits a governed revision and queues asynchronous delivery.
Publication and target-specific evidence require separate verification.
Refer to states and revisions.
Can a Draft Change the Current Governed Policy?
Saving proposed work does not replace the governed revision.
The replacement must complete its own review and approval.
Refer to lifecycle and governance.
Why Did a Compilation Minor Appear Without Another Approval?
Automatic recompilation can generate changed output from already approved intent.
It preserves approval identity and leaves open drafts unchanged.
Refer to automatic recompilation.
Does Retry Compile My Corrected Draft?
No. Deployment retry continues retained work for the existing generation.
Corrected authored input requires the applicable save, submission, and approval workflow.
Refer to recovery playbooks.
Can I Inspect Diagnostics With Only a Support Reference?
No. Restricted diagnostics also require audit authority.
An author can collect safe error context and ask an authorized operator for help.
Refer to diagnostics.
Does Policy Require PostgreSQL?
Yes. PostgreSQL runs inside the deployed Policy stack.
Back up retained state before consequential recovery or removal.
Refer to Installation.
Is pmx_app Another Account That I Must Create?
No. pmx_app is a fixed PostgreSQL permission role, not a login account.
Database startup creates it with NOLOGIN and grants membership to the configured runtime login.
Bootstrap applies the restricted application grants.
It has no password or credential Secret, and backup must not inherit it.
Refer to database accounts.
Distinguish process liveness, readiness, dependency checks, and completed delivery.
A healthy service does not prove that a particular policy protects its targets.
Refer to installation verification
and System operations.
How Is Authentication Handled?
Use the platform’s supported sign-in or gateway authentication path.
Do not impersonate forwarded identities or share another user’s credentials.
Refer to API authentication.
How Do I Remove Policy Completely?
Decide retention and downstream withdrawal requirements before uninstalling.
Removing a release does not itself prove downstream deprotection.
Refer to Uninstallation.