Evidence API Reference

FieldValue
Source specevidence/openapi/v1.json
OpenAPI version3.1.1
API version1.0.0
Operations94
Path filterAll paths

Operations

GET /anchors

PropertyValue
Operation ID-
TagsAnchors
AuthNot declared
Request body-

Responses:

StatusDescriptionContent types
200OKapplication/json
501Not Implementedapplication/json

POST /anchors

PropertyValue
Operation ID-
TagsAnchors
AuthNot declared
Request bodyapplication/*+json, application/json, text/json

Responses:

StatusDescriptionContent types
201Createdapplication/json
400Bad Requestapplication/json
409Conflictapplication/json
501Not Implementedapplication/json

GET /anchors/{anchorId}

PropertyValue
Operation ID-
TagsAnchors
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
anchorIdpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json
400Bad Requestapplication/json
404Not Foundapplication/json
501Not Implementedapplication/json

DELETE /anchors/{anchorId}

PropertyValue
Operation ID-
TagsAnchors
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
anchorIdpathyes

Responses:

StatusDescriptionContent types
204No Contentapplication/json
404Not Foundapplication/json
501Not Implementedapplication/json

PATCH /anchors/{anchorId}

PropertyValue
Operation ID-
TagsAnchors
AuthNot declared
Request bodyapplication/*+json, application/json, text/json

Parameters:

NameInRequiredDescription
anchorIdpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json
404Not Foundapplication/json
501Not Implementedapplication/json

POST /anchors/{anchorId}/revoke-key

PropertyValue
Operation ID-
TagsAnchors
AuthNot declared
Request bodyapplication/*+json, application/json, text/json

Parameters:

NameInRequiredDescription
anchorIdpathyes

Responses:

StatusDescriptionContent types
204No Contentapplication/json
400Bad Requestapplication/json
404Not Foundapplication/json
501Not Implementedapplication/json

GET /api/evidence/v1/attestations

Lists attestation entries inside the authenticated tenant with optional filters and a continuation token. Missing tenant claims fail closed. Requires attest:read or attest:create scope.

PropertyValue
Operation IDListAttestations
TagsStellaOps.Evidence.WebService
AuthNot declared
Request body-

Responses:

StatusDescriptionContent types
200OKapplication/json
400Bad Request-

GET /api/evidence/v1/attestations/{uuid}

Retrieves an attestation entry by UUID, including inclusion proof, checkpoint, artifact metadata, and optional mirror status. Equivalent to the Rekor entry endpoint but accessed by attestor UUID alias. Requires attestor:read scope.

PropertyValue
Operation IDGetAttestationByUuid
TagsStellaOps.Evidence.WebService
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
uuidpathyes
refreshqueryno

Responses:

StatusDescriptionContent types
200OK-

POST /api/evidence/v1/attestations:export

Exports exact retained attestation envelopes inside the authenticated tenant by UUID or filters. Missing tenant claims fail closed. Metadata-only entries explicitly identify unavailable archive bytes. Requires attest:read or attest:create scope.

PropertyValue
Operation IDExportAttestationBundle
TagsStellaOps.Evidence.WebService
AuthNot declared
Request bodyapplication/json

Responses:

StatusDescriptionContent types
200OKapplication/json
400Bad Request-

POST /api/evidence/v1/attestations:export-build

Exports supported build, invocation, configuration-source, and timestamp fields as an unsigned SPDX 3.0.1 Build Profile document. Signing, DSSE, builder, and material mappings return 501 until their live integration is implemented. Requires attest:create scope.

PropertyValue
Operation IDExportSpdx3BuildAttestation
TagsStellaOps.Evidence.WebService
AuthNot declared
Request bodyapplication/json

Responses:

StatusDescriptionContent types
200OKapplication/json
501Not Implementedapplication/problem+json

POST /api/evidence/v1/attestations:import

Imports a portable bundle only inside the authenticated tenant; a foreign-tenant entry refuses the entire package before writes. Reported-CI provenance and Policy release-set verdicts require verified producer admission and cannot use this import path. Returns imported/skipped counts. Requires attest:create scope.

PropertyValue
Operation IDImportAttestationBundle
TagsStellaOps.Evidence.WebService
AuthNot declared
Request bodyapplication/json

Responses:

StatusDescriptionContent types
200OKapplication/json
400Bad Request-
403Forbidden-

POST /api/evidence/v1/attestations:sign

Signs an attestation payload using the configured key; recording is a separate submission. SLSA v1 binds the authenticated producer separately from reported lineage. Policy release-set statements require complete evaluated inputs, the authenticated Policy producer and the existing verdict authority roster. Requires attest:create scope.

PropertyValue
Operation IDSignAttestation
TagsStellaOps.Evidence.WebService
AuthNot declared
Request bodyapplication/json

Responses:

StatusDescriptionContent types
200OKapplication/json
400Bad Request-

POST /api/evidence/v1/attestor/links

Creates and signs an in-toto link metadata object for a named step, including materials, products, command, environment, and return value. Returns the signed DSSE envelope with optional Rekor entry. Requires attestor:write scope.

PropertyValue
Operation IDCreateInTotoLink
TagsStellaOps.Evidence.WebService
AuthNot declared
Request bodyapplication/json

Responses:

StatusDescriptionContent types
200OKapplication/json

POST /api/evidence/v1/bundles/{bundleId}/export

Trigger an async evidence bundle export

Enqueues an asynchronous export job for a specific evidence bundle. Returns 202 Accepted with the export job ID and a status polling URL. Returns 404 if the bundle ID is not registered.

PropertyValue
Operation IDTriggerExport
TagsExport
AuthNot declared
Request bodyapplication/json

Parameters:

NameInRequiredDescription
bundleIdpathyes

Responses:

StatusDescriptionContent types
202Acceptedapplication/json
404Not Found-

GET /api/evidence/v1/bundles/{bundleId}/export/{exportId}

Get export status or download exported bundle

Returns the current status of an evidence bundle export job. Returns 200 with the export manifest when complete, or 202 if the export is still in progress. Returns 404 if the export ID is not found.

PropertyValue
Operation IDGetExportStatus
TagsExport
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
bundleIdpathyes
exportIdpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json
202Accepted-
404Not Found-

GET /api/evidence/v1/bundles/{bundleId}/export/{exportId}/download

Download the exported bundle

Streams the completed evidence bundle as a gzip-compressed archive. Returns 409 Conflict if the export is still in progress. Returns 404 if the export ID is not found.

PropertyValue
Operation IDDownloadExport
TagsExport
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
bundleIdpathyes
exportIdpathyes

Responses:

StatusDescriptionContent types
200OK-
404Not Found-
409Conflict-

GET /api/evidence/v1/evidence

Get evidence home summary and quick links.

Returns an evidence home dashboard summary including quick stats for the last 24 hours/7 days/30 days (new packs, sealed bundles, failed verifications, trust alerts) and lists of latest packs and failed verifications.

PropertyValue
Operation IDGetEvidenceHome
TagsEvidence Audit
AuthNot declared
Request body-

Responses:

StatusDescriptionContent types
200OK-

GET /api/evidence/v1/evidence/by-release/{releaseId}/portable

Resolve a release id to its sealed decision bundle and download the portable, offline-verifiable audit pack.

PropertyValue
Operation IDDownloadPortableEvidenceBundleByRelease
TagsEvidence
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
releaseIdpathyes

Responses:

StatusDescriptionContent types
200OK-
400Bad Requestapplication/json
403Forbiddenapplication/json
404Not Foundapplication/json

POST /api/evidence/v1/evidence/capsules

Create a new (unsealed) decision capsule

Assembles an unsealed capsule manifest from SBOM/reachability/policy/VEX references and returns the content-addressed, deterministic manifest.

PropertyValue
Operation IDCreateCapsule
TagsCapsules
AuthNot declared
Request bodyapplication/json

Responses:

StatusDescriptionContent types
201Createdapplication/json
400Bad Request-
403Forbidden-

GET /api/evidence/v1/evidence/capsules/signing-keys/jwks

Publish the capsule-seal verification key(s) (JWKS) for fully-offline DSSE verification.

Returns the public JSON Web Key Set for the EvidenceLocker capsule-seal signing key(s). An air-gapped operator can verify a sealed decision capsule’s DSSE signature offline against these keys without contacting the stack. During a signing-root rotation the set DUAL-PUBLISHES the retiring and active keys (ADR-028 D3); archived keys retained for immutable / transparency-anchored material remain published verify-only (D2). No private key material is exposed.

PropertyValue
Operation IDGetCapsuleSigningJwks
TagsCapsules
AuthNot declared
Request body-

Responses:

StatusDescriptionContent types
200OK-
503Service Unavailable-

POST /api/evidence/v1/evidence/capsules/tlpt-packs

Assemble and sign a DORA TLPT evidence pack capsule

Assembles a deterministic tlpt-evidence-pack.v1 capsule and records pack hash, signer, retention, capsule, and ledger identifiers in the audit trail.

PropertyValue
Operation IDAssembleTlptEvidencePack
TagsCapsules
AuthNot declared
Request bodyapplication/json

Responses:

StatusDescriptionContent types
201Createdapplication/json
400Bad Request-
403Forbidden-
500Internal Server Error-

GET /api/evidence/v1/evidence/capsules/{capsuleId}

Get a decision capsule by id from the EvidenceLocker capsule store

Returns the sealed/unsealed decision capsule (manifest, signing status, sealed-at, verification memory, retention) from evidence_locker.decision_capsules. Returns 404 (never 500) for an unknown id. This is the capsule-native read the console capsule route must use instead of the AdvisoryAI evidence-pack store.

PropertyValue
Operation IDGetCapsule
TagsCapsules
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
capsuleIdpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json
400Bad Request-
403Forbidden-
404Not Found-

POST /api/evidence/v1/evidence/capsules/{capsuleId}/export

Export a capsule as a downloadable zip bundle

Produces a zip containing manifest.json, manifest.dsse.json (if sealed), assembly-inputs.json, and metadata.json.

PropertyValue
Operation IDExportCapsule
TagsCapsules
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
capsuleIdpathyes

Responses:

StatusDescriptionContent types
200OK-
400Bad Request-
403Forbidden-
404Not Found-

POST /api/evidence/v1/evidence/capsules/{capsuleId}/replay

Reconstruct the verdict from a sealed capsule

Reads back the sealed manifest, recomputes the content hash, and returns the reconstructed verdict and summary.

PropertyValue
Operation IDReplayCapsule
TagsCapsules
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
capsuleIdpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json
400Bad Request-
403Forbidden-
404Not Found-

POST /api/evidence/v1/evidence/capsules/{capsuleId}/seal

Seal a capsule by signing its canonical manifest

Canonicalises the capsule manifest and produces a DSSE envelope via the registered signer. Gracefully degrades to an unsigned sealed capsule when no signer is available.

PropertyValue
Operation IDSealCapsule
TagsCapsules
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
capsuleIdpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json
400Bad Request-
403Forbidden-
404Not Found-

POST /api/evidence/v1/evidence/capsules/{capsuleId}/verify

Verify a sealed capsule’s content hash and DSSE signature

Recomputes the canonical content hash and validates the DSSE envelope (when present). Returns a structured verdict.

PropertyValue
Operation IDVerifyCapsule
TagsCapsules
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
capsuleIdpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json
400Bad Request-
403Forbidden-
404Not Found-

POST /api/evidence/v1/evidence/hold/{caseId}

Create a legal hold for the specified case identifier.

PropertyValue
Operation IDCreateEvidenceHold
TagsEvidence
AuthNot declared
Request bodyapplication/json

Parameters:

NameInRequiredDescription
caseIdpathyes

Responses:

StatusDescriptionContent types
201Createdapplication/json
400Bad Requestapplication/json
403Forbiddenapplication/json

POST /api/evidence/v1/evidence/legacy-capsule-erasure-refusals/{actorRef}

Evaluate immutable legacy capsules after mutable actor erasure.

PropertyValue
Operation IDRefuseLegacyCapsuleErasure
TagsEvidence
AuthNot declared
Request bodyapplication/json

Parameters:

NameInRequiredDescription
actorRefpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json
400Bad Requestapplication/problem+json
401Unauthorized-
403Forbidden-

GET /api/evidence/v1/evidence/packs

List evidence packs.

Lists all registered evidence packs for the authenticated tenant, with release ID, environment, bundle version, seal status, and creation timestamp.

PropertyValue
Operation IDListEvidencePacks
TagsEvidence Audit
AuthNot declared
Request body-

Responses:

StatusDescriptionContent types
200OK-

GET /api/evidence/v1/evidence/packs/{id}

Get evidence pack detail.

Returns the full detail record for a tenant-owned evidence pack including all artifact references, promotion run ID, manifest digest, release decision, and proof chain ID. Returns 404 if the pack ID is not registered for the authenticated tenant.

PropertyValue
Operation IDGetEvidencePack
TagsEvidence Audit
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
idpathyes

Responses:

StatusDescriptionContent types
200OK-

POST /api/evidence/v1/evidence/qa/assurance-cases/{caseId}/readback-import

QA-only case-bound readback/import proof for evidence-pack-golden-assurance-001; does not claim legal compliance, regulator submission, or live external verification.

PropertyValue
Operation IDImportQaAssuranceCaseReadback
TagsEvidence QA
AuthNot declared
Request bodyapplication/json

Parameters:

NameInRequiredDescription
caseIdpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json
400Bad Requestapplication/json
403Forbiddenapplication/json

GET /api/evidence/v1/evidence/score

Get deterministic evidence score by artifact identifier.

PropertyValue
Operation IDGetEvidenceScore
TagsEvidence
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
artifact_idqueryyes

Responses:

StatusDescriptionContent types
200OKapplication/json
400Bad Requestapplication/json
403Forbiddenapplication/json
404Not Foundapplication/json

POST /api/evidence/v1/evidence/snapshot

Create a new evidence snapshot for the tenant.

Seal the supplied material digests and metadata as a new evidence bundle (201). With an Idempotency-Key header (letters, digits, ‘.’, ‘_’, ‘-’, ‘:’; at most 200 characters) the request is bound to that key in the caller’s tenant: a retry with the same key and request returns the first bundle, root hash and stored signature (200, replayed: true) without sealing another bundle; the same key with a different request is refused (409 idempotency_key_conflict) and the first bundle is unchanged. Keys of another tenant are never visible. Without the header every request seals a new bundle.

PropertyValue
Operation IDCreateEvidenceSnapshot
TagsEvidence
AuthNot declared
Request bodyapplication/json

Parameters:

NameInRequiredDescription
Idempotency-Keyheaderno

Responses:

StatusDescriptionContent types
200OKapplication/json
201Createdapplication/json
400Bad Requestapplication/json
403Forbiddenapplication/json
409Conflictapplication/json

GET /api/evidence/v1/evidence/thread

List evidence threads matching a PURL

Lists all Artifact Canonical Records whose PURL matches the provided query parameter. Returns a paginated summary with per-thread attestation counts. The purl parameter is required.

PropertyValue
Operation IDListEvidenceThreads
TagsEvidence Threads
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
purlqueryno

Responses:

StatusDescriptionContent types
200OKapplication/json
400Bad Request-
500Internal Server Error-

GET /api/evidence/v1/evidence/thread/{canonicalId}

Retrieve the evidence thread for an artifact by canonical_id

Returns the Artifact Canonical Record for an artifact identified by its canonical ID, including format, artifact digest, PURL, and associated DSSE attestations ordered by signing timestamp. Use include_attestations=false to suppress the attestation list.

PropertyValue
Operation IDGetEvidenceThread
TagsEvidence Threads
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
canonicalIdpathyes
include_attestationsqueryno

Responses:

StatusDescriptionContent types
200OKapplication/json
404Not Found-
500Internal Server Error-

POST /api/evidence/v1/evidence/verify

PropertyValue
Operation IDVerifyEvidenceBundle
TagsEvidence
AuthNot declared
Request bodyapplication/json

Responses:

StatusDescriptionContent types
200OKapplication/json
403Forbiddenapplication/json

GET /api/evidence/v1/evidence/{bundleId}

PropertyValue
Operation IDGetEvidenceBundle
TagsEvidence
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
bundleIdpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json
403Forbiddenapplication/json
404Not Foundapplication/json

GET /api/evidence/v1/evidence/{bundleId}/chain

Walk the supersede chain for an evidence bundle, oldest-first.

PropertyValue
Operation IDGetEvidenceBundleChain
TagsEvidence
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
bundleIdpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json
403Forbiddenapplication/json
404Not Foundapplication/json

GET /api/evidence/v1/evidence/{bundleId}/download

PropertyValue
Operation IDDownloadEvidenceBundle
TagsEvidence
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
bundleIdpathyes

Responses:

StatusDescriptionContent types
200OK-
400Bad Requestapplication/json
403Forbiddenapplication/json
404Not Foundapplication/json

GET /api/evidence/v1/evidence/{bundleId}/portable

Download a sealed, portable evidence bundle for sealed or air-gapped distribution.

PropertyValue
Operation IDDownloadPortableEvidenceBundle
TagsEvidence
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
bundleIdpathyes

Responses:

StatusDescriptionContent types
200OK-
400Bad Requestapplication/json
403Forbiddenapplication/json
404Not Foundapplication/json

GET /api/evidence/v1/proofs/id/{proofId}

PropertyValue
Operation ID-
TagsProofChain
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
proofIdpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json, text/json, text/plain
404Not Foundapplication/json, text/json, text/plain

GET /api/evidence/v1/proofs/id/{proofId}/verify

PropertyValue
Operation ID-
TagsProofChain
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
proofIdpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json, text/json, text/plain
400Bad Requestapplication/json, text/json, text/plain
404Not Foundapplication/json, text/json, text/plain

GET /api/evidence/v1/proofs/{subjectDigest}

PropertyValue
Operation ID-
TagsProofChain
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
subjectDigestpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json, text/json, text/plain
400Bad Requestapplication/json, text/json, text/plain
404Not Foundapplication/json, text/json, text/plain

GET /api/evidence/v1/proofs/{subjectDigest}/chain

PropertyValue
Operation ID-
TagsProofChain
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
subjectDigestpathyes
maxDepthqueryno

Responses:

StatusDescriptionContent types
200OKapplication/json, text/json, text/plain
400Bad Requestapplication/json, text/json, text/plain
404Not Foundapplication/json, text/json, text/plain

GET /api/evidence/v1/regulatory/artifact-ledger

Query tenant-scoped regulatory artifact ledger records

Returns EvidenceLocker-owned regulatory artifact ledger records for tenant/regime/artifact-type/year lookups. Use requireMatch=true when the caller needs fail-closed lookup semantics.

PropertyValue
Operation IDQueryRegulatoryArtifactLedger
TagsRegulatory Artifact Ledger
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
artifactTypequeryno
cursorqueryno
limitqueryno
regimequeryno
reportingYearqueryno
requireMatchqueryno

Responses:

StatusDescriptionContent types
200OKapplication/json
400Bad Requestapplication/json
404Not Foundapplication/json

POST /api/evidence/v1/rekor/entries

Submits an attestation entry to the configured transparency log under the authenticated tenant. SLSA provenance and Policy release-set statements require configured signature verification and exportable archive bytes before success. Returns UUID, log index and inclusion proof. Requires attest:create scope.

PropertyValue
Operation IDSubmitRekorEntry
TagsStellaOps.Evidence.WebService
AuthNot declared
Request bodyapplication/json

Responses:

StatusDescriptionContent types
200OK-

POST /api/evidence/v1/rekor/entries/proof-backfill

Re-derive and persist oriented inclusion proofs for existing included entries so pre-orientation-fix entries verify without ?refresh=true. Requires attestor:write scope.

PropertyValue
Operation IDBackfillInclusionProofs
TagsStellaOps.Evidence.WebService
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
maxEntriesqueryno

Responses:

StatusDescriptionContent types
200OK-

GET /api/evidence/v1/rekor/entries/{uuid}

Retrieves a Rekor transparency log entry by UUID, including inclusion proof, checkpoint, and artifact metadata. Set refresh=true to bypass cache and fetch the latest state from Rekor. Requires attestor:read scope.

PropertyValue
Operation IDGetRekorEntry
TagsStellaOps.Evidence.WebService
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
uuidpathyes
refreshqueryno

Responses:

StatusDescriptionContent types
200OK-

POST /api/evidence/v1/rekor/verify

Verifies an attestation against the Rekor transparency log, checking inclusion proof, checkpoint consistency, and signature validity. Returns a structured verification result with per-check diagnostics. Requires attestor:verify scope.

PropertyValue
Operation IDVerifyRekorEntry
TagsStellaOps.Evidence.WebService
AuthNot declared
Request bodyapplication/json

Responses:

StatusDescriptionContent types
200OK-

POST /api/evidence/v1/rekor/verify:bulk

Enqueues a bulk attestation verification job for processing multiple entries asynchronously. Returns 202 Accepted with the job ID and a polling URL. Queue depth is enforced by quota configuration. Requires attestor:write scope.

PropertyValue
Operation IDCreateBulkVerificationJob
TagsStellaOps.Evidence.WebService
AuthNot declared
Request bodyapplication/json

Responses:

StatusDescriptionContent types
200OK-

GET /api/evidence/v1/rekor/verify:bulk/{jobId}

Returns the current status and results of a bulk attestation verification job by job ID. The job is only visible to the principal that submitted it. Returns 404 for unknown or unauthorized job IDs. Requires attestor:write scope.

PropertyValue
Operation IDGetBulkVerificationJob
TagsStellaOps.Evidence.WebService
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
jobIdpathyes

Responses:

StatusDescriptionContent types
200OK-

GET /api/evidence/v1/runs/{runId}/verdicts

List verdict attestations for a policy run

Lists all verdict attestations associated with a specific policy run ID. Returns a paginated collection ordered by creation time. Returns 404 if the run ID is not found.

PropertyValue
Operation IDListVerdictsForRun
TagsVerdicts
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
runIdpathyes
limitqueryno
offsetqueryno
severityqueryno
statusqueryno

Responses:

StatusDescriptionContent types
200OKapplication/json
404Not Found-
500Internal Server Error-

GET /api/evidence/v1/timestamp-assurance/evidence/{bundleId}

One capsule’s stored-timestamp facts and its local evidentiary classification, for the caller’s tenant. Requires evidence:read.

PropertyValue
Operation IDGetTimestampAssuranceEvidence
TagsTimestampAssurance
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
bundleIdpathyes

Responses:

StatusDescriptionContent types
200OK-

GET /api/evidence/v1/timestamp-assurance/providers

Configured timestamp providers: ids, endpoint hosts, requirement and whether a credential reference is configured — never the credential. Requires ops.health.

PropertyValue
Operation IDGetTimestampAssuranceProviders
TagsTimestampAssurance
AuthNot declared
Request body-

Responses:

StatusDescriptionContent types
200OK-

POST /api/evidence/v1/timestamp-assurance/runs

Evaluates the five tenant-scoped Timestamp Assurance checks over the caller’s tenant now and records the run durably; idempotent on idempotencyKey. Requires evidence:create.

PropertyValue
Operation IDRequestTimestampAssuranceRun
TagsTimestampAssurance
AuthNot declared
Request bodyapplication/json

Responses:

StatusDescriptionContent types
200OK-

GET /api/evidence/v1/timestamp-assurance/runs/{runId}

One durable Timestamp Assurance run of the caller’s tenant. Requires evidence:read.

PropertyValue
Operation IDGetTimestampAssuranceRun
TagsTimestampAssurance
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
runIdpathyes

Responses:

StatusDescriptionContent types
200OK-

GET /api/evidence/v1/timestamp-assurance/status

Latest five tenant-scoped Timestamp Assurance results for the caller’s tenant plus a bounded installation posture. Requires evidence:read.

PropertyValue
Operation IDGetTimestampAssuranceStatus
TagsTimestampAssurance
AuthNot declared
Request body-

Responses:

StatusDescriptionContent types
200OK-

GET /api/evidence/v1/transparency/exchange/batches

Lists manual schedule/import and connected-sync batch status metadata without returning package bytes. Requires attestor:read scope.

PropertyValue
Operation IDListTransparencyExchangeBatches
TagsStellaOps.Evidence.WebService
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
directionqueryno
limitqueryno
manifestDigestqueryno
operatorLabelqueryno
targetIdqueryno

Responses:

StatusDescriptionContent types
200OKapplication/json
400Bad Request-

GET /api/evidence/v1/transparency/exchange/batches/{batchId}

Gets manual schedule/import or connected-sync batch status metadata by batch id. Requires attestor:read scope.

PropertyValue
Operation IDGetTransparencyExchangeBatch
TagsStellaOps.Evidence.WebService
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
batchIdpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json
404Not Found-

POST /api/evidence/v1/transparency/exchange/imports:apply

Validates and applies a returned external transparency import file, attaching mirror receipts only to matching local entries. Requires attestor:write scope.

PropertyValue
Operation IDApplyTransparencyExchangeImport
TagsStellaOps.Evidence.WebService
AuthNot declared
Request bodyapplication/json

Responses:

StatusDescriptionContent types
200OKapplication/json
400Bad Request-

POST /api/evidence/v1/transparency/exchange/imports:validate

Validates a returned external transparency import file before sealed-site apply. Requires attestor:write scope.

PropertyValue
Operation IDValidateTransparencyExchangeImport
TagsStellaOps.Evidence.WebService
AuthNot declared
Request bodyapplication/json

Responses:

StatusDescriptionContent types
200OKapplication/json
400Bad Request-

POST /api/evidence/v1/transparency/exchange/relay-imports

Validates a schedule file and produces a deterministic signed import file containing external mirror receipts. Requires attestor:write scope.

PropertyValue
Operation IDCreateTransparencyExchangeRelayImport
TagsStellaOps.Evidence.WebService
AuthNot declared
Request bodyapplication/json

Responses:

StatusDescriptionContent types
200OKapplication/json
400Bad Request-

POST /api/evidence/v1/transparency/exchange/schedules

Creates a deterministic manual schedule file for sealed-site external transparency mirror exchange. Requires attestor:write scope.

PropertyValue
Operation IDCreateTransparencyExchangeSchedule
TagsStellaOps.Evidence.WebService
AuthNot declared
Request bodyapplication/json

Responses:

StatusDescriptionContent types
200OKapplication/json
400Bad Request-

GET /api/evidence/v1/transparency/external-sync/reports

Lists connected-window external transparency sync reports for CLI/UI readback. Requires attestor:read scope.

PropertyValue
Operation IDListExternalTransparencySyncReports
TagsStellaOps.Evidence.WebService
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
limitqueryno
operatorLabelqueryno
targetIdqueryno
targetNamequeryno

Responses:

StatusDescriptionContent types
200OKapplication/json
404Not Found-

GET /api/evidence/v1/transparency/external-sync/reports/{batchId}

Gets one connected-window external transparency sync report by batch id. Requires attestor:read scope.

PropertyValue
Operation IDGetExternalTransparencySyncReport
TagsStellaOps.Evidence.WebService
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
batchIdpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json
404Not Found-

POST /api/evidence/v1/transparency/external-sync:run

Runs a bounded connected-window sync from Stella local transparency receipts to configured external Rekor-compatible mirror targets. The worker remains separately disabled unless explicitly enabled. Requires attestor:write scope.

PropertyValue
Operation IDRunExternalTransparencySync
TagsStellaOps.Evidence.WebService
AuthNot declared
Request bodyapplication/json

Responses:

StatusDescriptionContent types
200OKapplication/json
409Conflict-

GET /api/evidence/v1/transparency/local

Returns the installation-wide state of the Stella local transparency log: enabled, origin, log URL, whether checkpoints are signed, tree size and last checkpoint time. The additive externalSync block reports whether external sync is enabled and the caller tenant’s enabled external mirror target count; it never changes the local state. A store failure answers 503, never a disabled log. Requires attestor:read scope.

PropertyValue
Operation IDGetLocalTransparencyLogState
TagsStellaOps.Evidence.WebService
AuthNot declared
Request body-

Responses:

StatusDescriptionContent types
200OKapplication/json
400Bad Requestapplication/problem+json
503Service Unavailableapplication/problem+json

GET /api/evidence/v1/transparency/targets

Lists operator-approved external transparency mirror targets with per-target status. Requires attestor:read scope.

PropertyValue
Operation IDListExternalTransparencyTargets
TagsStellaOps.Evidence.WebService
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
enabledqueryno

Responses:

StatusDescriptionContent types
200OKapplication/json

POST /api/evidence/v1/transparency/targets

Creates or updates an operator-approved external transparency target. The API stores only endpoint metadata and secret references, never raw credentials. Requires attestor:write scope.

PropertyValue
Operation IDUpsertExternalTransparencyTarget
TagsStellaOps.Evidence.WebService
AuthNot declared
Request bodyapplication/json

Responses:

StatusDescriptionContent types
200OKapplication/json
400Bad Request-

GET /api/evidence/v1/transparency/targets/{targetId}

Gets one external transparency mirror target with status counters and last error metadata. Requires attestor:read scope.

PropertyValue
Operation IDGetExternalTransparencyTarget
TagsStellaOps.Evidence.WebService
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
targetIdpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json
404Not Found-

POST /api/evidence/v1/transparency/targets/{targetId}:disable

Disables an existing external transparency target. Existing local transparency receipts remain authoritative. Requires attestor:write scope.

PropertyValue
Operation IDDisableExternalTransparencyTarget
TagsStellaOps.Evidence.WebService
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
targetIdpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json
404Not Found-

POST /api/evidence/v1/transparency/targets/{targetId}:enable

Enables an existing external transparency target for connected sync or manual exchange selection. Requires attestor:write scope.

PropertyValue
Operation IDEnableExternalTransparencyTarget
TagsStellaOps.Evidence.WebService
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
targetIdpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json
404Not Found-

POST /api/evidence/v1/verdicts

Store a verdict attestation

Persists a verdict attestation record, including the policy run ID, policy ID, finding ID, decision, and DSSE envelope. Returns the stored verdict ID and creation timestamp. Requires write authorization.

PropertyValue
Operation IDStoreVerdict
TagsVerdicts
AuthNot declared
Request bodyapplication/json

Responses:

StatusDescriptionContent types
201Createdapplication/json
400Bad Request-
500Internal Server Error-

GET /api/evidence/v1/verdicts/{verdictId}

Retrieve a verdict attestation by ID

Returns the full verdict attestation record for the given verdict ID, including policy metadata, finding reference, decision, and the DSSE envelope. Returns 404 if the verdict ID is not found.

PropertyValue
Operation IDGetVerdict
TagsVerdicts
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
verdictIdpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json
404Not Found-
500Internal Server Error-

GET /api/evidence/v1/verdicts/{verdictId}/envelope

Download DSSE envelope for verdict

Returns the raw DSSE envelope JSON for a specific verdict attestation. Used to retrieve the full envelope for offline verification or replay. Returns 404 if the verdict ID is not found.

PropertyValue
Operation IDDownloadEnvelope
TagsVerdicts
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
verdictIdpathyes

Responses:

StatusDescriptionContent types
200OK-
404Not Found-
500Internal Server Error-

POST /api/evidence/v1/verdicts/{verdictId}/verify

Verify verdict attestation signature

Verifies the DSSE envelope signature of a verdict attestation, confirming the signing key ID and signature integrity. Returns a structured result with isValid flag and per-step diagnostics. Returns 404 if the verdict ID is not found.

PropertyValue
Operation IDVerifyVerdict
TagsVerdicts
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
verdictIdpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json
404Not Found-
500Internal Server Error-

GET /api/evidence/v1/watchlist

List watchlist entries

Returns all watchlist entries for the tenant, optionally including global entries.

PropertyValue
Operation ID-
TagsWatchlist
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
includeGlobalqueryno

Responses:

StatusDescriptionContent types
200OKapplication/json

POST /api/evidence/v1/watchlist

Create watchlist entry

Creates a new watchlist entry for monitoring identity appearances.

PropertyValue
Operation ID-
TagsWatchlist
AuthNot declared
Request bodyapplication/json

Responses:

StatusDescriptionContent types
201Createdapplication/json
400Bad Requestapplication/json

GET /api/evidence/v1/watchlist/{id}

Get watchlist entry

Returns a single watchlist entry by ID.

PropertyValue
Operation ID-
TagsWatchlist
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
idpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json
404Not Found-

PUT /api/evidence/v1/watchlist/{id}

Update watchlist entry

Updates an existing watchlist entry.

PropertyValue
Operation ID-
TagsWatchlist
AuthNot declared
Request bodyapplication/json

Parameters:

NameInRequiredDescription
idpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json
400Bad Requestapplication/json
404Not Found-

DELETE /api/evidence/v1/watchlist/{id}

Delete watchlist entry

Deletes a watchlist entry.

PropertyValue
Operation ID-
TagsWatchlist
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
idpathyes

Responses:

StatusDescriptionContent types
204No Content-
404Not Found-

POST /api/evidence/v1/watchlist/{id}/test

Test watchlist pattern

Tests if a sample identity matches the watchlist entry pattern.

PropertyValue
Operation ID-
TagsWatchlist
AuthNot declared
Request bodyapplication/json

Parameters:

NameInRequiredDescription
idpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json
404Not Found-

GET /api/v1/attestor/predicates

List all registered predicate types

Returns a paginated list of registered in-toto predicate type schemas from the registry, with optional filters by category and active status. Used to discover supported predicate URIs for attestation creation.

PropertyValue
Operation IDListPredicateTypes
TagsPredicate Registry
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
categoryqueryno
isActivequeryno
limitqueryno
offsetqueryno

Responses:

StatusDescriptionContent types
200OKapplication/json

GET /api/v1/attestor/predicates/{uri}

Get predicate type schema by URI

Retrieves the full schema definition for a predicate type identified by its URI. The URI must be URL-encoded when passed as a path segment. Returns 404 if the predicate type is not registered.

PropertyValue
Operation IDGetPredicateType
TagsPredicate Registry
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
uripathyes

Responses:

StatusDescriptionContent types
200OKapplication/json
404Not Found-

GET /doctor/evidence/checks

PropertyValue
Operation ID-
TagsStellaOps.Evidence.WebService
AuthNot declared
Request body-

Responses:

StatusDescriptionContent types
200OK-

GET /health/ready

PropertyValue
Operation ID-
TagsStellaOps.Evidence.WebService
AuthNot declared
Request body-

Responses:

StatusDescriptionContent types
200OK-

POST /internal/api/v1/attestations/verdict

PropertyValue
Operation ID-
TagsVerdict
AuthNot declared
Request bodyapplication/*+json, application/json, text/json

Responses:

StatusDescriptionContent types
201Createdapplication/json
400Bad Requestapplication/json
500Internal Server Errorapplication/json
501Not Implementedapplication/json
503Service Unavailableapplication/json

GET /proofs/{entry}/receipt

PropertyValue
Operation ID-
TagsProofs
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
entrypathyes

Responses:

StatusDescriptionContent types
200OKapplication/problem+json
404Not Foundapplication/problem+json
501Not Implementedapplication/problem+json

GET /proofs/{entry}/spine

PropertyValue
Operation ID-
TagsProofs
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
entrypathyes

Responses:

StatusDescriptionContent types
200OKapplication/problem+json
404Not Foundapplication/problem+json
501Not Implementedapplication/problem+json

POST /proofs/{entry}/spine

PropertyValue
Operation ID-
TagsProofs
AuthNot declared
Request bodyapplication/*+json, application/json, text/json

Parameters:

NameInRequiredDescription
entrypathyes

Responses:

StatusDescriptionContent types
201Createdapplication/problem+json
400Bad Requestapplication/problem+json
404Not Foundapplication/problem+json
422Unprocessable Entityapplication/problem+json
501Not Implementedapplication/problem+json

GET /proofs/{entry}/vex

PropertyValue
Operation ID-
TagsProofs
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
entrypathyes

Responses:

StatusDescriptionContent types
200OKapplication/problem+json
404Not Foundapplication/problem+json
501Not Implementedapplication/problem+json

GET /verify/envelope/{envelopeHash}

PropertyValue
Operation ID-
TagsVerify
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
envelopeHashpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json
404Not Foundapplication/json
501Not Implementedapplication/json

GET /verify/rekor/{envelopeHash}

PropertyValue
Operation ID-
TagsVerify
AuthNot declared
Request body-

Parameters:

NameInRequiredDescription
envelopeHashpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json
404Not Foundapplication/json
501Not Implementedapplication/json

POST /verify/{proofBundleId}

PropertyValue
Operation ID-
TagsVerify
AuthNot declared
Request bodyapplication/*+json, application/json, text/json

Parameters:

NameInRequiredDescription
proofBundleIdpathyes

Responses:

StatusDescriptionContent types
200OKapplication/json
400Bad Requestapplication/json
404Not Foundapplication/json
501Not Implementedapplication/json