API REFERENCE

Complete API Documentation

Every programming interface in one place: GHARRA REST API (OpenAPI 3.0), Nexus A2A JSON-RPC 2.0, Model Context Protocol (MCP) tools, and the Python SDK. Built from the live specs.

Authentication Guide Developer Hub
GHARRA REST API

Base URL: https://registry.symphonix.health/v1 — OpenAPI 3.0.3 — Auth: JWT / mTLS / DPoP

Well-Known

GHARRA server configuration metadata, following RFC 8414 / RFC 9728 patterns.

GET /.well-known/gharra-configuration

Returns signed configuration metadata for this GHARRA instance, including API endpoints, supported auth methods, and JWS-signed metadata.

No authentication required

Response 200
{
  "issuer": "https://registry.symphonix.health",
  "registry_id": "gharra://GB/registries/nhs-spine",
  "tier": "sovereign",
  "jurisdiction": "GB",
  "api_base_url": "https://registry.symphonix.health/v1",
  "jwks_uri": "https://registry.symphonix.health/.well-known/jwks.json",
  "registration_endpoint": "/v1/agents",
  "discovery_endpoint": "/v1/discover",
  "routing_endpoint": "/v1/route",
  "events_endpoint": "/v1/events/stream",
  "trust_anchors_endpoint": "/v1/trust/anchors",
  "supported_auth_methods": ["jwt", "mtls", "dpop"],
  "signed_metadata": "eyJhbGciOi..."
}

Agents

Agent registration, update, and lifecycle management. All mutations require X-Idempotency-Key header.

GET /v1/agents

List agent records with pagination and filtering.

ParameterTypeDescription
jurisdictionstringISO 3166-1 alpha-2 country code filter
statusenumactive | suspended | revoked | retired
cursorstringPagination cursor from previous response
limitintegerPage size (1-100, default 20)
Response 200
{
  "agents": [{ /* AgentRecord */ }],
  "next_cursor": "eyJ...",
  "total_count": 142
}
POST /v1/agents

Register an agent (idempotent). Returns 201 on first call, 200 on replay with same idempotency key.

Headers: X-Idempotency-Key (required, UUID)

Body fieldTypeRequiredDescription
display_namestringYesHuman-readable agent name
jurisdictionstringYesISO 3166-1 alpha-2 country code
endpointsarrayYesList of Endpoint objects (url, protocol, priority, weight)
capabilitiesobjectYesProtocols, FHIR R4 support, consent, stream resume
trustobjectYesCertificates, signatures, attestations
ownerobjectorg_id, org_name, operator
descriptionstringAgent description
policy_tagsobjectABAC policy tags
Request
curl -X POST https://registry.symphonix.health/v1/agents \
  -H "Authorization: Bearer <token>" \
  -H "X-Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000" \
  -H "Content-Type: application/json" \
  -d '{
    "display_name": "Radiology Summariser",
    "jurisdiction": "GB",
    "endpoints": [{
      "url": "https://rad.nhs.example/a2a",
      "protocol": "nexus-a2a-jsonrpc",
      "priority": 1
    }],
    "capabilities": {
      "protocols": ["nexus-a2a-jsonrpc"],
      "fhir_r4": true,
      "consent_support": true
    },
    "trust": { "certificates": ["..."] }
  }'

Responses: 201 Agent registered — 200 Idempotent replay — 409 Version conflict

GET /v1/agents/{agent_id}

Get a single agent record by ID. Response includes ETag header for optimistic concurrency.

Responses: 200 AgentRecord + ETag header — 404 Not found

PUT /v1/agents/{agent_id}

Update agent record with optimistic concurrency. Requires If-Match header containing the ETag from the previous GET.

Headers: X-Idempotency-Key + If-Match (both required)

Body fieldTypeDescription
display_namestringUpdated name
endpointsarrayUpdated endpoints
capabilitiesobjectUpdated capabilities
trustobjectUpdated trust material

Responses: 200 Updated — 409 Version conflict — 412 ETag mismatch

POST /v1/agents/{agent_id}:revoke

Revoke an agent record. Revocation is permanent and cannot be undone.

Headers: X-Idempotency-Key (required)

Request body
{ "reason": "Agent decommissioned per compliance audit" }

Responses: 200 Revoked — 404 Not found

Discovery

Discover agents by capability, jurisdiction, and trust posture. Returns ranked results with verifiable trust material references. No PHI is involved.

GET /v1/discover

