{"openapi":"3.1.0","info":{"title":"aida tenant API","version":"1"},"paths":{"/healthz":{"get":{"summary":"Healthz","operationId":"healthz_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/a/{id}.html":{"get":{"summary":"Get Artifact","operationId":"get_artifact_a__id__html_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/conversations/{uid}/messages":{"post":{"summary":"Post Message","operationId":"post_message_api_v1_conversations__uid__messages_post","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string","title":"Uid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/conversations/{uid}/events":{"get":{"summary":"Get Events","operationId":"get_events_api_v1_conversations__uid__events_get","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string","title":"Uid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/conversations/{uid}/inflight":{"get":{"summary":"Get Inflight","description":"What is running in this conversation now: the questions without\nan answer yet, each with its thread. A page shows it; an integration\nchecks it before asking into a thread.","operationId":"get_inflight_api_v1_conversations__uid__inflight_get","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string","title":"Uid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/whoami":{"get":{"summary":"Whoami","description":"Which integration a key belongs to — the first call a new\nintegration makes, so a mis-pasted key is found before a question.","operationId":"whoami_api_v1_whoami_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/health":{"get":{"summary":"Health","operationId":"health_api_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/whoami":{"get":{"summary":"Whoami","operationId":"whoami_api_v1_admin_whoami_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/memory":{"get":{"summary":"Memory List","description":"Pages, and the proposals awaiting review with the judge's page\nand the advisory content hint on each.","operationId":"memory_list_api_v1_admin_memory_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/memory/show/{ref}":{"get":{"summary":"Memory Show","operationId":"memory_show_api_v1_admin_memory_show__ref__get","parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string","title":"Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/memory/apply":{"post":{"summary":"Memory Apply","description":"Applies every id it can; a refused one (a row-level identifier)\nis reported by id with the token and stays in the queue.","operationId":"memory_apply_api_v1_admin_memory_apply_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/memory/drop":{"post":{"summary":"Memory Drop","operationId":"memory_drop_api_v1_admin_memory_drop_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/memory/add":{"post":{"summary":"Memory Add","operationId":"memory_add_api_v1_admin_memory_add_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/memory/pages/{page}/review":{"get":{"summary":"Memory Review","description":"The page's unverified entries with evidence and the content\nmarker — what a person reads before ratifying.","operationId":"memory_review_api_v1_admin_memory_pages__page__review_get","parameters":[{"name":"page","in":"path","required":true,"schema":{"type":"string","title":"Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/memory/pages/{page}/ratify":{"post":{"summary":"Memory Ratify","description":"Marks the page's entries verified and commits, attested by the\nactor. The commit is the ratification; a marked-but-uncommitted\npage comes back with `sha: null` and the reason.","operationId":"memory_ratify_api_v1_admin_memory_pages__page__ratify_post","parameters":[{"name":"page","in":"path","required":true,"schema":{"type":"string","title":"Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/channels":{"get":{"summary":"Channels","operationId":"channels_api_v1_admin_channels_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/sources":{"get":{"summary":"Sources List","description":"Every registered source and whether the engine offers it, why not otherwise.","operationId":"sources_list_api_v1_admin_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Sources Add","description":"Register from an aida-scope hand-over: the zip as base64, the\nhost and port the engine connects to, and who may use it. The\npassword comes separately (`/sources/{name}/secret`); verification\nis a call of its own, and the engine offers nothing until it passes.","operationId":"sources_add_api_v1_admin_sources_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/sources/{name}/secret":{"post":{"summary":"Sources Secret","description":"The engine user's password, into the workspace .env — the engine\nreads it on every run, so no restart. Never logged, never echoed.","operationId":"sources_secret_api_v1_admin_sources__name__secret_post","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/sources/{name}/callers":{"put":{"summary":"Sources Callers","operationId":"sources_callers_api_v1_admin_sources__name__callers_put","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/sources/{name}/verify":{"post":{"summary":"Sources Verify","description":"Seven checks as the engine's user, from the engine's seat; the\nreport is written beside the policy and the source is offered\nonly when it passes. Exit 5 from the tool is a failed verification,\nreturned as the report, not as an error.","operationId":"sources_verify_api_v1_admin_sources__name__verify_post","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/integrations":{"get":{"summary":"Integrations List","description":"The client's own integrations, and the ones we provision (no key handling for those).","operationId":"integrations_list_api_v1_admin_integrations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Integrations Add","description":"Mint an integration: the key comes back ONCE and is never shown\nagain. It authenticates on the next request, no restart.","operationId":"integrations_add_api_v1_admin_integrations_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/integrations/{name}":{"delete":{"summary":"Integrations Revoke","operationId":"integrations_revoke_api_v1_admin_integrations__name__delete","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/memory/history":{"get":{"summary":"Memory History","operationId":"memory_history_api_v1_admin_memory_history_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/memory/audit":{"get":{"summary":"Memory Audit","description":"Advisory listing; `pii` is the tier worth failing over.","operationId":"memory_audit_api_v1_admin_memory_audit_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/memory/contradictions":{"post":{"summary":"Memory Contradictions","description":"A judge run over the assembled corpus; minutes. Reports pairs,\nnever edits a page.","operationId":"memory_contradictions_api_v1_admin_memory_contradictions_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/monitor":{"get":{"summary":"Monitor","description":"Runs, failures, latency, tokens and cost by window, day, model and\nchannel; incidents by severity and class; what is in flight; memory\nand git as structure; every source's status; and the operator's\naudit trail on this tenant — who looked at what, and why.","operationId":"monitor_api_v1_admin_monitor_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/monitor/rows":{"get":{"summary":"Monitor Rows","description":"The rows behind the numbers: runs with question, caller, exit, model\nand capture; incidents with detail; what is in flight. Your own\ntenant, your own rows — no audit row, that trail is for us.","operationId":"monitor_rows_api_v1_admin_monitor_rows_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/captures/{path}":{"get":{"summary":"Capture","description":"One of the tenant's own captures — an answer as the engine wrote\nit — for the history view. Only under memory/raw, only a regular\nfile inside the workspace, at most 512 KB.","operationId":"capture_api_v1_admin_captures__path__get","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/status":{"get":{"summary":"Status","operationId":"status_api_v1_admin_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"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"}}}}