Preview release.These docs are a work in progress. Pages are still being written, links may break, and structure may shift without notice. Treat everything here as a draft and report issues onGitHub.
Read redacted runtime posture
GET
/admin/v1/posture
const url = 'https://example.com/admin/v1/posture?tier=default';const options = {method: 'GET', headers: {'X-Api-Key': '<X-Api-Key>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://example.com/admin/v1/posture?tier=default' \ --header 'X-Api-Key: <X-Api-Key>'Returns redacted runtime posture for the requested tier. The response body is a registry.ops.posture.v1 document describing instance, configuration, notary, deployment, and audit posture.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”tier
string
Redaction tier for the posture document. Defaults to default.
Responses
Section titled “Responses”Redacted posture for the requested tier
Media typeapplication/json
Example
{ "audit": { "anchoring": "none", "checkpoints": "unsupported", "hash_chain": "process_local", "keyed_integrity": "hmac", "redaction_mode": "redacted", "retention_owner": "operator", "sink_class": "file", "write_policy": "fail_closed_route_families" }, "build": { "package": "registry-notary", "version": "0.1.0" }, "component": "registry-notary", "configuration": { "dynamic_reload_supported": false, "last_apply_at": null, "last_apply_result": null, "last_bundle_id": null, "last_bundle_sequence": null, "last_bundle_signer_kids": [], "last_config_hash": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "restart_required": false, "source": "local_file" }, "deployment": { "findings": [], "profile": "production" }, "instance": { "environment": "production", "id": "civil-notary-prod", "jurisdiction": "example-country", "owner": "Ministry of Interior" }, "notary": { "claim_count": 6, "credential_profile_count": 2, "credential_status": { "enabled": true, "storage": "redis" }, "federation": { "allowed_profile_count": 3, "allowed_purpose_count": 4, "enabled": true, "peer_count": 2, "supported_protocol_versions": [ "registry-notary-federation/v0.1" ] }, "oid4vci": { "credential_configuration_count": 1, "enabled": true }, "replay": { "ready": true, "storage": "redis" }, "self_attestation": { "allowed_claim_count": 1, "allowed_purpose_count": 1, "credential_profile_count": 1, "enabled": true, "rate_limit_mode": "in_process", "wallet_origin_count": 1 }, "source_connection_counts": { "http": 2, "postgres": 1 } }, "observed_at": "2026-06-04T10:00:00Z", "posture": { "audit": { "checkpoint_status": "unavailable", "configured": true, "latest_sequence": null, "latest_tail_hash": null, "shipping_health": "ok", "shipping_observed_at": "2026-06-04T09:59:00Z", "shipping_target": "declared_external", "shipping_target_configured": true, "sink_type": "file", "verification_status": "not_supported", "verified_at": null }, "findings": [], "warnings": [] }, "runtime": { "admin_enabled": true, "auth_mode": "oidc", "readiness": "ready" }, "schema": "registry.ops.posture.v1", "standards_artifacts": { "evidence_service_discovery": { "media_type": "application/json", "observed_status": "available" }, "jwks": { "media_type": "application/jwk-set+json", "observed_status": "available" } }, "tier": "default"}Posture tier is invalid
Media typeapplication/problem+json
object
code
required
string
detail
required
string
request_id
required
string
status
required
integer format: int32
title
required
string
type
required
string format: uri
key
additional properties
any
Example
{ "code": "registry.admin.posture.invalid_tier", "detail": "posture tier must be default or restricted", "message": "posture tier must be default or restricted", "schema": "registry.admin.error.v1", "status": 400, "title": "Admin posture tier invalid", "type": "https://id.registrystack.org/problems/registry-notary/registry/admin/posture/invalid_tier"}Missing or invalid credential
Media typeapplication/problem+json
object
code
required
string
detail
required
string
request_id
required
string
status
required
integer format: int32
title
required
string
type
required
string format: uri
key
additional properties
any
Example
{ "code": "auth.missing_credential", "detail": "missing authentication credential", "status": 401, "title": "Missing credential", "type": "https://id.registrystack.org/problems/registry-notary/auth/missing_credential"}Caller lacks registry_notary:ops_read scope
Media typeapplication/problem+json
object
code
required
string
detail
required
string
request_id
required
string
status
required
integer format: int32
title
required
string
type
required
string format: uri
key
additional properties
any
Example
{ "code": "auth.scope_denied", "detail": "missing required scope", "status": 403, "title": "Scope denied", "type": "https://id.registrystack.org/problems/registry-notary/auth/scope_denied"}Posture could not be filtered for the requested tier
Media typeapplication/problem+json
object
code
required
string
detail
required
string
request_id
required
string
status
required
integer format: int32
title
required
string
type
required
string format: uri
key
additional properties
any
Example
{ "code": "posture.filter_failed", "detail": "admin posture could not be filtered for the requested tier", "status": 500, "title": "Admin posture unavailable", "type": "https://id.registrystack.org/problems/registry-notary/posture/filter_failed"}Posture state is unavailable
Media typeapplication/problem+json
object
code
required
string
detail
required
string
request_id
required
string
status
required
integer format: int32
title
required
string
type
required
string format: uri
key
additional properties
any
Example
{ "code": "posture.unavailable", "detail": "posture state is unavailable", "message": "posture state is unavailable", "schema": "registry.admin.error.v1", "status": 503, "title": "Admin posture unavailable", "type": "https://id.registrystack.org/problems/registry-notary/posture/unavailable"}