Query the discovery index for agents matching your requirements. Results include trust material references and are optionally JWS-signed.

ParameterTypeRequiredDescription
capabilitystringYesRequired capability (e.g. fhir_r4, consent.verify)
jurisdictionstringISO 3166-1 alpha-2 country code
require_featuresarrayFeature flags (e.g. stream_resume, idempotency_strict)
protocolstringRequired protocol (e.g. nexus-a2a-jsonrpc)
token_bindingenumnone | mtls_cnf_x5t_s256 | dpop
residencystringRequired data residency region
purpose_of_usestringtreatment | payment | operations | research
limitintegerMax results (1-100, default 20)
Example — Python
import httpx

resp = httpx.get(
    "https://registry.symphonix.health/v1/discover",
    params={
        "capability": "fhir-r4-patient-search",
        "jurisdiction": "GB",
        "purpose_of_use": "treatment",
    },
    headers={"Authorization": f"Bearer {token}"},
)
agents = resp.json()["results"]
Response 200
{
  "query": { "capability": "fhir-r4-patient-search", "jurisdiction": "GB" },
  "results": [{ /* AgentRecord */ }],
  "result_count": 7,
  "signed_response": "eyJhbGciOi..."
}

Routing

Routing advisory for endpoint selection. Returns ranked endpoints with failover hints, health signals, and trust material — without acting as a runtime proxy.

POST /v1/route

Get routing advice for an agent or capability query. Includes trust bundle, constraints, and evidence chain.

Request
{
  "target": "gharra://GB/agents/01HXR...",
  "required_features": ["stream_resume"],
  "residency": {
    "allowed_zones": ["eu-west-1", "eu-west-2"],
    "deny_cross_zone": true
  },
  "workload": {
    "token_binding": "mtls_cnf_x5t_s256",
    "priority": "high"
  },
  "purpose": { "purpose_of_use": "treatment" }
}
Response 200
{
  "resolved_target": "gharra://GB/agents/01HXR...",
  "selected": {
    "endpoint": "https://rad.nhs.example/a2a",
    "protocol": "nexus-a2a-jsonrpc",
    "region": "eu-west-2"
  },
  "alternatives": [{ "endpoint": "...", "priority": 2 }],
  "trust_bundle": { /* TrustBundle */ },
  "constraints": {
    "phi_allowed": true,
    "max_concurrency_hint": 50,
    "rate_limit_rps_hint": 100
  },
  "evidence": {
    "registry_id": "gharra://GB/registries/nhs-spine",
    "record_version": "3",
    "delegation_chain": ["gharra://root", "gharra://GB"]
  }
}

Registries

Federation directory — registry of registries. GHARRA uses a three-tier federated model: root → sovereign (per country) → organisational.

GET /v1/registries

List federated registries. Filter by jurisdiction and tier.

ParameterTypeDescription
jurisdictionstringISO 3166-1 alpha-2
tierenumroot | sovereign | organisational
POST /v1/registries

Register a new sovereign or organisational registry.

Body fieldTypeRequiredDescription
display_namestringYesRegistry name
jurisdictionstringYesISO 3166-1 alpha-2
tierenumYessovereign | organisational
trust_anchorsarrayYesTrust anchor objects
api_base_urlstring (URI)Registry API base URL
GET /v1/registries/{registry_id}

Get a single registry record by ID.

Trust

Trust directory — keys, certificates, and attestations. The trust chain validates agent identity from root through sovereign registries to individual agents.

GET /v1/trust/anchors

List all trust anchors in the registry.

Response 200
{
  "anchors": [{
    "key_id": "gharra-root-2025",
    "alg": "ES256",
    "jwks_uri": "https://registry.symphonix.health/.well-known/jwks.json",
    "thumbprint_sha256": "abc123...",
    "role": "root",
    "not_before": "2025-01-01T00:00:00Z",
    "not_after": "2027-01-01T00:00:00Z"
  }]
}
GET /v1/trust/bundles/{subject_id}

Get the full trust material bundle for an agent or registry. Includes certificates, JWKS, attestations, and delegation chain.

Events

Server-Sent Events (SSE) stream of registry changes with monotonic sequencing and resume cursor support.

GET /v1/events/stream

Subscribe to real-time registry change events. Use the cursor parameter to resume from a previous position after disconnection.

Content-Type: text/event-stream

ParameterTypeDescription
cursorstringResume cursor from a previous stream session
event_typesarrayFilter by event type(s)
Example — cURL
curl -N -H "Authorization: Bearer <token>" \
  "https://registry.symphonix.health/v1/events/stream?cursor=seq_42"

