Policy Engine API Reference
| Field | Value |
|---|---|
| Source spec | policy-engine/openapi/v1.json |
| OpenAPI version | 3.1.1 |
| API version | 1.0.0 |
| Operations | 274 |
| Path filter | All paths |
Operations
GET /
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | StellaOps.Policy.Engine |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /.well-known/risk-profile-schema
Get the JSON Schema for risk profile definitions.
Serve the canonical JSON Schema for risk profile documents at the well-known discovery URL, including ETag and cache-control headers for efficient polling. Returns 304 Not Modified when the schema version matches the client’s cached ETag.
| Property | Value |
|---|---|
| Operation ID | GetRiskProfileSchema |
| Tags | Schema Discovery |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/schema+json |
304 | Not Modified | - |
GET /api/cvss/policies
List available CVSS policies configured on this host.
List all CVSS scoring policies registered on this host, including their identifiers, algorithm configurations, and deterministic hash values, enabling clients to select the appropriate policy when creating CVSS receipts.
| Property | Value |
|---|---|
| Operation ID | ListCvssPolicies |
| Tags | CVSS Receipts |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/cvss/receipts
Create a CVSS v4.0 receipt with deterministic hashing and optional DSSE attestation.
Create a CVSS v4.0 score receipt for a vulnerability, computing a deterministic hash over the base, threat, environmental, and supplemental metrics using the specified scoring policy. Optionally wraps the receipt in a DSSE attestation envelope if a signing key is provided.
| Property | Value |
|---|---|
| Operation ID | CreateCvssReceipt |
| Tags | CVSS Receipts |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
201 | Created | application/json |
GET /api/cvss/receipts/{receiptId}
Retrieve a CVSS v4.0 receipt by ID.
Retrieve a stored CVSS v4.0 score receipt by its identifier, returning the full metric values, computed score vector, deterministic hash, and DSSE attestation envelope if present.
| Property | Value |
|---|---|
| Operation ID | GetCvssReceipt |
| Tags | CVSS Receipts |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
receiptId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
PUT /api/cvss/receipts/{receiptId}/amend
Append an amendment entry to a CVSS receipt history and optionally re-sign.
Append an immutable amendment record to a CVSS receipt’s history, recording the changed field, previous and new values, reason, and optional reference URI. Optionally re-signs the updated receipt with a new DSSE envelope to chain attestation integrity.
| Property | Value |
|---|---|
| Operation ID | AmendCvssReceipt |
| Tags | CVSS Receipts |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
receiptId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/cvss/receipts/{receiptId}/history
Return the ordered amendment history for a CVSS receipt.
Retrieve the chronologically ordered amendment history for a CVSS score receipt, listing each recorded field change with actor, timestamp, reason, and reference URI for audit and compliance review.
| Property | Value |
|---|---|
| Operation ID | GetCvssReceiptHistory |
| Tags | CVSS Receipts |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
receiptId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/policy/compliance/cra/technical-documentation/provenance/{tenantId}
Get the latest tenant CRA technical-documentation export provenance.
Returns the latest Policy-owned CRA technical-documentation provenance projection for the authenticated tenant. Missing rows return status missing; rows whose fields all lack sourceRef return status unprovenanced.
| Property | Value |
|---|---|
| Operation ID | Policy.CraTechnicalDocumentationProvenance.GetLatest |
| Tags | CRA Technical Documentation Provenance |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
tenantId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/policy/compliance/cra/technical-documentation/provenance/{tenantId}
Store a tenant CRA technical-documentation export provenance projection.
Stores the Policy-owned projection supplied by the CRA export workflow. The endpoint preserves null provenance values and does not derive values from unrelated Policy exports.
| Property | Value |
|---|---|
| Operation ID | Policy.CraTechnicalDocumentationProvenance.Save |
| Tags | CRA Technical Documentation Provenance |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
tenantId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/policy/conflicts
List open policy conflicts sorted by severity.
List all open policy rule conflicts for the authenticated tenant, sorted by severity. Conflicts arise when two or more policy rules produce contradictory verdicts for the same advisory or component scope. Supports pagination via limit and offset parameters.
| Property | Value |
|---|---|
| Operation ID | ListOpenPolicyConflicts |
| Tags | Policy Conflicts |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
limit | query | yes | |
offset | query | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/policy/conflicts
Report a new policy conflict.
Report a newly detected policy rule conflict, recording the conflicting rule identifiers, conflict type, severity, affected scope, and a human-readable description. The conflict is created in open status and queued for resolution or dismissal.
| Property | Value |
|---|---|
| Operation ID | CreatePolicyConflict |
| Tags | Policy Conflicts |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
201 | Created | application/json |
GET /api/policy/conflicts/by-type/{conflictType}
Get conflicts filtered by type.
Retrieve policy conflicts filtered to a specific conflict type (e.g., severity-mismatch, applicability-overlap), with optional status filtering and pagination. Used by the conflict management console to focus on a specific category of rule contradictions.
| Property | Value |
|---|---|
| Operation ID | GetPolicyConflictsByType |
| Tags | Policy Conflicts |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
conflictType | path | yes | |
limit | query | yes | |
status | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/policy/conflicts/stats/by-severity
Get open conflict counts grouped by severity.
Retrieve a count of currently open policy conflicts grouped by severity level for the authenticated tenant. Used by compliance dashboards to render conflict health indicators and track remediation progress.
| Property | Value |
|---|---|
| Operation ID | GetPolicyConflictStatsBySeverity |
| Tags | Policy Conflicts |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/policy/conflicts/{conflictId}
Get a specific policy conflict by ID.
Retrieve the full record of a specific policy conflict by its UUID, including the conflicting rule identifiers, affected scope, severity, status, and description explaining the nature of the contradiction.
| Property | Value |
|---|---|
| Operation ID | GetPolicyConflict |
| Tags | Policy Conflicts |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
conflictId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/policy/conflicts/{conflictId}:dismiss
Dismiss an open conflict without resolution.
Dismiss an open policy conflict without providing a resolution, recording the dismissing actor. Dismissed conflicts are closed without a resolution record and excluded from open conflict counts.
| Property | Value |
|---|---|
| Operation ID | DismissPolicyConflict |
| Tags | Policy Conflicts |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
conflictId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/policy/conflicts/{conflictId}:resolve
Resolve an open conflict with a resolution description.
Mark an open policy conflict as resolved by providing a resolution description explaining how the contradiction was addressed, recording the resolving actor. Only conflicts in open status can be resolved.
| Property | Value |
|---|---|
| Operation ID | ResolvePolicyConflict |
| Tags | Policy Conflicts |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
conflictId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/policy/control-register/frameworks/{frameworkId}
List a tenant-scoped Assurance control register by framework id.
Returns a framework-aware Assurance control-register projection. NIS2 is currently served as the first adapter over Policy-owned control-register rows; unknown frameworks fail closed.
| Property | Value |
|---|---|
| Operation ID | Policy.AssuranceControlRegister.List |
| Tags | NIS2 Control Register |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
frameworkId | path | yes | |
asOfDate | query | no | |
cursor | query | no | |
evidenceMode | query | no | |
limit | query | no | |
responsibleRole | query | no | |
reviewStatus | query | no | |
tenantId | query | no | |
thematicArea | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/policy/control-register/nis2
List the tenant-scoped NIS2 control register.
Returns Policy-owned NIS2 control-register mappings for the resolved tenant, including thirteen thematic area summaries, responsible roles, review status, evidence references, tenant override references, lifecycle event ids, and deterministic cursor pagination.
| Property | Value |
|---|---|
| Operation ID | Policy.Nis2ControlRegister.List |
| Tags | NIS2 Control Register |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
asOfDate | query | no | |
cursor | query | no | |
evidenceMode | query | no | |
limit | query | no | |
responsibleRole | query | no | |
reviewStatus | query | no | |
tenantId | query | no | |
thematicArea | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/policy/deltas/compute
Compute a security state delta between a baseline snapshot and a target snapshot for a given artifact digest. Selects the baseline automatically using the configured strategy (last-approved, previous-build, production-deployed, or branch-base) unless an explicit baseline snapshot ID is provided. Returns a delta summary and driver count for downstream evaluation.
| Property | Value |
|---|---|
| Operation ID | ComputeDelta |
| Tags | Deltas |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/policy/deltas/{deltaId}
Retrieve a previously computed security state delta by its ID from the in-memory cache. Deltas are retained for 30 minutes after computation. Returns the full driver list, baseline and target snapshot IDs, and risk summary.
| Property | Value |
|---|---|
| Operation ID | GetDelta |
| Tags | Deltas |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
deltaId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/policy/deltas/{deltaId}/attestation
Retrieve a signed attestation envelope for a delta verdict, combining the security state delta with its evaluated verdict and producing a cryptographically signed in-toto statement. Requires that the delta has been evaluated via POST /{deltaId}/evaluate before an attestation can be generated.
| Property | Value |
|---|---|
| Operation ID | GetDeltaAttestation |
| Tags | Deltas |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
deltaId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/policy/deltas/{deltaId}/evaluate
Evaluate a previously computed delta and produce a gate verdict. Classifies each driver as blocking or advisory based on severity and type (new-reachable-cve, lost-vex-coverage, new-policy-violation), applies any supplied exception IDs, and returns a recommended gate action with risk points and remediation recommendations.
| Property | Value |
|---|---|
| Operation ID | EvaluateDelta |
| Tags | Deltas |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
deltaId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/policy/exceptions
List policy exceptions with optional filtering by status, type, vulnerability ID, PURL pattern, environment, or owner. Returns paginated results including per-item status, scope, and lifecycle timestamps for exception management dashboards and compliance reporting.
| Property | Value |
|---|---|
| Operation ID | ListExceptions |
| Tags | Exceptions |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
environment | query | no | |
limit | query | no | |
offset | query | no | |
ownerId | query | no | |
purlPattern | query | no | |
status | query | no | |
type | query | no | |
vulnerabilityId | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/policy/exceptions
Create a new policy exception in the proposed state. Validates that the expiry is in the future and does not exceed one year, captures the requesting actor from the authenticated identity, and records the scope (artifact digest, PURL pattern, vulnerability ID, or policy rule), reason code, rationale, and compensating controls.
| Property | Value |
|---|---|
| Operation ID | CreateException |
| Tags | Exceptions |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/policy/exceptions/counts
Return aggregate counts of exceptions by lifecycle status (proposed, approved, active, expired, revoked) plus an expiring-soon indicator. Used by governance dashboards to give operators a quick view of the exception portfolio health without fetching the full list.
| Property | Value |
|---|---|
| Operation ID | GetExceptionCounts |
| Tags | Exceptions |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/policy/exceptions/expiring
List active exceptions that will expire within the specified number of days (default 7). Used by notification and alerting workflows to proactively alert owners before exceptions lapse and cause unexpected policy failures.
| Property | Value |
|---|---|
| Operation ID | GetExpiringExceptions |
| Tags | Exceptions |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
days | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/policy/exceptions/{id}
Retrieve the full details of a single exception by its identifier, including scope, rationale, evidence references, compensating controls, and lifecycle timestamps.
| Property | Value |
|---|---|
| Operation ID | GetException |
| Tags | Exceptions |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
id | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
PUT /api/policy/exceptions/{id}
Update the mutable fields of an existing exception (rationale, evidence references, compensating controls, ticket reference, and metadata). Cannot update expired or revoked exceptions. Version is incremented and the updated-at timestamp is refreshed on every successful update.
| Property | Value |
|---|---|
| Operation ID | UpdateException |
| Tags | Exceptions |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
id | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
DELETE /api/policy/exceptions/{id}
Revoke an exception before its natural expiry, recording an optional revocation reason and transitioning the exception to the revoked terminal state. Cannot revoke exceptions that are already expired or revoked.
| Property | Value |
|---|---|
| Operation ID | RevokeException |
| Tags | Exceptions |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
id | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/policy/exceptions/{id}/activate
Transition an approved exception to the active state, making it eligible for use in policy evaluation. Only exceptions in the approved state may be activated.
| Property | Value |
|---|---|
| Operation ID | ActivateException |
| Tags | Exceptions |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
id | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/policy/exceptions/{id}/approve
Approve a proposed exception and transition it to the approved state. Enforces separation-of-duty by rejecting self-approval (approver must differ from the requester). Multiple approvers may be recorded before the exception is activated.
| Property | Value |
|---|---|
| Operation ID | ApproveException |
| Tags | Exceptions |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
id | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/policy/exceptions/{id}/extend
Extend the expiry date of an active exception. The new expiry must be later than the current expiry. Used when a scheduled fix or mitigation requires additional time beyond the original exception window.
| Property | Value |
|---|---|
| Operation ID | ExtendException |
| Tags | Exceptions |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
id | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/policy/exceptions/{id}/history
Retrieve the ordered audit history of an exception, including every status transition, the actor who performed each action, and descriptive event entries. Supports compliance reviews and traceability of the full exception lifecycle from proposal through resolution.
| Property | Value |
|---|---|
| Operation ID | GetExceptionHistory |
| Tags | Exceptions |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
id | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/policy/packs
List policy packs for the current tenant.
List all policy pack containers for the authenticated tenant, returning summaries of each pack including available revision versions and their current activation status.
| Property | Value |
|---|---|
| Operation ID | ListPolicyPacks |
| Tags | Policy Packs |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/policy/packs
Create a new policy pack container.
Create a new policy pack container with an optional display name, establishing the versioned identity under which subsequent policy revisions and compiled bundles will be registered.
| Property | Value |
|---|---|
| Operation ID | CreatePolicyPack |
| Tags | Policy Packs |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
201 | Created | application/json |
POST /api/policy/packs/{packId}/revisions
Create or update policy revision metadata.
Create or upsert a policy revision entry under a given pack, setting initial status (Draft or Approved) and two-person approval requirements that govern the activation workflow for that revision.
| Property | Value |
|---|---|
| Operation ID | CreatePolicyRevision |
| Tags | Policy Packs |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
packId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
201 | Created | application/json |
POST /api/policy/packs/{packId}/revisions/{version}/bundle
Compile and sign a policy revision bundle for distribution.
Compile a policy DSL source attached to a revision into a signed, immutable bundle ready for distribution and evaluation. Returns the bundle digest and compilation statistics; fails fast if the DSL contains syntax errors or rule conflicts.
| Property | Value |
|---|---|
| Operation ID | CreatePolicyBundle |
| Tags | Policy Packs |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
packId | path | yes | |
version | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
201 | Created | application/json |
POST /api/policy/packs/{packId}/revisions/{version}/evaluate
Evaluate a policy revision deterministically with in-memory caching.
Evaluate a compiled policy revision bundle against a provided advisory/VEX/SBOM context, returning a deterministic verdict with per-rule outcomes. Results are cached in-memory for subsequent identical evaluations to reduce compute overhead during iterative authoring.
Evaluation evidence matches[] includes matchClass: denylist for presence-based CVE-id rule citations and reachability for callability-backed citations once the reachability evaluator path is wired.
| Property | Value |
|---|---|
| Operation ID | EvaluatePolicyRevision |
| Tags | Policy Packs |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
packId | path | yes | |
version | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/policy/packs/{packId}/revisions/{version}:activate
Activate an approved policy revision, enforcing two-person approval when required.
Promote an approved policy revision to active status, recording the activating actor and enforcing two-person approval workflows when configured. Returns 202 Accepted when a second approval is still pending, or 200 OK when the revision is fully activated.
| Property | Value |
|---|---|
| Operation ID | ActivatePolicyRevision |
| Tags | Policy Packs |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
packId | path | yes | |
version | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
202 | Accepted | application/json |
POST /api/policy/policies/{policyId}/versions/{version}:compile
Compile and lint a policy DSL document.
Compiles a stella-dsl@1 policy document and returns deterministic digest and statistics.
| Property | Value |
|---|---|
| Operation ID | CompilePolicy |
| Tags | PolicyCompilationEndpoints |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
policyId | path | yes | |
version | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/policy/quota
| Property | Value |
|---|---|
| Operation ID | PolicyQuota.Get |
| Tags | Policy Quota |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/policy/snapshots
List policy evaluation snapshots for the specified tenant, returning snapshot identifiers, creation timestamps, and summary component counts for use in batch evaluation workflows. Supports cursor-based pagination.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.Api.Snapshots.List |
| Tags | Policy Snapshots |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
tenant_id | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/policy/snapshots
Create a new policy evaluation snapshot from a component manifest, capturing PURL set, advisory signals, and applicable policy bundles at a point in time for subsequent policy decision evaluation.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.Api.Snapshots.Create |
| Tags | Policy Snapshots |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/policy/snapshots/{snapshotId}
Retrieve a specific policy evaluation snapshot by identifier, including its full component graph, resolved advisory signals, and any cached partial evaluation state.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.Api.Snapshots.Get |
| Tags | Policy Snapshots |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
snapshotId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/policy/violations
List policy violations with optional filters.
List persisted policy violation events for the authenticated tenant, with optional filtering by policy ID, severity level, and occurrence timestamp. Defaults to returning critical violations when no filter is specified. Supports pagination via limit and offset parameters.
| Property | Value |
|---|---|
| Operation ID | ListPolicyViolations |
| Tags | Policy Violations |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
limit | query | yes | |
offset | query | yes | |
policyId | query | no | |
severity | query | no | |
since | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/policy/violations
Append a new policy violation event (immutable).
Append a single immutable policy violation event to the append-only audit log, recording the triggering policy, rule, severity, subject identifier, and occurrence timestamp. Violation records cannot be modified or deleted after creation.
| Property | Value |
|---|---|
| Operation ID | AppendPolicyViolation |
| Tags | Policy Violations |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
201 | Created | application/json |
POST /api/policy/violations/batch
Append multiple policy violation events in a batch.
Atomically append a batch of immutable policy violation events to the audit log in a single request, reducing per-event overhead during high-throughput evaluation runs. Returns the count of successfully appended records.
| Property | Value |
|---|---|
| Operation ID | AppendPolicyViolationBatch |
| Tags | Policy Violations |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
201 | Created | application/json |
GET /api/policy/violations/by-policy/{policyId}
Get violations for a specific policy.
Retrieve all policy violation events associated with a specific policy UUID, supporting optional time-range filtering and offset-based pagination for audit trail review of a single policy’s violation history.
| Property | Value |
|---|---|
| Operation ID | GetPolicyViolationsByPolicy |
| Tags | Policy Violations |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
policyId | path | yes | |
limit | query | yes | |
offset | query | yes | |
since | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/policy/violations/by-purl/{purl}
Get violations for a specific package (by PURL).
Retrieve all policy violation events for a specific package identified by its URL-encoded Package URL (PURL), enabling component-centric compliance queries and remediation tracking across all policies that flagged the component.
| Property | Value |
|---|---|
| Operation ID | GetPolicyViolationsByPurl |
| Tags | Policy Violations |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
purl | path | yes | |
limit | query | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/policy/violations/by-severity/{severity}
Get violations filtered by severity level.
Retrieve policy violation events filtered to a specific severity level (critical, high, medium, low), optionally bounded by a start timestamp, enabling targeted monitoring dashboards and severity-specific alert pipelines.
| Property | Value |
|---|---|
| Operation ID | GetPolicyViolationsBySeverity |
| Tags | Policy Violations |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
severity | path | yes | |
limit | query | yes | |
since | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/policy/violations/stats/by-severity
Get violation counts grouped by severity.
Compute aggregated violation counts grouped by severity level (critical, high, medium, low, none) for a specified time window. Used by compliance dashboards to render severity distribution charts and trend indicators.
| Property | Value |
|---|---|
| Operation ID | GetPolicyViolationStatsBySeverity |
| Tags | Policy Violations |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
since | query | yes | |
until | query | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/policy/violations/{violationId}
Get a specific policy violation by ID.
Retrieve the full immutable record of a specific policy violation event by its UUID, including the triggering rule, severity, subject PURL or CVE, details payload, and occurrence timestamp.
| Property | Value |
|---|---|
| Operation ID | GetPolicyViolation |
| Tags | Policy Violations |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
violationId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/risk/events
Get recent profile lifecycle events.
Retrieve the most recent risk profile lifecycle events across all profiles, ordered by descending timestamp, up to the specified limit. Events include profile creation, activation, deprecation, archival, and override changes.
| Property | Value |
|---|---|
| Operation ID | GetRecentProfileEvents |
| Tags | Profile Events |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
limit | query | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/risk/events/filter
Get profile events with optional filtering.
Retrieve risk profile lifecycle events filtered by event type, profile ID, and a start timestamp, enabling targeted event streams for monitoring pipelines and compliance queries that need only a subset of event types.
| Property | Value |
|---|---|
| Operation ID | GetFilteredProfileEvents |
| Tags | Profile Events |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
eventType | query | no | |
limit | query | yes | |
profileId | query | no | |
since | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/risk/events/subscribe
Subscribe to profile lifecycle events.
Create a named subscription to one or more profile lifecycle event types, optionally filtered by profile ID. Subscriptions can optionally specify a webhook URL for push delivery; otherwise, events are accumulated for polling via the poll endpoint.
| Property | Value |
|---|---|
| Operation ID | CreateEventSubscription |
| Tags | Profile Events |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
201 | Created | application/json |
DELETE /api/risk/events/subscribe/{subscriptionId}
Unsubscribe from profile lifecycle events.
Remove a profile lifecycle event subscription by its identifier, stopping future event delivery and releasing any buffered events associated with the subscription.
| Property | Value |
|---|---|
| Operation ID | DeleteEventSubscription |
| Tags | Profile Events |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
subscriptionId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
204 | No Content | - |
GET /api/risk/events/subscribe/{subscriptionId}/poll
Poll for events from a subscription.
Poll a profile lifecycle event subscription for accumulated events since the last poll, returning up to the specified limit. Returns an empty list if no new events are available; the subscription state is not modified by polling.
| Property | Value |
|---|---|
| Operation ID | PollEventSubscription |
| Tags | Profile Events |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
subscriptionId | path | yes | |
limit | query | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/risk/overrides
Create a new override with audit metadata.
Create a risk profile override to alter severity, action, or signal values for a specific advisory or component pattern, recording the rationale, author, and expiry for the audit log. Automatically validates for conflicts with existing overrides before persisting.
| Property | Value |
|---|---|
| Operation ID | CreateOverride |
| Tags | Risk Overrides |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
201 | Created | application/json |
GET /api/risk/overrides/profile/{profileId}
List all overrides for a risk profile.
List all overrides registered for a specific risk profile, optionally including inactive overrides. Returns each override’s type, target, value, approval status, and audit metadata for management and review.
| Property | Value |
|---|---|
| Operation ID | ListProfileOverrides |
| Tags | Risk Overrides |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
profileId | path | yes | |
includeInactive | query | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/risk/overrides/validate
Validate an override for conflicts before creating.
Validate a proposed override definition against existing overrides to detect conflicts, returning conflict descriptions and advisory warnings. Call this before creating an override to surface issues without committing the override.
| Property | Value |
|---|---|
| Operation ID | ValidateOverride |
| Tags | Risk Overrides |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/risk/overrides/{overrideId}
Get an override by ID.
Retrieve the full definition of a risk override by its identifier, including the override type, target pattern, value, approval status, author, and audit trail metadata.
| Property | Value |
|---|---|
| Operation ID | GetOverride |
| Tags | Risk Overrides |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
overrideId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
DELETE /api/risk/overrides/{overrideId}
Delete an override.
Permanently remove a risk override by its identifier. The override will no longer be applied in subsequent evaluations for the affected risk profile.
| Property | Value |
|---|---|
| Operation ID | DeleteOverride |
| Tags | Risk Overrides |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
overrideId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
204 | No Content | - |
GET /api/risk/overrides/{overrideId}/history
Get application history for an override.
Retrieve the chronological application history for a specific override, showing each time the override was applied during an evaluation run, the matching finding, and the resulting value change.
| Property | Value |
|---|---|
| Operation ID | GetOverrideHistory |
| Tags | Risk Overrides |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
overrideId | path | yes | |
limit | query | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/risk/overrides/{overrideId}:approve
Approve an override that requires review.
Approve a pending override that was created with a review requirement, recording the approving actor and transitioning the override to active status. Fails if the override has already been approved by the same actor or is not in a pending state.
| Property | Value |
|---|---|
| Operation ID | ApproveOverride |
| Tags | Risk Overrides |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
overrideId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/risk/overrides/{overrideId}:disable
Disable an active override.
Disable an active override without deleting it, recording the disabling actor and an optional reason. Disabled overrides are preserved in the audit log and can be queried by history endpoints but are excluded from active evaluations.
| Property | Value |
|---|---|
| Operation ID | DisableOverride |
| Tags | Risk Overrides |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
overrideId | path | yes | |
reason | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/risk/profiles
List all available risk profiles.
List all registered risk profiles for the current tenant, returning each profile’s identifier, current version, and description. Used by the policy console and advisory pipeline to discover which profiles are available for evaluation binding.
| Property | Value |
|---|---|
| Operation ID | ListRiskProfiles |
| Tags | Risk Profiles |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/risk/profiles
Create a new risk profile version in draft status.
Register a new risk profile version in Draft lifecycle status, recording the authoring actor and creation timestamp. The profile must be activated before it can be used in live policy evaluations.
| Property | Value |
|---|---|
| Operation ID | CreateRiskProfile |
| Tags | Risk Profiles |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
201 | Created | application/json |
POST /api/risk/profiles/compare
Compare two risk profile versions and list differences.
Compute a structured diff between two risk profile versions, listing added, removed, and modified signal weights and override rules. Used by policy authors to validate the impact of profile changes before promoting to active.
| Property | Value |
|---|---|
| Operation ID | CompareRiskProfiles |
| Tags | Risk Profiles |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/risk/profiles/export
Export risk profiles as a signed bundle.
Export one or more risk profiles into a cryptographically signed bundle suitable for distribution across air-gap boundaries or cross-environment synchronization. Returns the full bundle structure including the content hash and signing metadata.
| Property | Value |
|---|---|
| Operation ID | ExportProfiles |
| Tags | Profile Export/Import |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/risk/profiles/export/download
Export and download risk profiles as a JSON file.
Export one or more risk profiles into a signed bundle and return it as a downloadable JSON file attachment, enabling operators to transfer profiles to disconnected environments without API client tooling.
| Property | Value |
|---|---|
| Operation ID | DownloadProfileBundle |
| Tags | Profile Export/Import |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/risk/profiles/import
Import risk profiles from a signed bundle.
Import risk profiles from a previously exported signed bundle, verifying the bundle signature and registering each included profile in the local store. Replaces existing profiles with matching IDs if permitted by the import options.
| Property | Value |
|---|---|
| Operation ID | ImportProfiles |
| Tags | Profile Export/Import |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/risk/profiles/verify
Verify the signature of a profile bundle without importing.
Verify the cryptographic signature and content hash of a risk profile bundle without importing any profiles, allowing operators to validate bundle integrity before committing to an import operation.
| Property | Value |
|---|---|
| Operation ID | VerifyProfileBundle |
| Tags | Profile Export/Import |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/risk/profiles/{profileId}
Get a risk profile by ID.
Retrieve the full definition of a risk profile by identifier, including signal weights, severity override rules, and the deterministic profile hash used for reproducible evaluation runs.
| Property | Value |
|---|---|
| Operation ID | GetRiskProfile |
| Tags | Risk Profiles |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
profileId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/risk/profiles/{profileId}/events
Get lifecycle events for a risk profile.
Retrieve the ordered lifecycle event log for a risk profile, including creation, activation, deprecation, and archival events with actor and timestamp information, supporting compliance reporting and change history review.
| Property | Value |
|---|---|
| Operation ID | GetRiskProfileEvents |
| Tags | Risk Profiles |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
profileId | path | yes | |
limit | query | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/risk/profiles/{profileId}/hash
Get the deterministic hash of a risk profile.
Compute and return the deterministic hash of a risk profile, optionally restricted to content-only hashing (excluding metadata). Used to verify profile identity across environments and ensure reproducible evaluation inputs.
| Property | Value |
|---|---|
| Operation ID | GetRiskProfileHash |
| Tags | Risk Profiles |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
profileId | path | yes | |
contentOnly | query | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/risk/profiles/{profileId}/metadata
Export risk profile metadata for notification enrichment (POLICY-RISK-40-002).
Export a compact metadata summary of a risk profile including signal names, severity thresholds, active version info, and custom metadata fields. Used by the notification enrichment pipeline to annotate policy-triggered alerts with human-readable risk context.
| Property | Value |
|---|---|
| Operation ID | GetRiskProfileMetadata |
| Tags | Risk Profiles |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
profileId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/risk/profiles/{profileId}/versions
List all versions of a risk profile.
List the full version history of a risk profile, including lifecycle status (Draft, Active, Deprecated, Archived), activation timestamps, and actor identities for each version, supporting compliance audit trails.
| Property | Value |
|---|---|
| Operation ID | ListRiskProfileVersions |
| Tags | Risk Profiles |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
profileId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/risk/profiles/{profileId}/versions/{version}
Get a specific version of a risk profile.
Retrieve the complete definition and lifecycle metadata for a specific versioned risk profile, including its deterministic hash and version info record, enabling exact-version lookups during policy replay and audit verification.
| Property | Value |
|---|---|
| Operation ID | GetRiskProfileVersion |
| Tags | Risk Profiles |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
profileId | path | yes | |
version | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/risk/profiles/{profileId}/versions/{version}:activate
Activate a draft risk profile, making it available for use.
Transition a Draft risk profile version to Active status, making it available for binding to policy evaluation runs. Records the activating actor and timestamps the transition for the lifecycle audit log.
| Property | Value |
|---|---|
| Operation ID | ActivateRiskProfile |
| Tags | Risk Profiles |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
profileId | path | yes | |
version | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/risk/profiles/{profileId}/versions/{version}:archive
Archive a risk profile, removing it from active use.
Transition a risk profile version to Archived status, permanently removing it from active evaluation use while preserving the definition and lifecycle record for historical audit queries.
| Property | Value |
|---|---|
| Operation ID | ArchiveRiskProfile |
| Tags | Risk Profiles |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
profileId | path | yes | |
version | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/risk/profiles/{profileId}/versions/{version}:deprecate
Deprecate an active risk profile.
Mark an active risk profile version as Deprecated, optionally specifying a successor version and a human-readable reason. Deprecated profiles remain queryable for audit but are excluded from new evaluation bindings.
| Property | Value |
|---|---|
| Operation ID | DeprecateRiskProfile |
| Tags | Risk Profiles |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
profileId | path | yes | |
version | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/risk/schema/validate
Validate a risk profile document against the schema.
Validate a submitted risk profile JSON document against the canonical schema, returning a structured list of validation issues including the instance path, error keyword, and human-readable message for each violation. Used by editors and CI pipelines to pre-flight profile authoring before submission.
| Property | Value |
|---|---|
| Operation ID | ValidateRiskProfile |
| Tags | Schema Validation |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/risk/scopes/attachments
List scope attachments with optional filtering.
List risk profile scope attachments with optional filtering by scope type, scope ID, profile ID, and expiry status. Supports pagination via the limit parameter. Used by the console and scope resolution pipeline to discover active bindings.
| Property | Value |
|---|---|
| Operation ID | ListScopeAttachments |
| Tags | Risk Profile Scopes |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
includeExpired | query | yes | |
limit | query | yes | |
profileId | query | no | |
scopeId | query | no | |
scopeType | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/risk/scopes/attachments
Attach a risk profile to a scope (organization, project, environment, or component).
Create a scope attachment that binds a risk profile to a specific organizational scope (organization, project, environment, or component), optionally with an expiry time. The attached profile is used for policy evaluation within that scope during the attachment’s active lifetime.
| Property | Value |
|---|---|
| Operation ID | CreateScopeAttachment |
| Tags | Risk Profile Scopes |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
201 | Created | application/json |
GET /api/risk/scopes/attachments/{attachmentId}
Get a scope attachment by ID.
Retrieve the details of a specific scope attachment by its identifier, including the bound risk profile, target scope type and ID, and the attachment’s active and expiry timestamps.
| Property | Value |
|---|---|
| Operation ID | GetScopeAttachment |
| Tags | Risk Profile Scopes |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
attachmentId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
DELETE /api/risk/scopes/attachments/{attachmentId}
Delete a scope attachment.
Permanently remove a risk profile scope attachment by its identifier. The associated risk profile will no longer be applied to evaluations within the previously bound scope after deletion.
| Property | Value |
|---|---|
| Operation ID | DeleteScopeAttachment |
| Tags | Risk Profile Scopes |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
attachmentId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
204 | No Content | - |
POST /api/risk/scopes/attachments/{attachmentId}:expire
Expire a scope attachment immediately.
Immediately expire a risk profile scope attachment, recording the expiry actor and timestamp without deleting the attachment record. Expired attachments are excluded from scope resolution but remain queryable for audit purposes.
| Property | Value |
|---|---|
| Operation ID | ExpireScopeAttachment |
| Tags | Risk Profile Scopes |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
attachmentId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/risk/scopes/resolve
Resolve the effective risk profile for a given scope selector.
Resolve the highest-priority active risk profile attachment for a given scope selector, walking the scope hierarchy (component -> environment -> project -> organization) until an active attachment is found. Used by the evaluation pipeline to determine which profile governs a specific component.
| Property | Value |
|---|---|
| Operation ID | ResolveScope |
| Tags | Risk Profile Scopes |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/risk/scopes/{scopeType}/{scopeId}/attachments
Get all attachments for a specific scope.
Retrieve all risk profile attachments bound to a specific scope identified by type and ID, including both active and expired attachments, for use in scope management UIs and audit reviews.
| Property | Value |
|---|---|
| Operation ID | GetScopeAttachments |
| Tags | Risk Profile Scopes |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
scopeId | path | yes | |
scopeType | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/risk/simulation
Run a risk simulation with score distributions and contribution breakdowns.
Evaluate a set of advisory findings against a specified risk profile, returning per-finding normalized scores, severity assignments, recommended actions, aggregate metrics, and an optional score distribution histogram. Used by policy authors and CI pipelines to validate risk posture against a profile.
| Property | Value |
|---|---|
| Operation ID | RunRiskSimulation |
| Tags | Risk Simulation |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/risk/simulation/compare
Compare risk scoring between two profile configurations.
Simulate the same set of findings against two different risk profiles and compute delta metrics showing how mean score, median score, and severity distribution counts differ between the baseline and comparison profiles. Used by policy authors to evaluate the impact of profile changes before promoting.
| Property | Value |
|---|---|
| Operation ID | CompareProfileSimulations |
| Tags | Risk Simulation |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/risk/simulation/quick
Run a quick risk simulation without detailed breakdowns.
Run a lightweight risk simulation returning only aggregate metrics and score distribution without per-finding contribution details. Optimized for high-frequency calls where summary statistics are sufficient and per-finding breakdown overhead is not justified.
| Property | Value |
|---|---|
| Operation ID | RunQuickRiskSimulation |
| Tags | Risk Simulation |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/risk/simulation/studio/analyze
Run a detailed analysis for Policy Studio with full breakdown analytics.
Provides comprehensive breakdown including signal analysis, override tracking, score distributions, and component breakdowns for policy authoring.
| Property | Value |
|---|---|
| Operation ID | RunPolicyStudioAnalysis |
| Tags | Risk Simulation |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/risk/simulation/studio/compare
Compare profiles with full breakdown analytics and trend analysis.
Compare two risk profiles using full breakdown analytics, returning per-signal contribution deltas, override tracking, and severity distribution shifts between baseline and comparison. Used by Policy Studio to render side-by-side profile comparison views with detailed analytical overlays.
| Property | Value |
|---|---|
| Operation ID | CompareProfilesWithBreakdown |
| Tags | Risk Simulation |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/risk/simulation/studio/preview
Preview impact of profile changes before committing.
Simulates findings against both current and proposed profile to show impact.
| Property | Value |
|---|---|
| Operation ID | PreviewProfileChanges |
| Tags | Risk Simulation |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/risk/simulation/whatif
Run a what-if simulation with hypothetical signal changes.
Run a baseline simulation and then re-run with hypothetical signal value overrides applied to specified findings, returning both results and an impact summary counting improved, worsened, and unchanged findings. Supports pre-remediation planning and remediation impact assessment.
| Property | Value |
|---|---|
| Operation ID | RunWhatIfSimulation |
| Tags | Risk Simulation |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/v1/advisory-sources/{sourceId}/conflicts
Get active/resolved advisory conflicts for a source.
| Property | Value |
|---|---|
| Operation ID | GetAdvisorySourceConflicts |
| Tags | Advisory Sources |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
sourceId | path | yes | |
limit | query | no | |
offset | query | no | |
status | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
400 | Bad Request | application/json |
GET /api/v1/advisory-sources/{sourceId}/impact
Get policy impact facts for an advisory source.
| Property | Value |
|---|---|
| Operation ID | GetAdvisorySourceImpact |
| Tags | Advisory Sources |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
sourceId | path | yes | |
environment | query | no | |
region | query | no | |
sourceFamily | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
400 | Bad Request | application/json |
GET /api/v1/airgap/bundles
List all policy pack bundles registered for a tenant, including their import status, source metadata, and processing timestamps, for use by air-gap operation consoles monitoring bundle delivery pipelines.
| Property | Value |
|---|---|
| Operation ID | AirGap.ListBundles |
| Tags | PolicyPackBundleEndpoints |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/airgap/bundles
Register a policy pack bundle for air-gap import, validating the bundle structure and enforcing sealed-mode preconditions. Returns 412 Precondition Failed when sealed-mode blocks the import and 403 Forbidden when the bundle origin is not trusted.
| Property | Value |
|---|---|
| Operation ID | AirGap.RegisterBundle |
| Tags | PolicyPackBundleEndpoints |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
400 | Bad Request | application/problem+json |
403 | Forbidden | application/problem+json |
412 | Precondition Failed | application/problem+json |
GET /api/v1/airgap/bundles/{bundleId}
Retrieve the import status of a registered policy pack bundle by its import ID, including processing state, any validation errors, and metadata extracted from the bundle manifest.
| Property | Value |
|---|---|
| Operation ID | AirGap.GetBundleStatus |
| Tags | PolicyPackBundleEndpoints |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
bundleId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
404 | Not Found | application/problem+json |
POST /api/v1/airgap/risk-profiles/export
Export risk profiles as an air-gap compatible bundle with signatures.
Export one or more risk profiles into an air-gap compatible bundle format with optional cryptographic signing and Merkle tree integrity protection, ready for transfer to a disconnected environment per CONTRACT-MIRROR-BUNDLE-003.
| Property | Value |
|---|---|
| Operation ID | AirGap.ExportRiskProfiles |
| Tags | Air-Gap Risk Profiles |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
400 | Bad Request | application/json |
POST /api/v1/airgap/risk-profiles/export/download
Export and download risk profiles as an air-gap compatible JSON file.
Export risk profiles into an air-gap bundle and return it as a downloadable JSON file attachment, enabling operators to transfer profiles to offline environments without additional tooling beyond a standard HTTP client.
| Property | Value |
|---|---|
| Operation ID | AirGap.DownloadRiskProfileBundle |
| Tags | Air-Gap Risk Profiles |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/v1/airgap/risk-profiles/import
Import risk profiles from an air-gap bundle with sealed-mode enforcement.
Import risk profiles from an air-gap bundle with configurable signature verification, Merkle integrity checking, and sealed-mode enforcement. Returns 412 Precondition Failed when sealed-mode prevents the import, and records the import attempt for the air-gap audit log.
| Property | Value |
|---|---|
| Operation ID | AirGap.ImportRiskProfiles |
| Tags | Air-Gap Risk Profiles |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
X-Tenant-Id | header | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
400 | Bad Request | application/json |
403 | Forbidden | application/json |
412 | Precondition Failed | application/json |
POST /api/v1/airgap/risk-profiles/verify
Verify the integrity of an air-gap bundle without importing.
Verify the cryptographic signature and Merkle tree integrity of an air-gap risk profile bundle without performing an import, enabling pre-flight validation before committing to the import operation in sealed environments.
| Property | Value |
|---|---|
| Operation ID | AirGap.VerifyRiskProfileBundle |
| Tags | Air-Gap Risk Profiles |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/v1/attestor/policies
List verification policies
List all registered attestation verification policies, optionally filtered by tenant scope. Used by the attestor service and policy console to discover available verification constraints for each tenant context.
| Property | Value |
|---|---|
| Operation ID | Attestor.ListPolicies |
| Tags | Verification Policies |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
tenantScope | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/v1/attestor/policies
Create a new verification policy
Create a new attestation verification policy specifying accepted predicate types, signer requirements, validity windows, and tenant scope. Returns the created policy record with its assigned identifier for use in attestation verification workflows.
| Property | Value |
|---|---|
| Operation ID | Attestor.CreatePolicy |
| Tags | Verification Policies |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
201 | Created | application/json |
POST /api/v1/attestor/policies/editor/clone
Clone a verification policy
Create a new verification policy by cloning an existing policy, preserving the source definition while assigning a new identifier and optionally overriding the version string. Useful for creating policy variants without manual duplication.
| Property | Value |
|---|---|
| Operation ID | Attestor.ClonePolicy |
| Tags | Verification Policy Editor |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
201 | Created | application/json |
POST /api/v1/attestor/policies/editor/compare
Compare two verification policies
Compute a field-level diff between two verification policies, listing added, removed, and modified predicate types, signer requirements, key fingerprints, and validity window settings. Used by the policy editor and review workflows to highlight changes before promotion.
| Property | Value |
|---|---|
| Operation ID | Attestor.ComparePolicies |
| Tags | Verification Policy Editor |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/v1/attestor/policies/editor/metadata
Get editor metadata for verification policy forms
Retrieve static metadata used to populate verification policy editor forms, including available predicate types, signer algorithm options, and validation rule documentation. Used by the UI to render dynamic form fields without hardcoding policy schema knowledge.
| Property | Value |
|---|---|
| Operation ID | Attestor.GetEditorMetadata |
| Tags | Verification Policy Editor |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/v1/attestor/policies/editor/validate
Validate a verification policy without persisting
Validate a verification policy definition against all structural and semantic rules without persisting it to the store. Returns errors, warnings, and authoring suggestions so policy authors can correct issues in the editor before saving.
| Property | Value |
|---|---|
| Operation ID | Attestor.ValidatePolicy |
| Tags | Verification Policy Editor |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/v1/attestor/policies/editor/{policyId}
Get a verification policy with editor metadata
Retrieve a verification policy combined with its current validation state, authoring suggestions, and editor permissions (such as whether the policy can be deleted). Used by the UI editor to render the policy form in its current persisted state.
| Property | Value |
|---|---|
| Operation ID | Attestor.GetPolicyEditorView |
| Tags | Verification Policy Editor |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
policyId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/v1/attestor/policies/{policyId}
Get a verification policy by ID
Retrieve a specific attestation verification policy by its identifier, returning the full policy definition including predicate type filters, signer requirements, and validity window configuration.
| Property | Value |
|---|---|
| Operation ID | Attestor.GetPolicy |
| Tags | Verification Policies |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
policyId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
PUT /api/v1/attestor/policies/{policyId}
Update a verification policy
Update the mutable fields of an existing attestation verification policy, including predicate types, signer requirements, validity window, and custom metadata. Preserves the policy identifier and creation timestamp while updating the modification timestamp.
| Property | Value |
|---|---|
| Operation ID | Attestor.UpdatePolicy |
| Tags | Verification Policies |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
policyId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
DELETE /api/v1/attestor/policies/{policyId}
Delete a verification policy
Permanently remove an attestation verification policy by identifier. Deleted policies are no longer applied in verification runs; existing attestation records that referenced this policy are not retroactively affected.
| Property | Value |
|---|---|
| Operation ID | Attestor.DeletePolicy |
| Tags | Verification Policies |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
policyId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
204 | No Content | - |
DELETE /api/v1/attestor/reports/expired
Purge expired attestation reports
Remove all attestation reports that have exceeded their configured time-to-live from the report store. Returns the count of purged records; intended for scheduled maintenance to bound storage growth over time.
| Property | Value |
|---|---|
| Operation ID | Attestor.PurgeExpired |
| Tags | Attestation Reports |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/v1/attestor/reports/query
Query attestation reports
Query the attestation report store with flexible filters including artifact digests, URI patterns, policy IDs, predicate types, status, and time range. Supports paginated retrieval of report summaries or full detail records for audit and compliance review.
| Property | Value |
|---|---|
| Operation ID | Attestor.ListReports |
| Tags | Attestation Reports |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/v1/attestor/reports/statistics
Get aggregated attestation statistics
Retrieve aggregated attestation statistics across the report store, including pass/fail counts per policy and predicate type, optionally filtered by time range. Used by the console dashboard to render attestation health metrics.
| Property | Value |
|---|---|
| Operation ID | Attestor.GetStatistics |
| Tags | Attestation Reports |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
fromTime | query | no | |
policyIds | query | no | |
predicateTypes | query | no | |
status | query | no | |
toTime | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/v1/attestor/reports/store
Store an attestation report
Persist a pre-computed attestation report into the report store with an optional time-to-live, making it available for subsequent retrieval and statistics aggregation. Used by the attestor pipeline after completing artifact verification.
| Property | Value |
|---|---|
| Operation ID | Attestor.StoreReport |
| Tags | Attestation Reports |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
201 | Created | application/json |
POST /api/v1/attestor/reports/verify
Generate attestation report for an artifact
Generate a fresh attestation verification report for an artifact by evaluating its attestations against all applicable verification policies. Returns pass/fail status per policy, signer details, and any validation errors encountered during verification.
| Property | Value |
|---|---|
| Operation ID | Attestor.VerifyArtifact |
| Tags | Attestation Reports |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/v1/attestor/reports/{artifactDigest}
Get attestation report for an artifact
Retrieve the stored attestation report for a specific artifact identified by its digest, including verification status against applicable policies, predicate types present, and signer identity records.
| Property | Value |
|---|---|
| Operation ID | Attestor.GetReport |
| Tags | Attestation Reports |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
artifactDigest | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /api/v1/authority/effective-policies
List effective policies with optional filtering.
List effective policy bindings with optional filtering by tenant, policy ID, enabled-only flag, and expiry inclusion. Returns bindings in priority order, used by the resolution engine and console to display active policy governance assignments.
| Property | Value |
|---|---|
| Operation ID | ListEffectivePolicies |
| Tags | Effective Policies |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
enabledOnly | query | yes | |
includeExpired | query | yes | |
limit | query | yes | |
policyId | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/v1/authority/effective-policies
Create a new effective policy with subject pattern and priority.
Create a new effective policy binding that associates a policy pack revision with a subject pattern and priority rank, controlling which policy governs releases for matching subjects. Changes are audited per CONTRACT-AUTHORITY-EFFECTIVE-WRITE-008.
| Property | Value |
|---|---|
| Operation ID | CreateEffectivePolicy |
| Tags | Effective Policies |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
201 | Created | application/json |
GET /api/v1/authority/effective-policies/{effectivePolicyId}
Get an effective policy by ID.
Retrieve a specific effective policy binding by its identifier, including the subject pattern, priority, pack reference, and any scope attachments that further restrict the policy’s applicability.
| Property | Value |
|---|---|
| Operation ID | GetEffectivePolicy |
| Tags | Effective Policies |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
effectivePolicyId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
PUT /api/v1/authority/effective-policies/{effectivePolicyId}
Update an effective policy’s priority, expiration, or scopes.
Update the mutable fields of an effective policy binding, including priority, expiration date, and scope constraints, without changing the subject pattern or pack reference. All changes are audited per CONTRACT-AUTHORITY-EFFECTIVE-WRITE-008.
| Property | Value |
|---|---|
| Operation ID | UpdateEffectivePolicy |
| Tags | Effective Policies |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
effectivePolicyId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
DELETE /api/v1/authority/effective-policies/{effectivePolicyId}
Delete an effective policy.
Remove an effective policy binding by identifier, stopping the associated policy from governing matching subjects. The deletion is audited and the binding identifier cannot be reused.
| Property | Value |
|---|---|
| Operation ID | DeleteEffectivePolicy |
| Tags | Effective Policies |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
effectivePolicyId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
204 | No Content | - |
GET /api/v1/authority/resolve
Resolve the effective policy for a subject.
Resolve the highest-priority enabled effective policy that governs a given subject string, respecting tenant scoping and priority ordering. Returns the resolved policy binding with the matching pack reference, used by the gate and evaluation pipeline at decision time.
| Property | Value |
|---|---|
| Operation ID | ResolveEffectivePolicy |
| Tags | Policy Resolution |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
subject | query | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/v1/authority/scope-attachments
Attach an authorization scope to an effective policy.
Attach an authorization scope restriction to an effective policy, narrowing its applicability to requests carrying the specified scope claim. Audited per CONTRACT-AUTHORITY-EFFECTIVE-WRITE-008.
| Property | Value |
|---|---|
| Operation ID | AttachAuthorityScope |
| Tags | Authority Scope Attachments |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
201 | Created | application/json |
GET /api/v1/authority/scope-attachments/policy/{effectivePolicyId}
Get all scope attachments for an effective policy.
Retrieve all authorization scope restriction attachments for a specific effective policy, showing which scope claims are required for the policy to apply in each binding context.
| Property | Value |
|---|---|
| Operation ID | GetPolicyScopeAttachments |
| Tags | Authority Scope Attachments |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
effectivePolicyId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
DELETE /api/v1/authority/scope-attachments/{attachmentId}
Detach an authorization scope.
Remove a scope restriction attachment from an effective policy, allowing the policy to apply to a broader set of authorization scopes. Audited per CONTRACT-AUTHORITY-EFFECTIVE-WRITE-008.
| Property | Value |
|---|---|
| Operation ID | DetachAuthorityScope |
| Tags | Authority Scope Attachments |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
attachmentId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
204 | No Content | - |
GET /api/v1/buildinfo
API alias for /buildinfo.json (same payload).
| Property | Value |
|---|---|
| Operation ID | StellaOpsBuildInfoApi |
| Tags | StellaOps.Policy.Engine |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/export/bundles/{bundleId}
Retrieve the manifest of a completed export bundle including its format, content type, size, and creation timestamp, enabling clients to inspect bundle metadata before initiating a download.
| Property | Value |
|---|---|
| Operation ID | Export.GetBundle |
| Tags | ConsoleExportEndpoints |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
bundleId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/export/bundles/{bundleId}/download
Download the content of a completed export bundle as a file attachment, with the appropriate content type (JSON or NDJSON) and a timestamped filename. Used by operators to retrieve export data for offline processing or air-gap transfer.
| Property | Value |
|---|---|
| Operation ID | Export.DownloadBundle |
| Tags | ConsoleExportEndpoints |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
bundleId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/export/jobs
List console export jobs for the tenant, returning job configuration summaries, current status, and last execution timestamps to support export management dashboards and automation pipelines.
| Property | Value |
|---|---|
| Operation ID | Export.ListJobs |
| Tags | ConsoleExportEndpoints |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/export/jobs
Create a new console export job defining the data scope, destination, format, and optional schedule. The job is created in a pending state and can be triggered immediately or executed on the configured schedule.
| Property | Value |
|---|---|
| Operation ID | Export.CreateJob |
| Tags | ConsoleExportEndpoints |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/export/jobs/{jobId}
Retrieve the full configuration and current status of a specific console export job by its identifier, including destination settings, schedule, and format parameters.
| Property | Value |
|---|---|
| Operation ID | Export.GetJob |
| Tags | ConsoleExportEndpoints |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
jobId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
PUT /api/v1/export/jobs/{jobId}
Update the configuration of an existing console export job, allowing changes to destination, schedule, or format settings while preserving the job’s execution history.
| Property | Value |
|---|---|
| Operation ID | Export.UpdateJob |
| Tags | ConsoleExportEndpoints |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
jobId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
DELETE /api/v1/export/jobs/{jobId}
Permanently delete a console export job and release any associated resources. Scheduled future executions will be cancelled; completed execution records and bundles are retained until their configured retention period expires.
| Property | Value |
|---|---|
| Operation ID | Export.DeleteJob |
| Tags | ConsoleExportEndpoints |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
jobId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/export/jobs/{jobId}/executions/{executionId}
Retrieve the status and metadata of a specific export job execution, including start and end timestamps, byte count, destination path, and any error messages encountered during the export run.
| Property | Value |
|---|---|
| Operation ID | Export.GetExecution |
| Tags | ConsoleExportEndpoints |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
executionId | path | yes | |
jobId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/export/jobs/{jobId}/run
Trigger an immediate execution of a console export job outside its normal schedule, returning an execution ID that can be polled for status. Useful for ad-hoc exports and manual retries after a previous execution failure.
| Property | Value |
|---|---|
| Operation ID | Export.TriggerJob |
| Tags | ConsoleExportEndpoints |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
jobId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/gate/evaluate
Evaluate a score-based CI/CD release gate for a single security finding using the Evidence Weighted Score (EWS) formula. Computes a composite risk score from CVSS, EPSS, reachability, exploit maturity, patch proof, and VEX status inputs, applies the gate policy thresholds to produce a pass/warn/block action, signs the verdict bundle, and optionally anchors it to a Rekor transparency log. Returns HTTP 403 when the gate action is block.
| Property | Value |
|---|---|
| Operation ID | EvaluateScoreGate |
| Tags | Score Gates |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/gate/evaluate-batch
Batch evaluate score-based CI/CD gates for up to 500 findings in a single request using configurable parallelism. Applies the EWS formula to each finding, produces a per-finding action (pass/warn/block), and returns an aggregate summary with overall action, exit code, and optional per-finding verdict bundles. Supports fail-fast mode to stop processing on the first blocked finding.
| Property | Value |
|---|---|
| Operation ID | EvaluateScoreGateBatch |
| Tags | Score Gates |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/gate/health
Health check for the score-based gate evaluation service
| Property | Value |
|---|---|
| Operation ID | ScoreGateHealth |
| Tags | Score Gates |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/gates/decisions/{decisionId}
Get a specific gate decision by ID
Retrieve full details of a specific gate decision by its UUID, including BOM reference, image digest, gate status, verdict hash, policy bundle ID and hash, CI/CD context, actor, blocking unknowns, and warnings.
| Property | Value |
|---|---|
| Operation ID | GetGateDecisionById |
| Tags | Gates |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
decisionId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/gates/decisions/{decisionId}/export
Export gate decision in CI/CD format
Export a gate decision in JUnit XML, SARIF 2.1.0, or JSON format for integration with CI/CD pipelines. The JUnit format is compatible with Jenkins, GitHub Actions, and GitLab CI; SARIF is compatible with GitHub Code Scanning and VS Code; JSON provides the full structured decision for custom integrations.
| Property | Value |
|---|---|
| Operation ID | ExportGateDecision |
| Tags | Gates |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
decisionId | path | yes | |
format | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/gates/{bomRef}
Get gate check result for a component
Retrieve the current unknowns state and gate decision for a BOM reference. Returns the aggregate state across all unknowns (resolved, pending, under_review, or escalated), per-unknown band and SLA details, and a cached gate decision. Results are cached for 30 seconds to reduce database load under CI/CD polling.
| Property | Value |
|---|---|
| Operation ID | GetGateStatus |
| Tags | Gates |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
bomRef | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/gates/{bomRef}/check
Perform gate check for a component
Perform a fresh gate check for a BOM reference with an optional proposed VEX verdict. Returns a pass, warn, or block decision with the list of blocking unknown IDs and the reason for the decision. Returns HTTP 403 when the gate is blocked.
| Property | Value |
|---|---|
| Operation ID | CheckGate |
| Tags | Gates |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
bomRef | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/gates/{bomRef}/exception
Request an exception to bypass the gate
Submit an exception request to bypass blocking unknowns for a BOM reference. Requires a justification and a list of unknown IDs to exempt. Returns an exception record with granted status, expiry, and optional denial reason when auto-approval is not available.
| Property | Value |
|---|---|
| Operation ID | RequestGateException |
| Tags | Gates |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
bomRef | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/gates/{gateId}/decisions
Get historical gate decisions
Retrieve a paginated list of historical gate decisions for a gate identifier, with optional filtering by BOM reference, status, actor, and date range. Returns verdict hashes and policy bundle IDs for replay verification and compliance audit.
| Property | Value |
|---|---|
| Operation ID | GetGateDecisionHistory |
| Tags | Gates |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
gateId | path | yes | |
actor | query | no | |
bom_ref | query | no | |
continuation_token | query | no | |
from_date | query | no | |
limit | query | no | |
status | query | no | |
to_date | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/governance/audit/events
Return governance audit events, sourced from Timeline’s unified audit store filtered to modules=policy.
| Property | Value |
|---|---|
| Operation ID | Governance.GetAuditEvents |
| Tags | Governance |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/governance/audit/events/{eventId}
Return a governance audit event by id, sourced from Timeline’s unified audit store.
| Property | Value |
|---|---|
| Operation ID | Governance.GetAuditEvent |
| Tags | Governance |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
eventId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/governance/conflicts
Returns 501 unless a durable conflict backend is registered. The runtime no longer serves process-local conflict rows.
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Governance Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/governance/conflicts/analyze
Returns 501 unless a durable conflict analysis backend is registered. The runtime no longer simulates conflict analysis.
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Governance Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/governance/conflicts/dashboard
Returns 501 unless a durable conflict dashboard backend is registered. The runtime no longer emits synthetic conflict metrics.
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Governance Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/governance/conflicts/{conflictId}/acknowledge
Returns 501 unless a durable conflict acknowledgement backend is registered. The runtime no longer records process-local acknowledgements.
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Governance Compatibility |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
conflictId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/governance/conflicts/{conflictId}/ignore
Returns 501 unless a durable conflict backend is registered. The runtime no longer mutates process-local conflict rows.
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Governance Compatibility |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
conflictId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/governance/conflicts/{conflictId}/resolve
Returns 501 unless a durable conflict backend is registered. The runtime no longer mutates process-local conflict rows.
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Governance Compatibility |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
conflictId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/governance/risk-budget/dashboard
Return risk-budget dashboard data when a durable backend exists. This runtime currently returns 501 instead of emitting synthetic dashboard cards.
| Property | Value |
|---|---|
| Operation ID | Governance.GetRiskBudgetDashboard |
| Tags | Governance |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/governance/risk-profiles
List configured risk profiles that are truthfully available in the current runtime. Only read-only configuration-backed profiles are exposed here.
| Property | Value |
|---|---|
| Operation ID | Governance.ListRiskProfiles |
| Tags | Governance |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
status | query | no | |
tenantId | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/governance/risk-profiles
Create a risk profile when a durable lifecycle backend exists. This runtime currently returns 501 instead of writing process-local profile state.
| Property | Value |
|---|---|
| Operation ID | Governance.CreateRiskProfile |
| Tags | Governance |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/governance/risk-profiles/validate
Validate a candidate risk profile payload without persisting it. This path is stateless and does not depend on in-memory profile storage.
| Property | Value |
|---|---|
| Operation ID | Governance.ValidateRiskProfile |
| Tags | Governance |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/governance/risk-profiles/{profileId}
Retrieve a configured risk profile by identifier from the real Policy runtime configuration surface.
| Property | Value |
|---|---|
| Operation ID | Governance.GetRiskProfile |
| Tags | Governance |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
profileId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
PUT /api/v1/governance/risk-profiles/{profileId}
Update a risk profile when a durable lifecycle backend exists. This runtime currently returns 501 instead of mutating process-local profile state.
| Property | Value |
|---|---|
| Operation ID | Governance.UpdateRiskProfile |
| Tags | Governance |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
profileId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
DELETE /api/v1/governance/risk-profiles/{profileId}
Delete a risk profile when a durable lifecycle backend exists. This runtime currently returns 501 instead of deleting process-local profile state.
| Property | Value |
|---|---|
| Operation ID | Governance.DeleteRiskProfile |
| Tags | Governance |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
profileId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/governance/risk-profiles/{profileId}/activate
Activate a risk profile when a durable lifecycle backend exists. This runtime currently returns 501 instead of fabricating activation state.
| Property | Value |
|---|---|
| Operation ID | Governance.ActivateRiskProfile |
| Tags | Governance |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
profileId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/governance/risk-profiles/{profileId}/deprecate
Deprecate a risk profile when a durable lifecycle backend exists. This runtime currently returns 501 instead of fabricating lifecycle history.
| Property | Value |
|---|---|
| Operation ID | Governance.DeprecateRiskProfile |
| Tags | Governance |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
profileId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/governance/sealed-mode/overrides
Return active sealed-mode overrides when a durable override backend exists. This runtime currently returns 501 instead of inventing process-local override state.
| Property | Value |
|---|---|
| Operation ID | Governance.GetSealedModeOverrides |
| Tags | Governance |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
tenantId | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/governance/sealed-mode/overrides
Create a sealed-mode override when a durable override backend exists. This runtime currently returns 501 instead of persisting fictional override grants.
| Property | Value |
|---|---|
| Operation ID | Governance.CreateSealedModeOverride |
| Tags | Governance |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/governance/sealed-mode/overrides/{overrideId}/revoke
Revoke a sealed-mode override when a durable override backend exists. This runtime currently returns 501 instead of mutating process-local state.
| Property | Value |
|---|---|
| Operation ID | Governance.RevokeSealedModeOverride |
| Tags | Governance |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
overrideId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/governance/sealed-mode/status
Retrieve the current sealed-mode status from the real Policy air-gap service. This compatibility projection is tenant-scoped and never fabricates process-local override state.
| Property | Value |
|---|---|
| Operation ID | Governance.GetSealedModeStatus |
| Tags | Governance |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
tenantId | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/governance/sealed-mode/toggle
Enable or disable sealed mode through the real Policy air-gap service. Compatibility-only metadata fields are accepted for forward compatibility but are not persisted by this runtime.
| Property | Value |
|---|---|
| Operation ID | Governance.ToggleSealedMode |
| Tags | Governance |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/governance/staleness/config
Returns 501 unless a durable staleness configuration backend is registered. The runtime no longer fabricates process-local staleness policy.
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Governance Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
PUT /api/v1/governance/staleness/config/{dataType}
Returns 501 unless a durable staleness configuration backend is registered. The runtime no longer mutates process-local staleness policy.
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Governance Compatibility |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
dataType | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/governance/staleness/status
Returns 501 unless a durable staleness status backend is registered. The runtime no longer emits synthetic staleness cards.
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Governance Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/governance/trust-weights
Returns 501 unless a durable trust-weight backend is registered. The runtime no longer fabricates process-local trust weights.
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Governance Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/governance/trust-weights/preview-impact
Returns 501 unless a durable trust-weight backend is registered. The runtime no longer emits synthetic preview data.
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Governance Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
PUT /api/v1/governance/trust-weights/{weightId}
Returns 501 unless a durable trust-weight backend is registered. The runtime no longer mutates process-local trust weights.
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Governance Compatibility |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
weightId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/policy/assistant/tools/evaluate
Evaluate assistant tool access using the tool lattice rules.
| Property | Value |
|---|---|
| Operation ID | EvaluateToolAccess |
| Tags | Assistant Tools |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/policy/exception/pending
List exception approval requests that are currently pending and require action from the authenticated approver. Used to drive approver inbox views and notification counts, returning only requests where the calling user is listed as a required approver and has not yet recorded an approval.
| Property | Value |
|---|---|
| Operation ID | ListPendingApprovals |
| Tags | Exception Approvals |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
limit | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/policy/exception/request
Create a new exception approval request for a vulnerability, policy rule, PURL pattern, or artifact digest. Validates the requested TTL against the gate-level maximum, enforces approval rules for the gate level, and optionally auto-approves low-risk requests that meet the configured criteria. The request enters the pending state and is routed to configured approvers.
| Property | Value |
|---|---|
| Operation ID | CreateExceptionApprovalRequest |
| Tags | Exception Approvals |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/policy/exception/request/{requestId}
Retrieve the full details of a specific exception approval request by its request ID, including status, gate level, approval progress (approved count vs required count), scope, lifecycle timestamps, and any validation warnings from the creation step.
| Property | Value |
|---|---|
| Operation ID | GetExceptionApprovalRequest |
| Tags | Exception Approvals |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
requestId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/policy/exception/requests
List exception approval requests for the tenant with optional status filtering and pagination. Returns summary DTOs with request ID, status, gate level, requester, vulnerability or PURL scope, reason code, and approval progress. Used by governance dashboards and approval queue UIs.
| Property | Value |
|---|---|
| Operation ID | ListExceptionApprovalRequests |
| Tags | Exception Approvals |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
limit | query | no | |
offset | query | no | |
status | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/policy/exception/rules
Retrieve the exception approval rules configured for the tenant, including per-gate-level minimum approver counts, required approver roles, maximum TTL days, self-approval policy, and evidence and compensating-control requirements. Used by policy authoring tools to display approval requirements to requestors before submission.
| Property | Value |
|---|---|
| Operation ID | GetExceptionApprovalRules |
| Tags | Exception Approvals |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/policy/exception/{requestId}/approve
Record an approval action for a pending exception request. Validates that the approver is authorized at the request’s gate level, records the approver’s identity, and optionally captures a comment. When sufficient approvers have acted, the request transitions to the approved state and the approval workflow is considered complete.
| Property | Value |
|---|---|
| Operation ID | ApproveExceptionRequest |
| Tags | Exception Approvals |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
requestId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/policy/exception/{requestId}/audit
Retrieve the ordered audit trail for an exception approval request, returning all recorded lifecycle events with sequence numbers, actor IDs, status transitions, and descriptive entries. Used for compliance reporting and post-incident review of the approval workflow.
| Property | Value |
|---|---|
| Operation ID | GetExceptionApprovalAudit |
| Tags | Exception Approvals |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
requestId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/policy/exception/{requestId}/cancel
Cancel an open exception approval request, accessible only to the original requester. Enforces ownership by comparing the authenticated actor against the stored requestor ID. Returns HTTP 403 when called by a non-owner and HTTP 400 when the request is already in a terminal state.
| Property | Value |
|---|---|
| Operation ID | CancelExceptionRequest |
| Tags | Exception Approvals |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
requestId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/policy/exception/{requestId}/reject
Reject a pending or partially-approved exception request, providing a mandatory reason that is recorded in the audit trail. Transitions the request to the rejected terminal state, preventing further approval actions. The rejection reason is surfaced to the requester for remediation guidance.
| Property | Value |
|---|---|
| Operation ID | RejectExceptionRequest |
| Tags | Exception Approvals |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
requestId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/policy/gate/decision/{decisionId}
Retrieve a previously cached gate evaluation decision by its decision ID. Gate decisions are retained in memory for 30 minutes after evaluation, after which this endpoint returns HTTP 404. Used by CI/CD pipelines to poll for results when the evaluation was triggered asynchronously via a registry webhook.
| Property | Value |
|---|---|
| Operation ID | GetGateDecision |
| Tags | Gates |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
decisionId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/policy/gate/evaluate
Evaluate the CI/CD release gate for a container image by comparing it against a baseline snapshot. Resolves the baseline using a configurable strategy (last-approved, previous-build, production-deployed, or branch-base), computes the security state delta, runs gate rules against the delta context, and returns a pass/warn/block decision with exit codes. If an override justification is supplied on a non-blocking verdict, a bypass audit record is created. Returns HTTP 403 when the gate blocks the release.
| Property | Value |
|---|---|
| Operation ID | EvaluateGate |
| Tags | Gates |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/policy/gate/health
Health check for the gate evaluation service
| Property | Value |
|---|---|
| Operation ID | GateHealth |
| Tags | Gates |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/policy/gate/jobs/{jobId}
Returns the persisted scheduler-backed status for an async registry webhook gate evaluation job.
| Property | Value |
|---|---|
| Operation ID | GetGateJobStatus |
| Tags | Gates |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
jobId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/policy/lint/analyze
Analyze a single policy source file for determinism violations including wall-clock access, random number generation, network or filesystem calls in evaluation paths, and unstable iteration patterns. Returns per-violation details with rule ID, category, severity, and remediation guidance.
| Property | Value |
|---|---|
| Operation ID | Policy.Lint.Analyze |
| Tags | PolicyLintEndpoints |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/policy/lint/analyze-batch
Analyze multiple policy source files in a single request for determinism violations, aggregating results across all files. Used by CI pipelines to lint an entire policy bundle before compilation or deployment.
| Property | Value |
|---|---|
| Operation ID | Policy.Lint.AnalyzeBatch |
| Tags | PolicyLintEndpoints |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/policy/lint/rules
List all available determinism lint rules with their rule IDs, categories (WallClock, RandomNumber, NetworkAccess, etc.), default severities, and recommended remediations. Used by policy authoring tools to display inline guidance and severity thresholds to developers.
| Property | Value |
|---|---|
| Operation ID | Policy.Lint.GetRules |
| Tags | PolicyLintEndpoints |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/webhooks/registry/docker
Handle Docker Registry v2 webhook events
Receive Docker Registry v2 notification events and enqueue a gate evaluation job for each push event that includes a valid image digest. Returns 202 only when a scheduler-backed async queue is available; otherwise returns 501 to indicate the runtime cannot truthfully accept deferred gate evaluation.
| Property | Value |
|---|---|
| Operation ID | DockerRegistryWebhook |
| Tags | Registry Webhooks |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
202 | Accepted | application/json |
POST /api/v1/webhooks/registry/generic
Handle generic registry webhook events with image digest
Receive a generic registry webhook payload containing an image digest and enqueue a single gate evaluation job. Supports any registry that can POST a JSON body with imageDigest, repository, tag, and optional baselineRef fields. Returns 501 when the runtime lacks a scheduler-backed async queue.
| Property | Value |
|---|---|
| Operation ID | GenericRegistryWebhook |
| Tags | Registry Webhooks |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
202 | Accepted | application/json |
POST /api/v1/webhooks/registry/harbor
Handle Harbor registry webhook events
Receive Harbor registry webhook events and enqueue a gate evaluation job for each PUSH_ARTIFACT or pushImage event that contains a resource with a valid digest. Non-push event types are silently acknowledged without queuing any jobs. Push events return 501 when the runtime lacks a scheduler-backed async queue.
| Property | Value |
|---|---|
| Operation ID | HarborWebhook |
| Tags | Registry Webhooks |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
202 | Accepted | application/json |
GET /buildinfo.json
Image build provenance (module, gitSha, gitCommitTime, imageBuiltAt, branch) for drift detection.
| Property | Value |
|---|---|
| Operation ID | StellaOpsBuildInfoFile |
| Tags | StellaOps.Policy.Engine |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /evidence/summary
Aggregate and summarize evidence signals for a set of advisory sources, returning per-source severity counts, conflict indicators, and overall trust posture. Used by the policy console and audit reporting to provide human-readable evidence context alongside raw policy decisions.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.EvidenceSummary |
| Tags | EvidenceSummaryEndpoint |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /policy/advisory-ai/knobs
Retrieve the current advisory AI tuning knobs that control hallucination suppression thresholds, confidence floors, and source-trust decay parameters used during AI-assisted advisory enrichment.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.AdvisoryAI.Knobs.Get |
| Tags | AdvisoryAiKnobsEndpoint |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
PUT /policy/advisory-ai/knobs
Update advisory AI tuning knobs to adjust how the AI enrichment layer weights and filters advisory signals. Changes take effect immediately for subsequent advisory processing cycles.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.AdvisoryAI.Knobs.Put |
| Tags | AdvisoryAiKnobsEndpoint |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /policy/audit
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /policy/batch-evaluations
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/batch-evaluations
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /policy/batch-evaluations/{batchId}
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/batch-evaluations/{batchId}/cancel
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/batch/context
Create and cache a shared evaluation context for a batch of policy decisions. Reduces per-decision overhead by pre-loading tenant configuration, active policy bundles, and VEX index into a reusable context object referenced by subsequent batch calls.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.BatchContext.Create |
| Tags | BatchContextEndpoint |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/conflicts/auto-resolve
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/conflicts/detect
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/conflicts/{conflictId}/resolve
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/console/attestation/dashboard
Get attestation dashboard for Console
Retrieve a pre-aggregated attestation health dashboard for the release console, including verification pass rates, recent failures, and trend indicators over the requested time range. Used to render the attestation overview panel without requiring separate query calls.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.ConsoleAttestationDashboard |
| Tags | Console Attestation Reports |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
400 | Bad Request | application/problem+json |
GET /policy/console/attestation/report/{artifactDigest}
Get attestation report for a specific artifact
Retrieve the console-formatted attestation report for a single artifact by its digest, including per-policy verification results, predicate type coverage, and signer identity details formatted for display in the artifact detail panel.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.ConsoleGetAttestationReport |
| Tags | Console Attestation Reports |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
artifactDigest | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
404 | Not Found | - |
POST /policy/console/attestation/reports
Query attestation reports for Console
Query attestation reports for display in the release console, supporting pagination, time range filtering, and grouping by artifact, policy, or predicate type. Returns console-formatted report cards with status badges and signer summaries.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.ConsoleAttestationReports |
| Tags | Console Attestation Reports |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
400 | Bad Request | application/problem+json |
POST /policy/console/simulations/diff
Compute a structured diff between two policy versions as they would apply to a given evaluation snapshot, highlighting verdict changes, rule transitions, and newly introduced or removed advisory signals. Used by the release console to preview the impact of a policy promotion before it is committed.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.ConsoleSimulationDiff |
| Tags | ConsoleSimulationEndpoint |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
400 | Bad Request | application/problem+json |
POST /policy/decisions
Evaluate and retrieve policy decisions for one or more component snapshots, including source evidence summaries, top-severity advisory sources, and signal-conflict counts. Used by CI/CD pipelines and the release console to determine pass/fail/warn verdicts.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.Decisions |
| Tags | PolicyDecisionEndpoint |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /policy/decisions/{snapshotId}
Retrieve previously computed policy decisions for a specific snapshot by its identifier, with optional filtering by tenant, component PURL, or advisory ID. Supports the compliance audit trail by allowing replay of recorded verdicts.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.Decisions.BySnapshot |
| Tags | PolicyDecisionEndpoint |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
snapshotId | path | yes | |
advisoryId | query | no | |
componentPurl | query | no | |
includeEvidence | query | no | |
maxSources | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /policy/effective
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/eval/batch
Batch-evaluate policy packs against advisory/VEX/SBOM tuples with deterministic ordering and cache-aware responses.
Evaluate a page of advisory/VEX/SBOM tuples against active policy packs, returning per-item verdicts with severity, rule name, confidence, and cache hit indicators. Supports cursor-based pagination and optional time budgets to bound evaluation latency in high-throughput CI/CD pipelines.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.BatchEvaluate |
| Tags | Policy Evaluation |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
GET /policy/exceptions
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/exceptions
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /policy/exceptions/{exceptionId}
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
PATCH /policy/exceptions/{exceptionId}
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/exceptions/{exceptionId}/revoke
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/ledger/export
Initiate an export of the policy decision ledger for a given tenant and time range, producing a structured archive of verdict records, evidence hashes, and trust-weight snapshots suitable for compliance reporting and offline audit replay.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.Ledger.Export |
| Tags | LedgerExportEndpoint |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /policy/ledger/export/{exportId}
Retrieve a completed ledger export package by its identifier, returning the serialized archive of policy decisions and their supporting evidence for download or ingestion into an external audit system.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.Ledger.GetExport |
| Tags | LedgerExportEndpoint |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
exportId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/merge/preview
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/orchestrator/jobs
Submit a policy orchestrator job for asynchronous execution, scheduling evaluation of one or more component snapshots against active policy bundles. Returns a job record with a tracking identifier for subsequent status polling.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.Orchestrator.Jobs.Submit |
| Tags | OrchestratorJobEndpoint |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/orchestrator/jobs/preview
Preview the execution plan of a policy orchestrator job without actually submitting it for execution. Returns the resolved bundle set, scope bindings, and estimated evaluation cost so operators can validate intent before committing.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.Orchestrator.Jobs.Preview |
| Tags | OrchestratorJobEndpoint |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /policy/orchestrator/jobs/{jobId}
Retrieve the current status and result of a previously submitted orchestrator job by its identifier, including verdict summaries, per-component outcomes, and any errors encountered during execution.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.Orchestrator.Jobs.Get |
| Tags | OrchestratorJobEndpoint |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
jobId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /policy/packs/{policyPackId}/coverage
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/packs/{policyPackId}/coverage/run
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /policy/packs/{policyPackId}/diff
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/packs/{policyPackId}/lint
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /policy/packs/{policyPackId}/versions/{version}/coverage
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/packs/{policyPackId}/versions/{version}/coverage/run
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/packs/{policyPackId}/versions/{version}/lint
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /policy/packs/{policyPackId}/versions/{version}/promotion-gate
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/packs/{policyPackId}/versions/{version}/promotion-gate/override
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /policy/shadow/config
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/shadow/disable
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/shadow/enable
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /policy/shadow/results
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /policy/simulations
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/simulations
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /policy/simulations/compare
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /policy/simulations/history
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /policy/simulations/{simulationId}
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
PATCH /policy/simulations/{simulationId}
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/simulations/{simulationId}/cancel
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/simulations/{simulationId}/verify
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Policy Simulation Compatibility |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /policy/snapshots
List persisted policy snapshots for a given tenant, returning snapshot identifiers, creation timestamps, and summary component counts for use in batch evaluation workflows.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.Snapshots.List |
| Tags | SnapshotEndpoint |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
tenant_id | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/snapshots
Create a new persisted policy evaluation snapshot from a component manifest, capturing the component graph, PURL set, and applicable advisory signals at a point in time for subsequent policy decision evaluation.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.Snapshots.Create |
| Tags | SnapshotEndpoint |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /policy/snapshots/{snapshotId}
Retrieve a specific persisted policy evaluation snapshot by identifier, including its full component graph, resolved advisory signals, and any cached partial evaluation state.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.Snapshots.Get |
| Tags | SnapshotEndpoint |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
snapshotId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /policy/trust-weighting
Retrieve the current active trust-weighting profile, including per-signal weight assignments and the profile hash used for deterministic scoring reproducibility.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.TrustWeighting.Get |
| Tags | TrustWeightingEndpoint |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
PUT /policy/trust-weighting
Replace the active trust-weighting profile with a new set of signal weights. The new weights take effect immediately for subsequent evaluations and trigger a profile hash rotation.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.TrustWeighting.Put |
| Tags | TrustWeightingEndpoint |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /policy/trust-weighting/preview
Preview the current trust-weighting profile alongside an optional overlay hash to verify how a proposed overlay would interact with existing signal weights before applying.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.TrustWeighting.Preview |
| Tags | TrustWeightingEndpoint |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
overlay_hash | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/violations/conflicts
Emit violation events, run severity fusion, and then execute conflict detection for the target snapshot, returning a list of advisory signal conflicts where multiple sources disagree on severity or applicability.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.Violations.Conflicts |
| Tags | ViolationEndpoint |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/violations/events
Emit one or more violation events for a snapshot, recording advisory hits and rule breaches into the durable violation runtime log. These events feed downstream severity fusion and conflict detection pipelines.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.Violations.Events |
| Tags | ViolationEndpoint |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/violations/severity
Emit violation events and then run severity fusion for the target snapshot, producing a consolidated worst-case severity rating by merging across all recorded advisory signals and rule outcomes.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.Violations.Severity |
| Tags | ViolationEndpoint |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /policy/worker/jobs/{jobId}
Retrieve the stored result of a previously executed policy worker job, including per-rule verdicts, signal scores, and any advisory hits recorded during evaluation.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.Worker.GetResult |
| Tags | PolicyWorkerEndpoint |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
jobId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /policy/worker/run
Trigger synchronous execution of a policy worker task, running the evaluation pipeline for a specified job against its resolved bundle and component snapshot. Returns the complete evaluation result upon completion.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.Worker.Run |
| Tags | PolicyWorkerEndpoint |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /readyz
| Property | Value |
|---|---|
| Operation ID | Readiness |
| Tags | StellaOps.Policy.Engine |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /simulation/overlay
Simulate the effect of applying VEX/rule overlays to an existing policy evaluation without persisting any changes. Useful for pre-flight validation before committing overlay promotions.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.OverlaySimulation |
| Tags | OverlaySimulationEndpoint |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /simulation/path-scope
Stream a what-if path-scope simulation showing how a change in call-graph reachability would alter policy verdicts. Returns NDJSON lines for each simulated path segment with optional deterministic trace output.
| Property | Value |
|---|---|
| Operation ID | PolicyEngine.PathScopeSimulation |
| Tags | PathScopeSimulationEndpoint |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /system/airgap/notifications/channels
List all notification channels currently registered with the air-gap notification service, enabling operators to verify that alert delivery paths (log, webhook, syslog, etc.) are configured before triggering seal or staleness events.
| Property | Value |
|---|---|
| Operation ID | AirGap.GetNotificationChannels |
| Tags | AirGapNotificationEndpoints |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /system/airgap/notifications/test
Dispatch a test notification through all configured air-gap notification channels for the tenant, verifying channel connectivity and delivery. The notification type, severity, title, and message can be customized; defaults to a staleness-warning info notification.
| Property | Value |
|---|---|
| Operation ID | AirGap.TestNotification |
| Tags | AirGapNotificationEndpoints |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /system/airgap/seal
Transition the environment to sealed mode, enforcing air-gap posture by locking out feed updates and external imports until explicitly unsealed. Requires the airgap:seal scope and records the seal operation for the air-gap audit log.
| Property | Value |
|---|---|
| Operation ID | AirGap.Seal |
| Tags | SealedModeEndpoints |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
400 | Bad Request | application/problem+json |
500 | Internal Server Error | application/problem+json |
POST /system/airgap/staleness/evaluate
Trigger an immediate staleness evaluation cycle for the tenant, re-computing the time-anchor age against configured thresholds and emitting any required breach or warning signals. Returns the post-evaluation staleness signal status.
| Property | Value |
|---|---|
| Operation ID | AirGap.EvaluateStaleness |
| Tags | StalenessEndpoints |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /system/airgap/staleness/fallback
Retrieve the current fallback mode activation state and configuration for the tenant, indicating whether evaluation decisions are being served from cached or degraded policy state due to feed staleness.
| Property | Value |
|---|---|
| Operation ID | AirGap.GetFallbackStatus |
| Tags | StalenessEndpoints |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /system/airgap/staleness/recover
Signal staleness recovery for the tenant after a successful time-anchor refresh, clearing active breach and warning states. Requires the airgap:seal scope as recovery operations affect sealed-mode enforcement posture.
| Property | Value |
|---|---|
| Operation ID | AirGap.SignalRecovery |
| Tags | StalenessEndpoints |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /system/airgap/staleness/status
Retrieve the current staleness signal status for the tenant including time-anchor age, breach indicators, and warning flags. Returns HTTP 503 when a staleness breach is active, enabling health monitoring systems to detect and alert on feed-gap conditions.
| Property | Value |
|---|---|
| Operation ID | AirGap.GetStalenessStatus |
| Tags | StalenessEndpoints |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /system/airgap/status
Retrieve the current sealed-mode status for the tenant, including whether the environment is sealed, the time anchor age, and any active enforcement flags that affect bundle import and feed update operations.
| Property | Value |
|---|---|
| Operation ID | AirGap.GetStatus |
| Tags | SealedModeEndpoints |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /system/airgap/unseal
Exit sealed mode and restore normal air-gap posture, allowing feed updates and bundle imports to resume. Requires the airgap:seal scope; the unseal event is recorded in the air-gap audit log.
| Property | Value |
|---|---|
| Operation ID | AirGap.Unseal |
| Tags | SealedModeEndpoints |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
500 | Internal Server Error | application/problem+json |
POST /system/airgap/verify
Verify a policy pack or risk profile bundle against the configured trust roots, checking cryptographic signatures and integrity. Returns 422 Unprocessable Entity when the bundle is structurally valid but fails signature verification.
| Property | Value |
|---|---|
| Operation ID | AirGap.VerifyBundle |
| Tags | SealedModeEndpoints |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
400 | Bad Request | application/problem+json |
422 | Unprocessable Entity | application/problem+json |
