{"components":{"schemas":{"Decision":{"properties":{"reasons":{"items":{"type":"string"},"type":"array"},"trusted":{"type":"boolean"}},"required":["trusted","reasons"],"type":"object"},"JoinCertificate":{"additionalProperties":false,"properties":{"cert_id":{"type":"string"},"expires_at":{"format":"date-time","type":"string"},"issued_at":{"format":"date-time","type":"string"},"issued_by":{"type":"string"},"network_name":{"type":"string"},"node_public_key":{"type":"string"},"roles":{"items":{"type":"string"},"type":"array"},"signatures":{"items":{"$ref":"#/components/schemas/Signature"},"type":"array"}},"required":["cert_id","node_public_key","network_name","issued_at","expires_at","issued_by"],"type":"object"},"Signature":{"additionalProperties":false,"properties":{"key_id":{"type":"string"},"sig":{"description":"Base64 detached Ed25519 signature","type":"string"}},"required":["key_id","sig"],"type":"object"}},"securitySchemes":{"bearerAuth":{"scheme":"bearer","type":"http"}}},"info":{"description":"Operator-controlled Genesis Mesh trust verification. HTTP 200 is not a trust grant; inspect trusted in each decision.","title":"Genesis Mesh Trust Gateway","version":"0.56.2"},"openapi":"3.1.0","paths":{"/api":{"get":{"operationId":"api","responses":{"200":{"description":"Successful response"},"401":{"description":"Bearer credential required"},"403":{"description":"Scope denied"},"429":{"description":"Quota exhausted"},"503":{"description":"Unavailable"}},"security":[],"summary":"Service information"}},"/health":{"get":{"operationId":"health","responses":{"200":{"description":"Successful response"},"401":{"description":"Bearer credential required"},"403":{"description":"Scope denied"},"429":{"description":"Quota exhausted"},"503":{"description":"Unavailable"}},"security":[],"summary":"Liveness"}},"/metrics":{"get":{"operationId":"metrics","responses":{"200":{"description":"Successful response"},"401":{"description":"Bearer credential required"},"403":{"description":"Scope denied"},"429":{"description":"Quota exhausted"},"503":{"description":"Unavailable"}},"security":[{"bearerAuth":[]}],"summary":"Prometheus metrics; metrics scope required"}},"/ready":{"get":{"operationId":"ready","responses":{"200":{"description":"Successful response"},"401":{"description":"Bearer credential required"},"403":{"description":"Scope denied"},"429":{"description":"Quota exhausted"},"503":{"description":"Unavailable"}},"security":[],"summary":"Trust readiness"}},"/v1/mesh":{"get":{"responses":{"200":{"description":"Public domains, active directed treaties and explicitly published memberships. Cached for 20 seconds; unavailable authorities are marked."}},"security":[],"summary":"Opt-in public live mesh overview"}},"/v1/networks":{"get":{"operationId":"v1_networks","responses":{"200":{"description":"Successful response"},"401":{"description":"Bearer credential required"},"403":{"description":"Scope denied"},"429":{"description":"Quota exhausted"},"503":{"description":"Unavailable"}},"security":[{"bearerAuth":[]}],"summary":"Authorized network data"}},"/v1/networks/{network}/services/admin-create-invite":{"post":{"description":"Create a persisted invite token for a pre-authorized node. Upstream: /admin/invite","operationId":"admin-create-invite","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Key-Id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Timestamp","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Nonce","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Signature","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"max_validity_hours":1,"roles":["role:client"],"token_expiry_hours":1},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Create invite","tags":["administration"]}},"/v1/networks/{network}/services/admin-policy-history":{"get":{"description":"Return persisted policy versions. Upstream: /admin/policy/history","operationId":"admin-policy-history","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Key-Id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Timestamp","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Nonce","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Signature","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Policy history","tags":["administration"]}},"/v1/networks/{network}/services/admin-publish-policy":{"post":{"description":"Publish and activate a signed policy version. Upstream: /admin/policy","operationId":"admin-publish-policy","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Key-Id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Timestamp","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Nonce","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Signature","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"allowed_ports":[443,8443],"allowed_services":[],"min_client_version":"0.56.0","routing":{}},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Publish policy","tags":["administration"]}},"/v1/networks/{network}/services/admin-revoke-certificate":{"post":{"description":"Revoke an issued certificate and publish a new signed CRL. Upstream: /admin/revoke","operationId":"admin-revoke-certificate","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Key-Id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Timestamp","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Nonce","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Signature","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"cert_id":"PASTE_CERTIFICATE_ID","reason":"cessation_of_operation"},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Revoke certificate","tags":["administration"]}},"/v1/networks/{network}/services/admin-revoke-operator-key":{"post":{"description":"Switch an operator key off without restarting the service (F-21). Upstream: /admin/operator-keys/{key_id}/revoke","operationId":"admin-revoke-operator-key","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"query","name":"key_id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Key-Id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Timestamp","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Nonce","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Signature","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"reason":"cessation_of_operation"},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Revoke operator key","tags":["administration"]}},"/v1/networks/{network}/services/admin-rollback-policy":{"post":{"description":"Activate a previously persisted policy version. Upstream: /admin/policy/rollback","operationId":"admin-rollback-policy","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Key-Id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Timestamp","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Nonce","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Signature","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"policy_id":"PASTE_POLICY_ID"},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Rollback policy","tags":["administration"]}},"/v1/networks/{network}/services/agreement-accept-route":{"post":{"description":"Accept an offer or counter-offer, producing a signed AgreementRecord. Upstream: /admin/agreements/accept","operationId":"agreement-accept-route","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Key-Id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Timestamp","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Nonce","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Signature","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"offer":{"<CapabilityOffer>":"..."}},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Accept","tags":["agreement"]}},"/v1/networks/{network}/services/agreement-build-counter-route":{"post":{"description":"Build and sign a CapabilityCounter in response to an existing offer. Upstream: /admin/agreements/counter","operationId":"agreement-build-counter-route","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Key-Id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Timestamp","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Nonce","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Signature","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"capabilities":["read"],"offer":{"<CapabilityOffer>":"..."},"scope":{},"valid_from":"2026-06-01T00:00:00Z","valid_until":"2026-06-01T12:00:00Z"},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Build counter","tags":["agreement"]}},"/v1/networks/{network}/services/agreement-build-offer-route":{"post":{"description":"Build and sign a CapabilityOffer as the NA sovereign. Upstream: /admin/agreements/offer","operationId":"agreement-build-offer-route","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Key-Id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Timestamp","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Nonce","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Signature","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"capabilities":["read","write"],"expires_at":"2026-06-01T01:00:00Z","responder_sovereign_id":"sovereign-b","scope":{},"valid_from":"2026-06-01T00:00:00Z","valid_until":"2026-06-02T00:00:00Z"},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Build offer","tags":["agreement"]}},"/v1/networks/{network}/services/agreement-verify-route":{"post":{"description":"Verify a signed AgreementRecord without storing it. Upstream: /agreements/verify","operationId":"agreement-verify-route","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"agreement":{"<AgreementRecord>":"..."},"offerer_public_keys":["<base64-ed25519>"],"responder_public_keys":["<base64-ed25519>"]},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Verify","tags":["agreement"]}},"/v1/networks/{network}/services/attestations-get-attestation":{"get":{"description":"Return a persisted membership attestation by ID. Upstream: /attestations/{attestation_id}","operationId":"attestations-get-attestation","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"query","name":"attestation_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Get attestation","tags":["attestations"]}},"/v1/networks/{network}/services/attestations-get-recognition-policy":{"get":{"description":"Return the active local recognition policy, if configured. Upstream: /recognition-policy","operationId":"attestations-get-recognition-policy","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Get recognition policy","tags":["attestations"]}},"/v1/networks/{network}/services/attestations-issue-attestation":{"post":{"description":"Issue a signed membership attestation for a subject. Upstream: /admin/attestations","operationId":"attestations-issue-attestation","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Key-Id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Timestamp","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Nonce","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Signature","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"roles":["role:client"],"subject_id":"gateway-demo-subject","validity_hours":1},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Issue attestation","tags":["attestations"]}},"/v1/networks/{network}/services/attestations-list-attestations":{"get":{"description":"List persisted membership attestations. Upstream: /attestations","operationId":"attestations-list-attestations","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"query","name":"issuer_sovereign_id","required":false,"schema":{"type":"string"}},{"in":"query","name":"status","required":false,"schema":{"type":"string"}},{"in":"query","name":"subject_id","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"List attestations","tags":["attestations"]}},"/v1/networks/{network}/services/attestations-revoke-attestation":{"post":{"description":"Revoke an issued membership attestation. Upstream: /admin/attestations/{attestation_id}/revoke","operationId":"attestations-revoke-attestation","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"query","name":"attestation_id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Key-Id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Timestamp","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Nonce","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Signature","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"reason":"cessation_of_operation"},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Revoke attestation","tags":["attestations"]}},"/v1/networks/{network}/services/attestations-save-recognition-policy":{"post":{"description":"Persist the local recognition policy used by attestation verification. Upstream: /admin/recognition-policy","operationId":"attestations-save-recognition-policy","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Key-Id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Timestamp","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Nonce","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Signature","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"recognition_policy":{"local_sovereign_id":"authority-a","recognized_issuers":[]}},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Save recognition policy","tags":["attestations"]}},"/v1/networks/{network}/services/attestations-sovereign-revocation-feed":{"get":{"description":"Publish a signed feed of revoked membership attestations. Upstream: /sovereign-revocation-feed","operationId":"attestations-sovereign-revocation-feed","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Sovereign revocation feed","tags":["attestations"]}},"/v1/networks/{network}/services/attestations-verify-attestation":{"post":{"description":"Verify a membership attestation against a local recognition policy. Upstream: /attestations/verify","operationId":"attestations-verify-attestation","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"attestation":{},"recognition_policy":{"local_sovereign_id":"authority-a","recognized_issuers":[{"allowed_roles":["role:client"],"public_keys":["PASTE_AUTHORITY_PUBLIC_KEY"],"sovereign_id":"authority-a"}]}},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Verify attestation","tags":["attestations"]}},"/v1/networks/{network}/services/boundary-decide":{"post":{"description":"Evaluate a ContextRecord against an AgreementRecord and sign the decision. Upstream: /admin/boundary/decide","operationId":"boundary-decide","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Key-Id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Timestamp","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Nonce","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Signature","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"agreement":{"<AgreementRecord>":"..."},"context":{"request_parameters":{},"requester_sovereign_id":"sovereign-b"},"requested_capability":"read"},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Decide","tags":["boundary"]}},"/v1/networks/{network}/services/boundary-verify":{"post":{"description":"Verify a signed BoundaryDecision. Upstream: /boundary/verify","operationId":"boundary-verify","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"decision":{"<BoundaryDecision>":"..."},"operator_public_keys":["<base64-ed25519>"]},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Verify","tags":["boundary"]}},"/v1/networks/{network}/services/consensus-proof":{"post":{"description":"Assemble a ConsensusProof from votes, signed by the NA as assembler. Upstream: /admin/consensus/proof","operationId":"consensus-proof","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Key-Id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Timestamp","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Nonce","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Signature","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"justification_proof":{"<JustificationProof>":"..."},"required_threshold":2,"validator_sovereign_ids":["na-1","na-2"],"votes":[{"<ValidatorVote>":"..."}]},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Proof","tags":["consensus"]}},"/v1/networks/{network}/services/consensus-verify":{"post":{"description":"Verify a ConsensusProof signature and threshold. Upstream: /consensus/verify","operationId":"consensus-verify","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"assembler_public_keys":["<base64-ed25519>"],"proof":{"<ConsensusProof>":"..."},"validator_public_keys":{"validator-1":"<base64>","validator-2":"<base64>"}},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Verify","tags":["consensus"]}},"/v1/networks/{network}/services/consensus-vote":{"post":{"description":"Cast a ValidatorVote signed by the NA as validator. Upstream: /admin/consensus/vote","operationId":"consensus-vote","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Key-Id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Timestamp","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Nonce","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Signature","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"justification_proof":{"<JustificationProof>":"..."},"reason":"decision aligns with recognition policy","vote":true},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Vote","tags":["consensus"]}},"/v1/networks/{network}/services/crl-get-crl":{"get":{"description":"Return the active signed certificate revocation list. Upstream: /crl","operationId":"crl-get-crl","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Get crl","tags":["network"]}},"/v1/networks/{network}/services/data_usage-create-intent":{"post":{"description":"Create and sign a DataAccessIntent as agent (NA). Upstream: /admin/data-usage/intent","operationId":"data_usage-create-intent","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Key-Id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Timestamp","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Nonce","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Signature","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"access_types":["read"],"decision_id":"dec-001","estimated_volume_bytes":1048576,"sources":[{"classification_tags":[],"owner_sovereign_id":"TEST","source_id":"src-1","source_type":"database"}]},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Create intent","tags":["data_usage"]}},"/v1/networks/{network}/services/data_usage-create-policy":{"post":{"description":"Create and sign a DataLicensePolicy as licensor (NA). Upstream: /admin/data-usage/policy","operationId":"data_usage-create-policy","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Key-Id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Timestamp","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Nonce","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Signature","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"allowed_access_types":["read"],"allowed_source_ids":["src-1"],"licensee_sovereign_id":"sovereign-b","max_volume_bytes_per_session":null,"prohibited_classification_tags":[],"valid_from":"2026-06-01T00:00:00Z","valid_until":"2026-12-31T00:00:00Z"},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Create policy","tags":["data_usage"]}},"/v1/networks/{network}/services/data_usage-get-policy":{"get":{"description":"Return the currently active DataLicensePolicy. Upstream: /data-usage/policy","operationId":"data_usage-get-policy","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Get policy","tags":["data_usage"]}},"/v1/networks/{network}/services/data_usage-verify":{"post":{"description":"Verify a DataAccessIntent against a DataLicensePolicy. Upstream: /data-usage/verify","operationId":"data_usage-verify","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"agent_public_keys":["<base64-ed25519>"],"intent":{"<DataAccessIntent>":"..."},"policy":{"<DataLicensePolicy>":"..."}},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Verify","tags":["data_usage"]}},"/v1/networks/{network}/services/disclosure-commit":{"post":{"description":"Commit to a list of capabilities under an AgreementRecord, signed by the NA. Upstream: /admin/disclosure/commit","operationId":"disclosure-commit","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Key-Id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Timestamp","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Nonce","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Signature","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"agreement":{"<AgreementRecord>":"..."},"capabilities":["read","write"]},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Commit","tags":["disclosure"]}},"/v1/networks/{network}/services/disclosure-nullifier":{"post":{"description":"Issue a one-time nullifier for a capability membership proof, signed by the NA. Upstream: /admin/disclosure/nullifier","operationId":"disclosure-nullifier","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Key-Id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Timestamp","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Nonce","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Signature","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"proof":{"<CapabilityMembershipProof>":"..."}},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Nullifier","tags":["disclosure"]}},"/v1/networks/{network}/services/disclosure-prove":{"post":{"description":"Generate a Merkle membership proof from caller-supplied data (no NA state used). Upstream: /disclosure/prove","operationId":"disclosure-prove","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"capabilities":["read","write"],"capability":"read","commitment":{"<CapabilityCommitment>":"..."},"prover_sovereign_id":"sovereign-b"},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Prove","tags":["disclosure"]}},"/v1/networks/{network}/services/disclosure-verify":{"post":{"description":"Verify a CapabilityMembershipProof against its commitment. Upstream: /disclosure/verify","operationId":"disclosure-verify","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"commitment":{"<CapabilityCommitment>":"..."},"issuer_public_keys":["<base64-ed25519>"],"proof":{"<CapabilityMembershipProof>":"..."}},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Verify","tags":["disclosure"]}},"/v1/networks/{network}/services/discovery-delete-agent":{"delete":{"description":"Voluntary deregistration. Requires a signed envelope. Upstream: /agents/{node_public_key}","operationId":"discovery-delete-agent","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"query","name":"node_public_key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"signature":"PASTE_NODE_SIGNATURE","signed_at":"NOW","version":"1"},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Delete agent","tags":["discovery"]}},"/v1/networks/{network}/services/discovery-get-agent":{"get":{"description":"Return one registration. Upstream: /agents/{node_public_key}","operationId":"discovery-get-agent","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"query","name":"node_public_key","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Get agent","tags":["discovery"]}},"/v1/networks/{network}/services/discovery-list-agents":{"get":{"description":"Discover agents by capability. The unfiltered form returns counts only. Upstream: /agents","operationId":"discovery-list-agents","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"query","name":"capability","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"List agents","tags":["discovery"]}},"/v1/networks/{network}/services/discovery-register-agent":{"post":{"description":"Register or refresh a signed AgentDescriptor. Upstream: /agents","operationId":"discovery-register-agent","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"agent_id":"gateway-demo-agent","capabilities":["read"],"endpoint":{"host":"agent.example.org","port":443,"scheme":"wss"},"expires_at":"FUTURE_TIMESTAMP","metadata":{},"network_name":"authority-a","node_public_key":"PASTE_NODE_PUBLIC_KEY","registered_at":"NOW","signatures":[]},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Register agent","tags":["discovery"]}},"/v1/networks/{network}/services/enrollment-heartbeat":{"post":{"description":"Receive a signed heartbeat from an enrolled node. Upstream: /heartbeat","operationId":"enrollment-heartbeat","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"cert_id":"PASTE_CERTIFICATE_ID","node_public_key":"PASTE_NODE_PUBLIC_KEY","nonce":"UNIQUE_NONCE","signature":"PASTE_NODE_SIGNATURE","status":"active","timestamp":"NOW"},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Heartbeat","tags":["enrollment"]}},"/v1/networks/{network}/services/enrollment-renew-certificate":{"post":{"description":"Renew a node certificate while preserving server-side roles. Upstream: /renew","operationId":"enrollment-renew-certificate","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"cert_id":"PASTE_CERTIFICATE_ID","node_public_key":"PASTE_NODE_PUBLIC_KEY","nonce":"UNIQUE_NONCE","signature":"PASTE_NODE_SIGNATURE","timestamp":"NOW","validity_hours":1},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Renew certificate","tags":["enrollment"]}},"/v1/networks/{network}/services/enrollment-request-join":{"post":{"description":"Issue a join certificate using a persisted invite token. Upstream: /join","operationId":"enrollment-request-join","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"invite_token":"PASTE_INVITE_TOKEN","node_public_key":"PASTE_NODE_PUBLIC_KEY","nonce":"UNIQUE_NONCE","signature":"PASTE_NODE_SIGNATURE","timestamp":"NOW"},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Request join","tags":["enrollment"]}},"/v1/networks/{network}/services/evidence-build":{"post":{"description":"Sign a TrustEvidence record from a TrustDecision. Upstream: /admin/trust-evidence","operationId":"evidence-build","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Key-Id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Timestamp","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Nonce","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Signature","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"decision":{"evaluated_at":"2026-06-01T00:00:00Z","hop_count":0,"reason":"direct recognition","requested_roles":[],"signals":[],"source_sovereign_id":"TEST","target_sovereign_id":"sovereign-b","trust_path":[],"trusted":true,"verdict":"allow"},"graph_digest":"<optional-sha256-hex>"},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Build","tags":["evidence"]}},"/v1/networks/{network}/services/evidence-verify":{"post":{"description":"Verify a TrustEvidence signature and optional graph digest. Upstream: /trust-evidence/verify","operationId":"evidence-verify","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"evidence":{"<TrustEvidence>":"..."},"expected_graph_digest":"<optional-sha256-hex>","issuer_public_keys":["<base64-ed25519>"]},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Verify","tags":["evidence"]}},"/v1/networks/{network}/services/health-health":{"get":{"description":"Return legacy health metadata. Upstream: /health","operationId":"health-health","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Health","tags":["network"]}},"/v1/networks/{network}/services/health-list-nodes":{"get":{"description":"Return the active node count; the full roster requires operator auth. Upstream: /nodes","operationId":"health-list-nodes","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Key-Id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Timestamp","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Nonce","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Signature","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"List nodes","tags":["network"]}},"/v1/networks/{network}/services/health-readyz":{"get":{"description":"Return readiness after checking DB, genesis, and NA key state. Upstream: /readyz","operationId":"health-readyz","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Readyz","tags":["network"]}},"/v1/networks/{network}/services/public-atlas-json":{"get":{"description":"Return machine-readable Atlas summary with graph digest. Upstream: /atlas.json","operationId":"public-atlas-json","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Atlas json","tags":["network"]}},"/v1/networks/{network}/services/public-dashboard-json":{"get":{"description":"Return machine-readable dashboard state. Upstream: /dashboard.json","operationId":"public-dashboard-json","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Dashboard json","tags":["network"]}},"/v1/networks/{network}/services/public-get-genesis":{"get":{"description":"Return the genesis block. Upstream: /genesis","operationId":"public-get-genesis","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Get genesis","tags":["network"]}},"/v1/networks/{network}/services/public-get-policy":{"get":{"description":"Return the active signed policy manifest. Upstream: /policy","operationId":"public-get-policy","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Get policy","tags":["network"]}},"/v1/networks/{network}/services/public-sovereign-metadata":{"get":{"description":"Return operator-safe public metadata for this sovereign. Upstream: /sovereign.json","operationId":"public-sovereign-metadata","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Sovereign metadata","tags":["network"]}},"/v1/networks/{network}/services/treaties-connectome-json":{"get":{"description":"Return an operator-facing Connectome view as JSON. Upstream: /connectome.json","operationId":"treaties-connectome-json","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Connectome json","tags":["treaties"]}},"/v1/networks/{network}/services/treaties-connectome-trust-path":{"get":{"description":"Explain whether one sovereign currently recognizes another. Upstream: /connectome/trust-path","operationId":"treaties-connectome-trust-path","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"query","name":"from","required":false,"schema":{"type":"string"}},{"in":"query","name":"source","required":false,"schema":{"type":"string"}},{"in":"query","name":"target","required":false,"schema":{"type":"string"}},{"in":"query","name":"to","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Connectome trust path","tags":["treaties"]}},"/v1/networks/{network}/services/treaties-get-treaty":{"get":{"description":"Return a persisted recognition treaty by ID. Upstream: /recognition-treaties/{treaty_id}","operationId":"treaties-get-treaty","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"query","name":"treaty_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Get treaty","tags":["treaties"]}},"/v1/networks/{network}/services/treaties-import-sovereign-revocation-feed":{"post":{"description":"Import a signed revocation feed from a recognized sovereign. Upstream: /admin/sovereign-revocation-feeds/import","operationId":"treaties-import-sovereign-revocation-feed","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Key-Id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Timestamp","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Nonce","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Signature","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"feed":{},"issuer_public_keys":["PASTE_AUTHORITY_PUBLIC_KEY"]},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Import sovereign revocation feed","tags":["treaties"]}},"/v1/networks/{network}/services/treaties-issue-treaty":{"post":{"description":"Issue a signed direct-recognition treaty for another sovereign. Upstream: /admin/recognition-treaties","operationId":"treaties-issue-treaty","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Key-Id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Timestamp","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Nonce","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Signature","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"scope":{"allowed_roles":["role:client"]},"subject_public_keys":["PASTE_AUTHORITY_PUBLIC_KEY"],"subject_sovereign_id":"authority-b","validity_hours":1},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Issue treaty","tags":["treaties"]}},"/v1/networks/{network}/services/treaties-list-treaties":{"get":{"description":"List persisted recognition treaties. Upstream: /recognition-treaties","operationId":"treaties-list-treaties","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"query","name":"issuer_sovereign_id","required":false,"schema":{"type":"string"}},{"in":"query","name":"status","required":false,"schema":{"type":"string"}},{"in":"query","name":"subject_sovereign_id","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"List treaties","tags":["treaties"]}},"/v1/networks/{network}/services/treaties-recognition-graph":{"get":{"description":"Export minimal sovereign recognition graph data. Upstream: /recognition-graph","operationId":"treaties-recognition-graph","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Recognition graph","tags":["treaties"]}},"/v1/networks/{network}/services/treaties-revoke-treaty":{"post":{"description":"Revoke a locally issued or imported recognition treaty. Upstream: /admin/recognition-treaties/{treaty_id}/revoke","operationId":"treaties-revoke-treaty","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}},{"in":"query","name":"treaty_id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Key-Id","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Timestamp","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Nonce","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Admin-Signature","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"reason":"cessation_of_operation"},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Revoke treaty","tags":["treaties"]}},"/v1/networks/{network}/services/treaties-verify-attestation-with-treaty-route":{"post":{"description":"Verify a membership attestation using a recognition treaty. Upstream: /attestations/verify-with-treaty","operationId":"treaties-verify-attestation-with-treaty-route","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"attestation":{},"issuer_public_keys":[],"treaty":{}},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Verify attestation with treaty","tags":["treaties"]}},"/v1/networks/{network}/services/treaties-verify-treaty":{"post":{"description":"Verify a signed recognition treaty. Upstream: /recognition-treaties/verify","operationId":"treaties-verify-treaty","parameters":[{"in":"path","name":"network","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"issuer_public_keys":[],"treaty":{}},"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"Authority response"},"201":{"description":"Created"},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Scope denied"},"404":{"description":"Not found"},"429":{"description":"Rate limit exceeded"},"502":{"description":"Authority unavailable or invalid response"}},"security":[{"bearerAuth":[]}],"summary":"Verify treaty","tags":["treaties"]}},"/v1/services":{"get":{"responses":{"200":{"description":"Service catalog"}},"summary":"List authority service operations"}},"/verify":{"post":{"operationId":"verify","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"certificate":{"$ref":"#/components/schemas/JoinCertificate"}},"required":["certificate"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Decision"}}},"description":"Successful response"},"400":{"description":"Invalid request"},"401":{"description":"Bearer credential required"},"403":{"description":"Scope denied"},"408":{"description":"Request timeout"},"413":{"description":"Body too large"},"422":{"description":"Invalid JSON schema"},"429":{"description":"Quota exhausted"},"503":{"description":"Unavailable"}},"security":[{"bearerAuth":[]}],"summary":"Verify a join certificate"}},"/verify/batch":{"post":{"operationId":"verify_batch","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"certificates":{"items":{"$ref":"#/components/schemas/JoinCertificate"},"minItems":1,"type":"array"}},"required":["certificates"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"results":{"items":{"$ref":"#/components/schemas/Decision"},"type":"array"}},"type":"object"}}},"description":"Successful response"},"400":{"description":"Invalid request"},"401":{"description":"Bearer credential required"},"403":{"description":"Scope denied"},"408":{"description":"Request timeout"},"413":{"description":"Body too large"},"422":{"description":"Invalid JSON schema"},"429":{"description":"Quota exhausted"},"503":{"description":"Unavailable"}},"security":[{"bearerAuth":[]}],"summary":"Verify a bounded batch"}}},"servers":[{"url":"/"}]}