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.
Execute a governed consultation
const url = 'https://data.example.test/v1/consultations/example/execute';const options = { method: 'POST', headers: { 'Data-Purpose': 'example', 'Registry-Notary-Evaluation-Id': 'example', Authorization: 'Bearer <token>', 'Content-Type': 'application/json' }, body: '{"contract_hash":"sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef","inputs":{"date_of_birth":"1990-04-12","family_name":"Diallo","given_name":"Amina"}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://data.example.test/v1/consultations/example/execute \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'Data-Purpose: example' \ --header 'Registry-Notary-Evaluation-Id: example' \ --data '{ "contract_hash": "sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef", "inputs": { "date_of_birth": "1990-04-12", "family_name": "Diallo", "given_name": "Amina" } }'Executes one exact, purpose-bound, single-subject consultation for the configured authorized OIDC workload with the profile’s exact required scope. The request pins the active contract hash and supplies up to eight typed selector components. Relay returns only the profile-approved outcome, outputs on match, and closed provenance. This route does not accept a subject batch.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Exact consultation profile identifier from the protected contract catalog.
Header Parameters
Section titled “Header Parameters”Purpose of use. The value must match the selected profile’s purpose contract and is handled only inside the consultation authorization boundary.
Canonical uppercase ULID supplied by the authenticated Registry Notary workload to correlate this consultation with its evaluation.
Request Bodyrequired
Section titled “Request Bodyrequired”The exact consultation-v1 request envelope. Contract mismatch fails before source access. The complete encoded request body is limited to 8 KiB.
object
Up to sixteen profile-defined scalar inputs, including one to eight selector-role inputs plus parameter-role inputs. Values are strings, booleans, safe JSON integers, or null where the selected profile permits null. Selector inputs have a 4096-byte aggregate canonical ceiling after profile validation. Every declared input property is required; a nullable parameter is represented by explicit JSON null. Unknown, missing, duplicate, type-mismatched, or non-nullable null inputs fail before source access.
Example
{ "contract_hash": "sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef", "inputs": { "date_of_birth": "1990-04-12", "family_name": "Diallo", "given_name": "Amina" }}Responses
Section titled “Responses”Durably completed consultation result.
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
Example
{ "outcome": "match", "provenance": { "acquisition_class": "source_projected_exact", "consent": { "outcome": "not_required", "revocation_status": "not_applicable" } }, "schema": "registry.relay.consultation-result.v1"}The consultation request is invalid. Stable code: consultation.invalid_request.
object
Example
{ "code": "consultation.invalid_request", "detail": "no credential provided in Authorization or x-api-key header", "request_id": "01ARZ3NDEKTSV4RRFFQ69G5FAV", "status": 400, "title": "Missing credential", "type": "https://id.registrystack.org/problems/registry-relay/auth/missing_credential"}The Registry Notary OIDC credential is missing or invalid. Stable code: auth.invalid_credentials.
object
Example
{ "code": "auth.invalid_credentials", "detail": "no credential provided in Authorization or x-api-key header", "request_id": "01ARZ3NDEKTSV4RRFFQ69G5FAV", "status": 401, "title": "Missing credential", "type": "https://id.registrystack.org/problems/registry-relay/auth/missing_credential"}The authenticated workload is not permitted to perform this consultation. Stable code: consultation.denied.
object
Example
{ "code": "consultation.denied", "detail": "no credential provided in Authorization or x-api-key header", "request_id": "01ARZ3NDEKTSV4RRFFQ69G5FAV", "status": 403, "title": "Missing credential", "type": "https://id.registrystack.org/problems/registry-relay/auth/missing_credential"}The profile id is not visible to this workload. Stable code: consultation.profile_not_found.
object
Example
{ "code": "consultation.profile_not_found", "detail": "no credential provided in Authorization or x-api-key header", "request_id": "01ARZ3NDEKTSV4RRFFQ69G5FAV", "status": 404, "title": "Missing credential", "type": "https://id.registrystack.org/problems/registry-relay/auth/missing_credential"}The pinned contract hash is not active for this profile, or the authenticated Notary batch child identity conflicts with prior durable state.
object
object
Example
{ "code": "consultation.contract_mismatch", "detail": "no credential provided in Authorization or x-api-key header", "request_id": "01ARZ3NDEKTSV4RRFFQ69G5FAV", "status": 409, "title": "Missing credential", "type": "https://id.registrystack.org/problems/registry-relay/auth/missing_credential"}The consultation quota is exhausted. Stable code: consultation.rate_limited.
object
Example
{ "code": "consultation.rate_limited", "detail": "no credential provided in Authorization or x-api-key header", "request_id": "01ARZ3NDEKTSV4RRFFQ69G5FAV", "status": 429, "title": "Missing credential", "type": "https://id.registrystack.org/problems/registry-relay/auth/missing_credential"}Headers
Section titled “Headers”Whole seconds before retrying, bounded by the consultation-v1 public contract.
The consultation cannot be completed safely. Stable code: consultation.unavailable.
object
Example
{ "code": "consultation.unavailable", "detail": "no credential provided in Authorization or x-api-key header", "request_id": "01ARZ3NDEKTSV4RRFFQ69G5FAV", "status": 503, "title": "Missing credential", "type": "https://id.registrystack.org/problems/registry-relay/auth/missing_credential"}