{"openapi":"3.1.0","info":{"title":"Voror","description":"Clinical memory safety infrastructure — trust, PHI, namespace isolation, integrity chain, audit","version":"0.14.16"},"paths":{"/health/live":{"get":{"tags":["health"],"summary":"Health Live","description":"Return minimal liveness information.","operationId":"health_live_health_live_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/health/ready":{"get":{"tags":["health"],"summary":"Health Ready","description":"Return detailed dependency/readiness status.","operationId":"health_ready_health_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/health":{"get":{"tags":["health"],"summary":"Health","description":"Backward-compatible health endpoint (alias for /health/live).","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/health/governance":{"get":{"tags":["health"],"summary":"Health Governance","description":"Compliance/security posture metadata (auth required in non-dev profiles via HMAC/JWT/mTLS).\nIncludes jurisdiction, KMS, policy bundle, crypto, retention, safety queue etc. (no secrets).","operationId":"health_governance_health_governance_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GovernanceResponse"}}}}}}},"/store/delete":{"post":{"tags":["store"],"summary":"Delete Memories","description":"Delete memory ids for the caller's tenant + namespace only.","operationId":"delete_memories_store_delete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreDeleteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/store":{"post":{"tags":["store"],"summary":"Store Memory","description":"Store a clinical memory entry through the full safety pipeline.","operationId":"store_memory_store_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/recall":{"post":{"tags":["recall"],"summary":"Recall Memories","description":"Query memories for a patient through the safety pipeline.","operationId":"recall_memories_recall_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecallRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/knowledge/recall":{"post":{"tags":["knowledge"],"summary":"Knowledge Recall","operationId":"knowledge_recall_knowledge_recall_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeRecallRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeRecallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/knowledge/ingest":{"post":{"tags":["knowledge"],"summary":"Knowledge Ingest","operationId":"knowledge_ingest_knowledge_ingest_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeIngestRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeIngestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/audit/log/{namespace}":{"get":{"tags":["audit","audit"],"summary":"Get Audit Log","description":"Fetch recent audit entries for a namespace.\n\nQuery parameters\n----------------\nlimit       Maximum rows to return (1–500, default 50)\noperation   Filter by operation type: store | recall | verify | …","operationId":"get_audit_log_audit_log__namespace__get","parameters":[{"name":"namespace","in":"path","required":true,"schema":{"type":"string","title":"Namespace"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"operation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operation"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/audit/log/memory/{memory_id}":{"get":{"tags":["audit","audit"],"summary":"Get Memory Audit History","description":"Return the complete audit trail for a specific memory entry.\n\nUseful for forensic investigation: every store, update, supersede, and\nrecall that touched this memory_id.","operationId":"get_memory_audit_history_audit_log_memory__memory_id__get","parameters":[{"name":"memory_id","in":"path","required":true,"schema":{"type":"string","title":"Memory Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/audit/verify":{"post":{"tags":["audit","audit"],"summary":"Verify Audit Chain","description":"Verify the cryptographic hash chain for all audit entries in a namespace.\n\nWalks every row in sequence_number order, recomputing the audit_hash and\nchecking that previous_audit_hash links correctly.\n\nReturns a summary of chain integrity and any detected breaks.","operationId":"verify_audit_chain_audit_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyChainRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/audit/memory-chain/verify":{"post":{"tags":["audit","audit"],"summary":"Verify Memory Integrity Chain","description":"Walk per-entry memory chain_hash links for a namespace.\n\nDistinct from ``POST /audit/verify`` (audit ledger). Requires a store that\nimplements ``list_namespace_entries`` (Qdrant reference). Reports chain\nbreaks and sequence gaps.","operationId":"verify_memory_integrity_chain_audit_memory_chain_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemoryChainVerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/audit/reconstruct":{"post":{"tags":["audit","audit"],"summary":"Reconstruct Memory State","description":"Reconstruct the logical memory state for a namespace at a given point\nin time by replaying all store/supersede/delete audit events.\n\nReturns:\n  - active_memories    memory_id → gate_decision entries that were active\n  - superseded_memories list of memory_ids that had been superseded by as_of\n  - events_replayed    total number of events processed","operationId":"reconstruct_memory_state_audit_reconstruct_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReconstructRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/audit/retention/enforce":{"post":{"tags":["audit","audit"],"summary":"Enforce Retention Now","description":"Run one retention enforcement pass immediately.","operationId":"enforce_retention_now_audit_retention_enforce_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetentionEnforceRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/audit/log":{"post":{"tags":["audit","audit"],"summary":"Create Audit Entry","description":"Manually create an audit entry (admin use only).\n\nUseful for recording out-of-band events: manual data corrections,\nclinician-confirmed overrides, administrative actions.\n\nThe ledger fills in sequence_number, previous_audit_hash, and audit_hash.","operationId":"create_audit_entry_audit_log_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManualAuditEntryRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/audit/quarantine/recall":{"post":{"tags":["audit","audit"],"summary":"Quarantine Recall","description":"Break-glass endpoint: returns raw store search results that normal /recall\nwould suppress (tamper, immune, PHI-bearing, etc.).\n\nGated by audit-admin token + reason/purpose; audited before release.\nDoes not apply a second PHI code gate — approval is procedural/out-of-band.","operationId":"quarantine_recall_audit_quarantine_recall_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuarantineRecallRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ops/immune-backup":{"post":{"tags":["ops"],"summary":"Post Immune Backup","description":"Backup immune promoted-antibodies file (local host path).\n\nNot off-site DR. Requires audit admin token in non-dev profiles.","operationId":"post_immune_backup_ops_immune_backup_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ImmuneBackupRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/safety/calibration/event":{"post":{"tags":["safety"],"summary":"Post Calibration Event","operationId":"post_calibration_event_safety_calibration_event_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalibrationReviewEvent"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/safety/calibration/status":{"get":{"tags":["safety"],"summary":"Get Calibration Status","operationId":"get_calibration_status_safety_calibration_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/safety/review/queue":{"get":{"tags":["safety"],"summary":"Get Review Queue","operationId":"get_review_queue_safety_review_queue_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/safety/review/queue/{review_id}/resolve":{"post":{"tags":["safety"],"summary":"Resolve Review Item","operationId":"resolve_review_item_safety_review_queue__review_id__resolve_post","parameters":[{"name":"review_id","in":"path","required":true,"schema":{"type":"string","title":"Review Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveReviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/version":{"get":{"tags":["v1"],"summary":"Get Version","description":"Return the current API version metadata.","operationId":"get_version_v1_version_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Get Version V1 Version Get"}}}}}}},"/v1/store/delete":{"post":{"tags":["v1","store"],"summary":"Delete Memories","description":"Delete memory ids for the caller's tenant + namespace only.","operationId":"delete_memories_v1_store_delete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreDeleteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/store":{"post":{"tags":["v1","store"],"summary":"Store Memory","description":"Store a clinical memory entry through the full safety pipeline.","operationId":"store_memory_v1_store_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/recall":{"post":{"tags":["v1","recall"],"summary":"Recall Memories","description":"Query memories for a patient through the safety pipeline.","operationId":"recall_memories_v1_recall_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecallRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/knowledge/recall":{"post":{"tags":["v1","knowledge"],"summary":"Knowledge Recall","operationId":"knowledge_recall_v1_knowledge_recall_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeRecallRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeRecallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/knowledge/ingest":{"post":{"tags":["v1","knowledge"],"summary":"Knowledge Ingest","operationId":"knowledge_ingest_v1_knowledge_ingest_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeIngestRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeIngestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/audit/log/{namespace}":{"get":{"tags":["v1","audit","audit"],"summary":"Get Audit Log","description":"Fetch recent audit entries for a namespace.\n\nQuery parameters\n----------------\nlimit       Maximum rows to return (1–500, default 50)\noperation   Filter by operation type: store | recall | verify | …","operationId":"get_audit_log_v1_audit_log__namespace__get","parameters":[{"name":"namespace","in":"path","required":true,"schema":{"type":"string","title":"Namespace"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"operation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operation"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/audit/log/memory/{memory_id}":{"get":{"tags":["v1","audit","audit"],"summary":"Get Memory Audit History","description":"Return the complete audit trail for a specific memory entry.\n\nUseful for forensic investigation: every store, update, supersede, and\nrecall that touched this memory_id.","operationId":"get_memory_audit_history_v1_audit_log_memory__memory_id__get","parameters":[{"name":"memory_id","in":"path","required":true,"schema":{"type":"string","title":"Memory Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/audit/verify":{"post":{"tags":["v1","audit","audit"],"summary":"Verify Audit Chain","description":"Verify the cryptographic hash chain for all audit entries in a namespace.\n\nWalks every row in sequence_number order, recomputing the audit_hash and\nchecking that previous_audit_hash links correctly.\n\nReturns a summary of chain integrity and any detected breaks.","operationId":"verify_audit_chain_v1_audit_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyChainRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/audit/memory-chain/verify":{"post":{"tags":["v1","audit","audit"],"summary":"Verify Memory Integrity Chain","description":"Walk per-entry memory chain_hash links for a namespace.\n\nDistinct from ``POST /audit/verify`` (audit ledger). Requires a store that\nimplements ``list_namespace_entries`` (Qdrant reference). Reports chain\nbreaks and sequence gaps.","operationId":"verify_memory_integrity_chain_v1_audit_memory_chain_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemoryChainVerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/audit/reconstruct":{"post":{"tags":["v1","audit","audit"],"summary":"Reconstruct Memory State","description":"Reconstruct the logical memory state for a namespace at a given point\nin time by replaying all store/supersede/delete audit events.\n\nReturns:\n  - active_memories    memory_id → gate_decision entries that were active\n  - superseded_memories list of memory_ids that had been superseded by as_of\n  - events_replayed    total number of events processed","operationId":"reconstruct_memory_state_v1_audit_reconstruct_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReconstructRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/audit/retention/enforce":{"post":{"tags":["v1","audit","audit"],"summary":"Enforce Retention Now","description":"Run one retention enforcement pass immediately.","operationId":"enforce_retention_now_v1_audit_retention_enforce_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetentionEnforceRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/audit/log":{"post":{"tags":["v1","audit","audit"],"summary":"Create Audit Entry","description":"Manually create an audit entry (admin use only).\n\nUseful for recording out-of-band events: manual data corrections,\nclinician-confirmed overrides, administrative actions.\n\nThe ledger fills in sequence_number, previous_audit_hash, and audit_hash.","operationId":"create_audit_entry_v1_audit_log_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManualAuditEntryRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/audit/quarantine/recall":{"post":{"tags":["v1","audit","audit"],"summary":"Quarantine Recall","description":"Break-glass endpoint: returns raw store search results that normal /recall\nwould suppress (tamper, immune, PHI-bearing, etc.).\n\nGated by audit-admin token + reason/purpose; audited before release.\nDoes not apply a second PHI code gate — approval is procedural/out-of-band.","operationId":"quarantine_recall_v1_audit_quarantine_recall_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuarantineRecallRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/health/live":{"get":{"tags":["v1","health"],"summary":"Health Live","description":"Return minimal liveness information.","operationId":"health_live_v1_health_live_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/v1/health/ready":{"get":{"tags":["v1","health"],"summary":"Health Ready","description":"Return detailed dependency/readiness status.","operationId":"health_ready_v1_health_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/v1/health":{"get":{"tags":["v1","health"],"summary":"Health","description":"Backward-compatible health endpoint (alias for /health/live).","operationId":"health_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/v1/health/governance":{"get":{"tags":["v1","health"],"summary":"Health Governance","description":"Compliance/security posture metadata (auth required in non-dev profiles via HMAC/JWT/mTLS).\nIncludes jurisdiction, KMS, policy bundle, crypto, retention, safety queue etc. (no secrets).","operationId":"health_governance_v1_health_governance_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GovernanceResponse"}}}}}}},"/v1/policy/bundle":{"get":{"tags":["v1","policy"],"summary":"Get Policy Bundle Status","description":"Return active signed policy bundle metadata (public, no signature bytes).","operationId":"get_policy_bundle_status_v1_policy_bundle_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyBundleStatusResponse"}}}}}}},"/v1/safety/calibration/event":{"post":{"tags":["v1","safety"],"summary":"Post Calibration Event","operationId":"post_calibration_event_v1_safety_calibration_event_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalibrationReviewEvent"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/safety/calibration/status":{"get":{"tags":["v1","safety"],"summary":"Get Calibration Status","operationId":"get_calibration_status_v1_safety_calibration_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/safety/review/queue":{"get":{"tags":["v1","safety"],"summary":"Get Review Queue","operationId":"get_review_queue_v1_safety_review_queue_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/safety/review/queue/{review_id}/resolve":{"post":{"tags":["v1","safety"],"summary":"Resolve Review Item","operationId":"resolve_review_item_v1_safety_review_queue__review_id__resolve_post","parameters":[{"name":"review_id","in":"path","required":true,"schema":{"type":"string","title":"Review Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveReviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/immune-backup":{"post":{"tags":["v1","ops"],"summary":"Post Immune Backup","description":"Backup immune promoted-antibodies file (local host path).\n\nNot off-site DR. Requires audit admin token in non-dev profiles.","operationId":"post_immune_backup_v1_ops_immune_backup_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ImmuneBackupRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"CalibrationReviewEvent":{"properties":{"predicted_gate":{"type":"string","minLength":1,"title":"Predicted Gate","description":"allow/pass/block/reject/quarantine"},"reviewer_safe":{"type":"boolean","title":"Reviewer Safe","description":"Human reviewer says content is safe."},"count":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"Count","default":1}},"type":"object","required":["predicted_gate","reviewer_safe"],"title":"CalibrationReviewEvent"},"CitationHit":{"properties":{"source_doc_id":{"type":"string","title":"Source Doc Id"},"section_ref":{"type":"string","title":"Section Ref"},"passage_hash":{"type":"string","title":"Passage Hash"},"retrieval_score":{"type":"number","title":"Retrieval Score"},"chunk_text":{"type":"string","title":"Chunk Text"},"point_id":{"type":"string","title":"Point Id","description":"Qdrant point identifier"},"corpus_field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Corpus Field"},"trust_score":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Trust Score"}},"type":"object","required":["source_doc_id","section_ref","passage_hash","retrieval_score","chunk_text","point_id"],"title":"CitationHit","description":"A single retrieved passage with non-optional citation metadata."},"GovernanceResponse":{"properties":{"service":{"type":"string","title":"Service"},"version":{"type":"string","title":"Version"},"deployment_profile":{"type":"string","title":"Deployment Profile"},"jurisdiction":{"type":"string","title":"Jurisdiction"},"data_domain":{"type":"string","title":"Data Domain"},"overlay_id":{"type":"string","title":"Overlay Id","default":""},"overlay_version":{"type":"string","title":"Overlay Version","default":""},"overlay_sector":{"type":"string","title":"Overlay Sector","default":""},"knowledge_index_build_id":{"type":"string","title":"Knowledge Index Build Id","default":""},"knowledge_rerank_mode":{"type":"string","title":"Knowledge Rerank Mode","default":"none"},"knowledge_suggested_corpus":{"type":"string","title":"Knowledge Suggested Corpus","default":""},"kms_provider":{"type":"string","title":"Kms Provider"},"vector_treat_as_sensitive":{"type":"boolean","title":"Vector Treat As Sensitive"},"vector_strict_no_cloud":{"type":"boolean","title":"Vector Strict No Cloud"},"gdpr_signal":{"type":"boolean","title":"Gdpr Signal"},"hipaa_signal":{"type":"boolean","title":"Hipaa Signal"},"audit_retention_years_recommended":{"type":"integer","title":"Audit Retention Years Recommended"},"policy_bundle_id":{"type":"string","title":"Policy Bundle Id","default":""},"policy_bundle_version":{"type":"string","title":"Policy Bundle Version","default":""},"policy_bundle_sha256":{"type":"string","title":"Policy Bundle Sha256","default":""},"policy_bundle_verified":{"type":"boolean","title":"Policy Bundle Verified","default":false},"clinical_guardrail_packs":{"items":{"type":"string"},"type":"array","title":"Clinical Guardrail Packs","default":[]},"safety_review_hook_configured":{"type":"boolean","title":"Safety Review Hook Configured","default":false},"safety_review_open_queue_count":{"type":"integer","title":"Safety Review Open Queue Count","default":0},"safety_calibration_false_block_warn":{"type":"boolean","title":"Safety Calibration False Block Warn","default":false},"safety_calibration_false_pass_warn":{"type":"boolean","title":"Safety Calibration False Pass Warn","default":false},"safety_calibration_false_block_rate":{"type":"number","title":"Safety Calibration False Block Rate","default":0.0},"safety_calibration_false_pass_rate":{"type":"number","title":"Safety Calibration False Pass Rate","default":0.0},"safety_calibration_block_review_count":{"type":"integer","title":"Safety Calibration Block Review Count","default":0},"safety_calibration_pass_review_count":{"type":"integer","title":"Safety Calibration Pass Review Count","default":0},"crypto_active_versions_count":{"type":"integer","title":"Crypto Active Versions Count","default":0},"crypto_latest_version":{"type":"string","title":"Crypto Latest Version","default":""},"crypto_latest_key_age_days":{"type":"number","title":"Crypto Latest Key Age Days","default":-1.0},"crypto_rotation_lag_days":{"type":"number","title":"Crypto Rotation Lag Days","default":-1.0},"crypto_strict_ready":{"type":"boolean","title":"Crypto Strict Ready","default":true},"crypto_strict_issues":{"items":{"type":"string"},"type":"array","title":"Crypto Strict Issues","default":[]},"hmac_allow_v1":{"type":"boolean","title":"Hmac Allow V1","default":false},"retention_enforcer_enabled":{"type":"boolean","title":"Retention Enforcer Enabled","default":false},"retention_enforcer_running":{"type":"boolean","title":"Retention Enforcer Running","default":false},"retention_enforcer_last_run_id":{"type":"string","title":"Retention Enforcer Last Run Id","default":""},"retention_enforcer_last_completed_at":{"type":"string","title":"Retention Enforcer Last Completed At","default":""},"retention_enforcer_last_error":{"type":"string","title":"Retention Enforcer Last Error","default":""},"retention_enforcer_last_entries_scanned":{"type":"integer","title":"Retention Enforcer Last Entries Scanned","default":0},"retention_enforcer_last_entries_deleted":{"type":"integer","title":"Retention Enforcer Last Entries Deleted","default":0},"retention_enforcer_last_dry_run":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Retention Enforcer Last Dry Run"}},"type":"object","required":["service","version","deployment_profile","jurisdiction","data_domain","kms_provider","vector_treat_as_sensitive","vector_strict_no_cloud","gdpr_signal","hipaa_signal","audit_retention_years_recommended"],"title":"GovernanceResponse","description":"Non-secret compliance metadata for operators (SOC2/HIPAA/GDPR alignment hooks)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthResponse":{"properties":{"status":{"type":"string","title":"Status"},"service":{"type":"string","title":"Service"},"version":{"type":"string","title":"Version"},"profile":{"type":"string","title":"Profile"},"timestamp":{"type":"string","title":"Timestamp"},"checks":{"additionalProperties":{"type":"string"},"type":"object","title":"Checks","default":{}}},"type":"object","required":["status","service","version","profile","timestamp"],"title":"HealthResponse","description":"Health check response."},"ImmuneBackupRequest":{"properties":{"keep":{"type":"integer","maximum":365.0,"minimum":1.0,"title":"Keep","default":14},"dry_run":{"type":"boolean","title":"Dry Run","default":false},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"backup_dir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backup Dir"}},"type":"object","title":"ImmuneBackupRequest"},"KnowledgeChunkIngest":{"properties":{"chunk_text":{"type":"string","minLength":1,"title":"Chunk Text"},"source_doc_id":{"type":"string","minLength":1,"title":"Source Doc Id"},"section_ref":{"type":"string","minLength":1,"title":"Section Ref"},"passage_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Passage Hash","description":"If omitted, computed as sha256 of whitespace-normalized chunk_text"},"field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field"},"trust_score":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Trust Score","default":0.7},"point_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Point Id","description":"Optional UUID for idempotent upsert; server generates if omitted"}},"type":"object","required":["chunk_text","source_doc_id","section_ref"],"title":"KnowledgeChunkIngest","description":"One passage to upsert into a knowledge corpus."},"KnowledgeIngestRequest":{"properties":{"patient_ns":{"type":"string","title":"Patient Ns"},"corpus_id":{"type":"string","minLength":1,"title":"Corpus Id","description":"Logical corpus id; must match strict [a-zA-Z0-9][a-zA-Z0-9_-]{0,63} or will be rejected."},"chunks":{"items":{"$ref":"#/components/schemas/KnowledgeChunkIngest"},"type":"array","minItems":1,"title":"Chunks"}},"type":"object","required":["patient_ns","corpus_id","chunks"],"title":"KnowledgeIngestRequest","description":"POST /knowledge/ingest body."},"KnowledgeIngestResponse":{"properties":{"upserted_point_ids":{"items":{"type":"string"},"type":"array","title":"Upserted Point Ids"},"corpus_id":{"type":"string","title":"Corpus Id"},"index_build_id":{"type":"string","title":"Index Build Id","default":""},"audit_id":{"type":"string","title":"Audit Id","default":""}},"type":"object","required":["upserted_point_ids","corpus_id"],"title":"KnowledgeIngestResponse","description":"Result of a batch knowledge upsert."},"KnowledgeRecallRequest":{"properties":{"query":{"type":"string","title":"Query"},"patient_ns":{"type":"string","title":"Patient Ns"},"corpus_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Corpus Id","description":"Logical corpus id (Qdrant collection token). Must match [a-zA-Z0-9][a-zA-Z0-9_-]{0,63} (strict). Friendly names are mapped via slug+sha internally for collection safety. Omit to use the server default for the active overlay sector + data domain (see GET /health/governance knowledge_suggested_corpus)."},"limit":{"type":"integer","title":"Limit","default":10},"field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field","description":"Optional payload.field filter (e.g. medical | legal)"},"min_trust_score":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Min Trust Score","default":0.0}},"type":"object","required":["query","patient_ns"],"title":"KnowledgeRecallRequest","description":"POST /knowledge/recall body."},"KnowledgeRecallResponse":{"properties":{"citations":{"items":{"$ref":"#/components/schemas/CitationHit"},"type":"array","title":"Citations"},"total_results":{"type":"integer","title":"Total Results"},"dropped_incomplete":{"type":"integer","title":"Dropped Incomplete","description":"Rows skipped because citation metadata or passage text was missing","default":0},"corpus_id":{"type":"string","title":"Corpus Id"},"corpus_resolved_from_hint":{"type":"boolean","title":"Corpus Resolved From Hint","description":"True when corpus_id was omitted and the server chose the default corpus","default":false},"index_build_id":{"type":"string","title":"Index Build Id","default":""},"audit_id":{"type":"string","title":"Audit Id","default":""},"qdrant_degraded":{"type":"boolean","title":"Qdrant Degraded","default":false}},"type":"object","required":["citations","total_results","corpus_id"],"title":"KnowledgeRecallResponse","description":"Strict success body: every item in ``citations`` satisfies ``CitationHit``."},"ManualAuditEntryRequest":{"properties":{"operation":{"type":"string","title":"Operation","default":"verify"},"namespace":{"type":"string","title":"Namespace","default":""},"memory_id":{"type":"string","title":"Memory Id","default":""},"gate_decision":{"type":"string","title":"Gate Decision","default":"allow"},"actor_id":{"type":"string","title":"Actor Id","default":""},"actor_model_id":{"type":"string","title":"Actor Model Id","default":""},"agent_id":{"type":"string","title":"Agent Id","default":""},"purpose":{"type":"string","title":"Purpose","default":""},"request_metadata":{"additionalProperties":true,"type":"object","title":"Request Metadata"}},"type":"object","title":"ManualAuditEntryRequest","description":"Request body for POST /audit/log (admin use)."},"MemoryChainVerifyRequest":{"properties":{"namespace":{"type":"string","title":"Namespace"},"collection_types":{"items":{"type":"string"},"type":"array","title":"Collection Types"},"limit_per_type":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"Limit Per Type","default":2000},"stop_on_first_error":{"type":"boolean","title":"Stop On First Error","default":false}},"type":"object","required":["namespace"],"title":"MemoryChainVerifyRequest","description":"Request body for POST /audit/memory-chain/verify."},"PolicyBundleStatusResponse":{"properties":{"active":{"type":"boolean","title":"Active"},"policy_id":{"type":"string","title":"Policy Id","default":""},"policy_version":{"type":"string","title":"Policy Version","default":""},"content_sha256":{"type":"string","title":"Content Sha256","default":""},"verified":{"type":"boolean","title":"Verified","default":false},"source_path":{"type":"string","title":"Source Path","default":""},"changelog_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Changelog Path"},"policy_profile_count":{"type":"integer","title":"Policy Profile Count","default":0}},"type":"object","required":["active"],"title":"PolicyBundleStatusResponse"},"QuarantineRecallRequest":{"properties":{"query":{"type":"string","title":"Query"},"patient_ns":{"type":"string","title":"Patient Ns","default":"default"},"collection_types":{"items":{"type":"string"},"type":"array","title":"Collection Types"},"min_trust_tier":{"type":"string","title":"Min Trust Tier","default":"LOW"},"limit":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Limit","default":10},"as_of":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"As Of"},"reason":{"type":"string","minLength":10,"title":"Reason","description":"Mandatory justification for break-glass access"},"purpose":{"type":"string","minLength":5,"title":"Purpose","description":"Purpose of this access (e.g. 'legal subpoena review')"}},"type":"object","required":["query","reason","purpose"],"title":"QuarantineRecallRequest","description":"Break-glass recall for quarantined/tampered/PHI-bearing store entries.\n\nRequires audit-admin token + explicit reason/purpose. An immutable audit row\nis written before any data is released.\n\nHonesty: this endpoint returns store contents as stored, including\nPHI-bearing entries, to any caller who passes the audit-admin gate.\nPHI legal/clinical approval is procedural and outside this code path —\nthere is no second coded PHI filter here."},"RecallRequest":{"properties":{"query":{"type":"string","title":"Query"},"patient_ns":{"type":"string","title":"Patient Ns","default":"default"},"collection_types":{"items":{"type":"string"},"type":"array","title":"Collection Types"},"min_trust_tier":{"type":"string","title":"Min Trust Tier","default":"LOW"},"limit":{"type":"integer","title":"Limit","default":10},"include_superseded":{"type":"boolean","title":"Include Superseded","default":false},"include_tampered":{"type":"boolean","title":"Include Tampered","default":false},"as_of":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"As Of"}},"type":"object","required":["query"],"title":"RecallRequest","description":"Incoming recall request — supports both v0.9.0 and v0.7.7 formats.\n\nv0.9.0: {patient_ns, query, collection_types, min_trust_tier, as_of, ...}\nv0.8.0: {patient_ns, query, collection_types, min_trust_tier}\nv0.7.7: {query, limit}  (benchmark compat)"},"ReconstructRequest":{"properties":{"namespace":{"type":"string","title":"Namespace"},"as_of":{"type":"string","format":"date-time","title":"As Of","description":"Point-in-time UTC timestamp for state reconstruction"}},"type":"object","required":["namespace"],"title":"ReconstructRequest","description":"Request body for POST /audit/reconstruct."},"ResolveReviewRequest":{"properties":{"note":{"type":"string","maxLength":2000,"title":"Note","default":""}},"type":"object","title":"ResolveReviewRequest"},"RetentionEnforceRequest":{"properties":{"dry_run":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Dry Run"},"namespaces":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Namespaces"}},"type":"object","title":"RetentionEnforceRequest","description":"Request body for POST /audit/retention/enforce (admin use)."},"RetentionPolicy":{"type":"string","enum":["default","clinical","legal","ephemeral","permanent"],"title":"RetentionPolicy","description":"Retention policy assigned to a memory entry at write time.\n\nDEFAULT    — standard retention; eligible for eviction after decay\nCLINICAL   — clinical-grade; retained for 7-year Australian records minimum\nLEGAL      — legal hold; retained until explicitly released\nEPHEMERAL  — session-scoped; purged when session ends\nPERMANENT  — never evicted; used for allergy/diagnosis anchors"},"StoreDeleteRequest":{"properties":{"patient_ns":{"type":"string","title":"Patient Ns"},"memory_ids":{"items":{"type":"string"},"type":"array","title":"Memory Ids"},"purpose":{"type":"string","title":"Purpose","default":"delete"},"retention_policy":{"$ref":"#/components/schemas/RetentionPolicy","default":"default"}},"type":"object","required":["patient_ns","memory_ids"],"title":"StoreDeleteRequest","description":"Tenant-scoped memory delete (product surface for retention / MLSB DELETE).\n\nUses the active StoreBackend ``delete_tenant_scoped`` path — not a silent\nno-op. Backends that do not support retention delete return\n``DELETE_UNSUPPORTED`` (HTTP 422). Clinical/legal still require real tenant\n+ namespace authz; this is not break-glass and not a PHI waiver."},"StoreRequest":{"properties":{"content":{"type":"string","title":"Content"},"patient_ns":{"type":"string","title":"Patient Ns","default":"default"},"collection_type":{"type":"string","title":"Collection Type","default":"episodic"},"provenance":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provenance"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"source_node":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Node"},"source_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Type"},"purpose":{"type":"string","title":"Purpose","default":""},"retention_policy":{"$ref":"#/components/schemas/RetentionPolicy","default":"default"},"valid_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Valid From"},"valid_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Valid Until"},"calibration_reviewer_safe":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Calibration Reviewer Safe"}},"type":"object","required":["content"],"title":"StoreRequest","description":"Incoming store request — supports both v0.9.0 and v0.7.7 formats.\n\nv0.9.0: {patient_ns, content, provenance, purpose, retention_policy, ...}\nv0.8.0: {patient_ns, content, provenance}\nv0.7.7: {content, source_node, source_type}  (benchmark compat)"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VerifyChainRequest":{"properties":{"namespace":{"type":"string","title":"Namespace"},"stop_on_first_error":{"type":"boolean","title":"Stop On First Error","default":false}},"type":"object","required":["namespace"],"title":"VerifyChainRequest","description":"Request body for POST /audit/verify."}}}}