Audit Verification

Verify a decision chain

Re-verifies an entire decision chain: the prev_hash linkage across all of its records (ordering / completeness) and every per-record Ed25519 signature (authorship). Read-only; never mutates the chain.

The chain is resolved by id only within the authenticated caller's organization (RLS-scoped); the org is taken from the request credentials, never from a path or query parameter. chainID is the decision id (a UUID).

Inspect authorship_proven for the strong non-repudiation claim (every record signed and all signatures + linkage verify). valid only means no integrity violation was detected and can be true for a chain with zero signed records, so do not gate non-repudiation on valid alone.

Authority (#2914). Authentication alone is not enough: this route requires COMPLIANCE READ AUTHORITY over the organization. Present a validated per-user token (X-User-Token, or Authorization: Bearer) whose role is admin, owner or policy_admin, or call from an internal service asserting X-Axonflow-Admin-Authority: true. A Community-mode deployment is exempt: it has no authentication and resolves every caller to one local operator. Anything else is 403.

Community SaaS (try.getaxonflow.com) refuses these routes, by design. The hosted evaluation stack runs with authentication enabled, so the Community-mode exemption above does not apply to it, and its evaluator accounts hold no entitled role. Verification there is a 403. Granting evaluators access would widen, on a public shared stack, the exact exposure this change closes. Verify audit records on a deployment you operate.

get/api/v1/audit/chains/{chainID}/verify

Request

Path parameters

chainIDstring uuid required

Decision chain id (the decision UUID)

Headers

Authorizationstring required
Example:Basic bXktb3JnOkFYT04tVjIteHh4

OAuth2-style Basic authentication header. Format: Basic base64(clientId:clientSecret)

  • clientId: Your organization identifier (required)
  • clientSecret: Authentication credential (optional for community mode)

Not required when DEPLOYMENT_MODE=community.

Response

Verification result (the chain exists in your organization)

chain_idstring uuid required
org_idstring required
total_recordsinteger required
validboolean required

True when no integrity violation was detected (linkage holds and every signature that exists verifies). Can be true for a chain with zero signed records. Use authorship_proven for the strong claim.

authorship_provenboolean required

True only when every record is signed AND all signatures + linkage verify. Gate non-repudiation on this flag.

linkage_validboolean required
signatures_validboolean required
signed_recordsinteger
unsigned_recordsinteger
first_broken_seqinteger

Sequence of the first detected break (omitted when valid).

first_broken_record_idstring

Record id of the first detected break (omitted when valid).

break_reasonstring

Why the chain broke (omitted when valid).

signing_key_idstring

Identifier of the tracker's current signing key.

public_keystring

Base64 Ed25519 public key for offline re-verification.

verified_atstring date-time required

Changes

No recorded changes to this operation across all 1 revision of this API.