Billing

API key management and usage metering. Keys are scoped to an organisation and tier.

POST /v1/admin/billing/api-keys

Create a new API key. The raw key is returned only once in the response — store it securely.

Body fieldTypeRequiredDescription
org_idstringYesOrganisation identifier
display_namestringYesHuman-readable key name
tierstringPricing tier (default: developer)
scopesarrayPermission scopes (default: ["gharra:read"])
expires_atdatetimeISO-8601 expiration timestamp
Response 201
{
  "key_id": "gharra_key_01HXR...",
  "raw_key": "gharra_sk_live_abc123...",
  "org_id": "my-org",
  "display_name": "Production Key",
  "tier": "team",
  "scopes": ["gharra:read", "gharra:write"],
  "created_at": "2026-03-29T10:00:00Z"
}
GET /v1/admin/billing/api-keys

List API keys for an organisation.

ParameterTypeDescription
org_idstringFilter by organisation ID
GET /v1/admin/billing/api-keys/{key_id}

Get API key details including active status, scopes, and last used timestamp.

DELETE /v1/admin/billing/api-keys/{key_id}

Revoke an API key. Takes effect immediately.

Response: 204 Key revoked

GET /v1/admin/billing/usage/{caller_key}

Get usage summary for a caller. Filter by time range.

ParameterTypeDescription
sincedatetimeISO-8601 start time
untildatetimeISO-8601 end time
GET /v1/admin/billing/usage/{caller_key}/live

Get live rate limit stats: daily count, daily limit, tokens remaining.

GET /v1/admin/billing/pricing/tiers

Get available pricing tiers and their rate limits.

Computer Use

Agentic browser automation via Claude (claude-opus-4-6). Admin-only endpoints for CI visual regression, compliance audits, and automated UI workflows.

POST /v1/admin/computer-use/run

Run a Claude computer-use task in a headless Chromium browser. Sessions are tracked in the transparency ledger.

Body fieldTypeRequiredDescription
taskstringYesNatural-language task description
urlstring (URI)URL to navigate to before starting
personaenumobserver | auditor | operator | clinician | security-analyst
max_turnsinteger1-50, default 20
headlessbooleanDefault true
DELETE /v1/admin/computer-use/sessions/{session_id}

Cancel a running computer-use session.

GET /v1/admin/computer-use/screenshot

Capture a screenshot of a GHARRA frontend page. Useful for CI visual regression checks.

ParameterTypeDescription
pagestringPage name: dashboard, agents, trust, federation, routing, audit, alerts, diagnostics, settings
base_urlstring (URI)Frontend URL (default: http://localhost:3000)
NEXUS A2A PROTOCOL

Transport: JSON-RPC 2.0 over HTTPS — Auth: JWT HS256 (nexus:invoke scope) — Real-time: SSE + WebSocket

Tasks

Core task submission and retrieval. All agents expose a single POST / endpoint. The on-demand gateway at POST /rpc/{agent_alias} lazily starts target agents before proxying.

POST / method: tasks/send

Submit a new unit of work to an agent. The primary method for all inter-agent communication.

Headers: Authorization: Bearer <JWT> — X-Agent-ID: <did:web:...>

Request
{
  "jsonrpc": "2.0",
  "method": "tasks/send",
  "params": {
    "sender": "did:web:hospital.org:agents:triage",
    "recipient": "did:web:lab.org:agents:pathology",
    "message": {
      "kind": "message",
      "role": "user",
      "parts": [{
        "kind": "text",
        "text": "Analyze this blood sample for Malaria."
      }]
    }
  },
  "id": "req-12345"
}
Response
{
  "jsonrpc": "2.0",
  "result": {
    "task_id": "550e8400-e29b-41d4-a716-446655440000",
    "status": "submitted"
  },
  "id": "req-12345"
}
POST / method: tasks/get

Poll task status and retrieve results.

Request
{
  "jsonrpc": "2.0",
  "method": "tasks/get",
  "params": { "task_id": "550e8400-..." },
  "id": "req-12346"
}
POST /rpc/{agent_alias} (On-Demand Gateway)

Gateway proxy that lazily starts target agents and their dependencies before forwarding the JSON-RPC payload. Recommended for local development.

Example — cURL
curl -X POST http://localhost:8100/rpc/triage_agent \
  -H "Authorization: Bearer <jwt>" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"tasks/send","params":{"message":{"kind":"message","role":"user","parts":[{"kind":"text","text":"Patient presents with chest pain"}]}},"id":1}'

