Skip to content
Registry StackDocsv0.20.0

Evidence Gateway errors and problems reference

View as Markdown

Evidence Gateway returns RFC 9457 problem details as application/problem+json. The frozen source contract is products/evidence/contracts/problem-contract.yaml. The generated schema and OpenAPI documents are reproduced from the runtime and must not be edited by hand.

Every problem body has exactly these six members: type, title, status, detail, code, and traceId. detail is static and value-free. It never includes a selector, token, source value, audit operation, or internal failure category. type always begins with https://id.registrystack.org/problems/registry-evidence/.

{
"type": "https://id.registrystack.org/problems/registry-evidence/evidence/unavailable",
"title": "Evidence could not be produced",
"status": 422,
"detail": "evidence could not be produced for this request",
"code": "evidence.unavailable",
"traceId": "4bf92f3577b34da6a3ce929d0e0e4736"
}

Every response carries a W3C traceparent header. For a problem response, its trace identifier is the same value as traceId. Evidence Gateway accepts a valid inbound trace identifier for correlation or mints one, but does not echo tracestate. The trace identifier is not the internal server-minted audit operation identifier. All responses use Cache-Control: no-store.

CodeStatusTitleDetailRecovery
evidence.invalid_request400Evidence request is invalidthe Evidence request is invalidCorrect the request body or headers.
request.selector_invalid400Selector is invalidselector does not match an available request profileFetch authenticated definitions and use an available selector profile.
auth.invalid_credential401Bearer access token is invalidbearer access token validation failedSupply one valid Bearer access token. The response also carries WWW-Authenticate: Bearer realm="registry-evidence".
evidence.denied403Evidence request is not permittedthe Evidence request is not permittedObtain an appropriate entitlement. The response does not identify the failed authorization condition.
resource.not_found404Requested resource was not foundthe requested resource was not foundCheck the route and HTTP method. Unknown paths and unsupported methods use this code.
format.unsupported406Requested format is not supportedthe requested format is not supportedSend one exact supported Accept value.
evidence.unavailable422Evidence could not be producedevidence could not be produced for this requestDo not retry an unchanged request. The service does not disclose whether the cause was no match, ambiguity, a missing fact, or unresolved derivation input.
evidence.rate_limited429Evidence request rate is exhaustedthe Evidence request rate is exhaustedWait one second, as stated in Retry-After: 1, then retry.
source.unavailable503Authoritative source is unavailablethe authoritative source is unavailableRetry with backoff or contact the source operator.
service.unavailable503Service is unavailablethe request could not be servedRetry with backoff or contact the Evidence Gateway operator.

Retry-After is present only on 429 responses.

POST /v1/evidence/batch uses the same outer problem contract for any failure that aborts the batch. Its successful envelope keeps the item discriminator evidence_not_available unchanged for the closed unavailable outcome. It is not the outer evidence.unavailable problem code.

This page transcribes products/evidence/contracts/problem-contract.yaml. The complete generated route mapping is in products/evidence/generated/registry-evidence.openapi.json.