Clinician Avatar

Structured clinical consultation driven by medical interview frameworks (Calgary-Cambridge, SOCRATES, ABCDE). Maintains session state across multi-turn dialogue.

POST / method: avatar/start_session

Begin a structured consultation. Framework is auto-selected: ABCDE for critical/emergency urgency, SOCRATES for pain-related complaints, Calgary-Cambridge for all others.

Request
{
  "jsonrpc": "2.0",
  "method": "avatar/start_session",
  "params": {
    "patient_case": {
      "chief_complaint": "Chest tightness with exertion",
      "age": 54,
      "gender": "male",
      "urgency": "high"
    },
    "persona": {
      "name": "Dr. Alex",
      "role": "cardiologist"
    }
  },
  "id": 1
}

Response includes session_id, selected framework, and an opening greeting.

POST / method: avatar/patient_message

Send a patient utterance; receive a clinician response with consultation phase and framework progress.

Request
{
  "jsonrpc": "2.0",
  "method": "avatar/patient_message",
  "params": {
    "session_id": "avatar-xxxxx",
    "message": "I get chest tightness when climbing stairs."
  },
  "id": 2
}

Response includes clinician_response, consultation_phase, and framework_progress.

POST /api/tts

Text-to-speech with viseme timeline. Returns base64-encoded WAV audio and word-level lip-sync data.

Requires JWT authentication

Request
{ "text": "How long have you had this tightness?", "voice": "alloy" }

Response: audio_b64 (WAV), visemes (timeline array), voice, mime_type

Utility Endpoints

Standard health and discovery endpoints that every Nexus agent exposes.

GET /health

Agent health check. Must return a name field (persona display name) for Command Centre integration.

GET /.well-known/agent-card.json

Agent capability card. Describes supported methods, transport bindings, and authentication requirements.

Model Context Protocol (MCP) Tools

The GHARRA Registry exposes its core capabilities as Model Context Protocol tools. Any MCP-compatible AI agent or LLM can invoke these tools directly — no custom integration code required. Transport: JSON-RPC 2.0 over stdio or SSE.

TOOL discover_agents

Discover healthcare AI agents by capability, jurisdiction, and trust posture. Returns ranked results with verifiable trust material. This is the primary entry point for AI agents that need to find other agents in the federation.

ParameterTypeRequiredDescription
capabilitystringYesRequired capability (e.g. fhir-r4-patient-search, consent.verify, radiology.summarise)
jurisdictionstringISO 3166-1 alpha-2 country code (e.g. GB, US, KE)
protocolstringRequired protocol: nexus-a2a-jsonrpc | fhir-rest | hl7v2-mllp
purpose_of_usestringtreatment | payment | operations | research
limitintegerMax results (1–100, default 20)
MCP Tool Call
{
  "method": "tools/call",
  "params": {
    "name": "discover_agents",
    "arguments": {
      "capability": "fhir-r4-patient-search",
      "jurisdiction": "GB",
      "purpose_of_use": "treatment"
    }
  }
}
Response
{
  "content": [{
    "type": "text",
    "text": "Found 3 agents matching fhir-r4-patient-search in GB:\n1. NHS Spine PDS Agent (gharra://GB/agents/01HXR...)\n2. ..."
  }]
}

Maps to: GET /v1/discover

TOOL route

Get a routing advisory for a target agent. Returns the optimal endpoint with failover alternatives, health signals, and a verifiable trust bundle. Use this before sending a task via Nexus A2A.

ParameterTypeRequiredDescription
target_agent_idstringYesGHARRA URI of the agent (e.g. gharra://GB/agents/01HXR...)
caller_jurisdictionstringCaller’s jurisdiction for cross-border policy evaluation
purpose_of_usestringtreatment | payment | operations | research
MCP Tool Call
{
  "method": "tools/call",
  "params": {
    "name": "route",
    "arguments": {
      "target_agent_id": "gharra://GB/agents/01HXR...",
      "purpose_of_use": "treatment"
    }
  }
}

Maps to: POST /v1/route

TOOL register

Publish a new agent to the Global Agent Registry. The agent becomes discoverable by other agents and systems in the federation after trust validation completes.

ParameterTypeRequiredDescription
display_namestringYesHuman-readable agent name
jurisdictionstringYesISO 3166-1 alpha-2 country code
endpoint_urlstringYesAgent’s A2A endpoint URL
capabilitiesarray<string>YesList of capability identifiers
protocolstringDefault: nexus-a2a-jsonrpc
descriptionstringAgent description
MCP Tool Call
{
  "method": "tools/call",
  "params": {
    "name": "register",
    "arguments": {
      "display_name": "Radiology Summariser",
      "jurisdiction": "GB",
      "endpoint_url": "https://rad.nhs.example/a2a",
      "capabilities": ["radiology.summarise", "fhir-r4-diagnosticreport"]
    }
  }
}

Maps to: POST /v1/agents

MCP Server Configuration

Add the GHARRA MCP server to your claude_desktop_config.json or any MCP-compatible client:

MCP Server Config
{
  "mcpServers": {
    "gharra": {
      "command": "npx",
      "args": ["@symphonix-health/gharra-mcp-server"],
      "env": {
        "GHARRA_API_KEY": "your-api-key",
        "GHARRA_REGISTRY_URL": "https://registry.symphonix.health"
      }
    }
  }
}

Agent SDK

The GHARRA Python SDK wraps the REST API and MCP tools into a high-level client for agent developers. Install with pip install gharra.

SDK RegistryClient

High-level client for the GHARRA Registry. Handles authentication, pagination, and retry logic.

Python
from gharra import RegistryClient

# Initialise with API key or JWT
client = RegistryClient(
    base_url="https://registry.symphonix.health",
    api_key="sk-..."   # or token="eyJ..."
)

# Discover agents
agents = client.discover(
    capability="fhir-r4-patient-search",
    jurisdiction="GB"
)

# Route to the best endpoint
route = client.route(agents[0].agent_id)
print(route.selected.url)  # https://spine.nhs.uk/a2a

# Send a task via Nexus A2A
result = client.send_task(
    endpoint=route.selected.url,
    method="tasks/send",
    params={"query": "Find patient by MRN 00412"}
)
SDK NexusClient

Low-level JSON-RPC client for the Nexus A2A protocol. Handles transport negotiation (SSE/WebSocket), message streaming, and automatic reconnection.

Python
from gharra.nexus import NexusClient

nexus = NexusClient(
    endpoint="https://rad.nhs.example/a2a",
    token="eyJ..."
)

# Streaming response via SSE
async for event in nexus.stream_task(
    method="tasks/sendSubscribe",
    params={"query": "Summarise latest chest X-ray for MRN 00412"}
):
    print(event.status, event.message)

Full SDK documentation: SDK Quickstart Guide →

AI Agent Integration Patterns

Common patterns for integrating AI agents with the Symphonix Health platform. Each pattern composes the REST API, MCP tools, and Nexus A2A protocol into a production workflow.

Pattern 1: Discover → Route → Invoke

The standard three-step flow. An AI agent discovers available services, gets routing advice, and invokes the target agent via Nexus A2A.

Flow
1. discover_agents(capability="fhir-r4-patient-search")  → MCP or REST
2. route(target_agent_id="gharra://GB/agents/...")         → MCP or REST
3. tasks/send(query="Find patient by MRN 00412")          → Nexus A2A JSON-RPC

Pattern 2: Multi-Agent Orchestration

BulletTrain orchestrates multiple agents in sequence — e.g. patient lookup → radiology summarisation → care plan generation. Each step uses discover/route/invoke with consent propagation.

Orchestration
# BulletTrain handles consent propagation across agent boundaries
pipeline = client.create_pipeline([
    {"capability": "fhir-r4-patient-search", "params": {"mrn": "00412"}},
    {"capability": "radiology.summarise",    "params": {"type": "chest-xray"}},
    {"capability": "care-plan.generate",    "params": {}}
])
result = await pipeline.execute(consent_token="eyJ...")

Pattern 3: Cross-Border Federation

Agents in different jurisdictions communicate through federated registries. The GHARRA federation protocol handles trust chain verification, data residency checks, and consent compatibility between sovereign registries.

Federation Flow
# Agent in GB discovers agent in KE via federated registries
agents = client.discover(
    capability="tb-screening",
    jurisdiction="RW",                    # target jurisdiction
    residency="RW",                       # data must stay in Rwanda
    token_binding="mtls_cnf_x5t_s256"    # require mTLS binding
)
# Trust chain: GB root → KE sovereign → KE org → agent

Interface Comparison

InterfaceProtocolBest ForAuth
REST APIHTTP/JSON (OpenAPI 3.0)Traditional integrations, admin dashboards, CI/CDJWT / mTLS / DPoP
MCP ToolsJSON-RPC 2.0 (stdio/SSE)AI agents, LLM tool use, Claude/GPT integrationsAPI key via env
Nexus A2AJSON-RPC 2.0 (SSE/WebSocket)Agent-to-agent communication, streaming resultsJWT + consent tokens
Python SDKWraps REST + NexusPython applications, Jupyter notebooks, scriptsAPI key or JWT

Error Codes

Combined error reference for both GHARRA REST and Nexus JSON-RPC APIs.

GHARRA HTTP Status Codes

StatusMeaningDetails
200OK / Idempotent replayRequest succeeded or mutation replayed via idempotency key
201CreatedResource created (first call with idempotency key)
204No ContentSuccessful deletion (e.g. API key revoked)
404Not FoundAgent, registry, or resource not found
409ConflictVersion conflict or idempotency key collision
412Precondition FailedETag mismatch on optimistic concurrency update
422Validation ErrorRequest body validation failed
503Service UnavailableDependencies not installed (e.g. computer use)

GHARRA error responses follow a standard structure:

{
  "error": {
    "code": "AGENT_NOT_FOUND",
    "message": "Agent gharra://GB/agents/01HXR... not found",
    "details": {},
    "retryable": false,
    "retry_after_ms": null
  }
}

Nexus JSON-RPC Error Codes

CodeMessageMeaning
-32700Parse errorInvalid JSON received
-32601Method not foundAgent does not support this method
-32001Authentication FailedJWT missing, expired, or invalid signature
-32003Consent DeniedRequester does not have permission for this patient data

Rate Limits

GHARRA enforces token-bucket rate limiting per API key. Five pricing tiers are available.

TierReq/minReq/dayMax AgentsDiscovery/minRouting/minFederationEvents SSESLA
developer601,00053030NoNo—
team30010,00025100100NoYes99.5%
business1,000100,000100500500YesYes99.9%
scale5,0001,000,0005002,0002,000YesYes99.95%
enterpriseCustomCustomUnlimitedCustomCustomYesYes99.99%

Check your live usage via GET /v1/admin/billing/usage/{caller_key}/live. Upgrade tiers via Pricing.

Data Models

Key schemas used across the GHARRA and Nexus APIs.

AgentRecord

Primary entity in the registry. Identified by gharra://<jurisdiction>/agents/<ulid>

FieldTypeDescription
agent_idstringGHARRA URI identifier
display_namestringHuman-readable name
jurisdictionstringISO 3166-1 alpha-2
statusenumactive | suspended | revoked | retired
endpointsarray<Endpoint>url, protocol, priority, weight, health_url, region
capabilitiesCapabilitiesprotocols, fhir_r4, consent_support, stream_resume
trustTrustMaterialcertificates, signatures, attestations
ownerobjectorg_id, org_name, operator
versionintegerOptimistic concurrency version (used as ETag)

RoutingResponse

Routing advisory with ranked endpoints and trust evidence.

FieldTypeDescription
resolved_targetstringResolved agent URI
selectedobjectPrimary endpoint (url, protocol, region)
alternativesarrayFailover endpoints with priority ranking
trust_bundleTrustBundleVerifiable trust material
constraintsobjectphi_allowed, max_concurrency_hint, rate_limit_rps_hint
evidenceobjectregistry_id, record_version, delegation_chain

TrustAnchor

Cryptographic trust anchor in the registry chain.

FieldTypeDescription
key_idstringKey identifier
algstringAlgorithm (RS256, ES256, EdDSA)
jwks_uristring (URI)JWKS endpoint
roleenumroot | sovereign_registry | organisation | agent
not_before / not_afterdatetimeValidity window

Message (Nexus A2A)

Message object exchanged between agents via JSON-RPC.

FieldTypeDescription
kindstringMust be "message"
rolestring"user" (requestor) or "agent" (responder)
partsarray<TextPart>Content parts. TextPart: { kind: "text", text: "..." }

ErrorResponse (GHARRA)

Standard error envelope for all GHARRA API errors.

FieldTypeDescription
error.codestringMachine-readable error code
error.messagestringHuman-readable description
error.detailsobjectAdditional context
error.retryablebooleanWhether the request can be retried
error.retry_after_msintegerSuggested retry delay in milliseconds

Full JSON Schema definitions: GHARRA API Reference →

Start integrating.

Clone the repos, generate your API key, and ship your first healthcare integration.

Authentication Guide Developer Hub