{"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/inbox":{"get":{"summary":"List Inbox","description":"Arrivals newest first: `limit` (1..200, default 50) and `before`\n(an id; the page older than it). `next` is the cursor for the next\npage, null at the end.","operationId":"list_inbox_api_v1_inbox_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Post Inbox","description":"One arrival: `sender` (required), `subject`, `text`, and any number\nof `files` parts, as multipart/form-data. Text-only is fine (a\nurlencoded form does for that); so is files-only. Stored as it came, attributed to web:<integration>; the\nsame message twice in one second comes back `duplicate: true` and\nis stored once. 413 over the body or file caps, 415 for a file type\nthe store does not take, 400 for anything else, each naming the rule.","operationId":"post_inbox_api_v1_inbox_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/inbox/{item_id}":{"get":{"summary":"Get Inbox","operationId":"get_inbox_api_v1_inbox__item_id__get","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/inbox/{item_id}/files/{name}":{"get":{"summary":"Get Inbox File","description":"The attachment's bytes with the content type the store gave it\n(by extension, never the uploader's claim), as a download. Only a\nname the item lists; anything else is a 404.","operationId":"get_inbox_file_api_v1_inbox__item_id__files__name__get","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}},{"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/search":{"get":{"summary":"Search","description":"Full-text hits from every mailbox source this person may read,\nmerged best first — what a Related panel shows while the question\nis still being answered. `q` (≤ 500 chars), `limit` (1..50, default\n10), `since` (an ISO date), `source` (one name). Every word of `q`\nis required; when no message has them all the hits carry some of\nthem and `mode` is \"or\". A month or a day in `q` (`2025-10`,\n`október 2025`) filters by date and is echoed as `since`/`until`.\nInstead of `q`: `related=<message_id>` with `source=` — the thread\nand the messages sharing an extracted reference with that message,\neach hit with `why`; 404 when the source does not hold the message.\nThe person is `X-Actor`, the caller `web:<integration>:<actor>`.\n`unavailable` is true when the mailbox package is not installed on\nthis tenant; an empty `sources` means no text source is granted to\nthe caller.","operationId":"search_api_v1_search_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/queue/counts":{"get":{"summary":"Queue Counts","description":"Records per status and per kind, and the open ones per kind — the badge.","operationId":"queue_counts_api_v1_queue_counts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/queue":{"get":{"summary":"Queue List","description":"The queue newest first, each record whole. `status` (open |\ndecided | closed | expired), `kind`, `assigned` (a principal;\nempty for unassigned), `limit` (1..200, default 50), `before`\n(an id: the page older than it). `next` is the cursor, null at\nthe end.","operationId":"queue_list_api_v1_queue_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/queue/{record_id}":{"get":{"summary":"Queue Get","operationId":"queue_get_api_v1_queue__record_id__get","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"string","title":"Record Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/queue/{record_id}/decide":{"post":{"summary":"Queue Decide","description":"Take an outcome as the person behind `X-Actor`: `{outcome, note?}`.\nThe engine records the decision as web:<integration>:<actor>,\nresolved through access.yaml, and carries it out; the record\ncomes back with `decision.result` — `pending` when the write\nruntime is not installed, `error` when the act failed (the\ndecision stands either way). 404 unknown, 409 already decided\nor closed, 403 when the outcome requires a kind this principal\nis not, 400 for an outcome the record does not offer.","operationId":"queue_decide_api_v1_queue__record_id__decide_post","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"string","title":"Record Id"}}],"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","description":"This tenant's state: the process, the channel's counts, the\ngateway's load, and `mail_sync` — the last mail cycle (`last_utc`,\nper source `indexed`/`arrivals`/`error`, the `intake` it ran), null\nbefore the first cycle or when the task is off; `expiry_sweep` — the\nlast sweep of the stock (postbox.expiry_sweep: counts only), null\nbefore the first sweep or when the task is off.","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 a database from an aida-scope hand-over: the zip as\nbase64 and the host and port the engine connects to. Who may use\nit is the access table (`/access/grants`); the password comes\nseparately (`/sources/{name}/secret`); verification is a call of\nits own, and the engine offers nothing until it passes. A mailbox\n(a `kind: mailbox` policy) is not registered here: 400, naming\n`aida-mailbox register`, which the operator runs on the tenant.","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/access":{"get":{"summary":"Access List","description":"Every principal with its identities and sources, the registered\nsource names, and the grants naming a source not registered yet.","operationId":"access_list_api_v1_admin_access_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/access/principals":{"post":{"summary":"Access Add","operationId":"access_add_api_v1_admin_access_principals_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/access/principals/{name}":{"delete":{"summary":"Access Remove","operationId":"access_remove_api_v1_admin_access_principals__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/access/principals/{name}/identities":{"post":{"summary":"Access Identity Add","operationId":"access_identity_add_api_v1_admin_access_principals__name__identities_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"}}}}}},"delete":{"summary":"Access Identity Remove","operationId":"access_identity_remove_api_v1_admin_access_principals__name__identities_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/access/grants":{"post":{"summary":"Access Grant","operationId":"access_grant_api_v1_admin_access_grants_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"delete":{"summary":"Access Revoke","operationId":"access_revoke_api_v1_admin_access_grants_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/models":{"get":{"summary":"Models Show","description":"The route, the tiers as pinned, which are unset and what each\nfalls back to, env values that beat the file, and the engine pin.","operationId":"models_show_api_v1_admin_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"put":{"summary":"Models Set","description":"Set ask, fast, deep, slow — a string pins the tier, \"\" or null\nunsets it (it falls back), an absent key is left alone. The same\ncode path as `workspace models set`, in-process: the loader's rules\nfirst, then only the models block rewritten and committed under\nthe actor. The route and the engine pin are the operator's, per\nhost (`just tenant-models`). Applies on the next run, no restart.","operationId":"models_set_api_v1_admin_models_put","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/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; intake measured (goal\n1: orders drafted without a warning, deviations by rule, blocked,\nseconds to record, model calls, records and decisions — per day\nand in total); and the operator's audit trail on this tenant —\nwho 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/tasks":{"get":{"summary":"Tasks List","operationId":"tasks_list_api_v1_admin_tasks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Tasks Draft","description":"A task from a goal in the client's words: the builder maps the\ngoal onto its graph and writes tasks/<id>.md disabled. Minutes.\nWhat comes back: the questions the builder could not settle, and\nper source the brief for drafting its SQL — a research question.","operationId":"tasks_draft_api_v1_admin_tasks_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/tasks/{tid}":{"get":{"summary":"Tasks Show","operationId":"tasks_show_api_v1_admin_tasks__tid__get","parameters":[{"name":"tid","in":"path","required":true,"schema":{"type":"string","title":"Tid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/tasks/{tid}/outcomes":{"get":{"summary":"Tasks Outcomes","operationId":"tasks_outcomes_api_v1_admin_tasks__tid__outcomes_get","parameters":[{"name":"tid","in":"path","required":true,"schema":{"type":"string","title":"Tid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/tasks/{tid}/file":{"get":{"summary":"Tasks File","description":"The task file, and its human-owned sections split out for editing.","operationId":"tasks_file_api_v1_admin_tasks__tid__file_get","parameters":[{"name":"tid","in":"path","required":true,"schema":{"type":"string","title":"Tid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"summary":"Tasks File Write","description":"Write the human-owned sections and commit — the commit is the\nratification, under the actor's name. A definition the runner\nwould refuse is refused here and nothing lands.","operationId":"tasks_file_write_api_v1_admin_tasks__tid__file_put","parameters":[{"name":"tid","in":"path","required":true,"schema":{"type":"string","title":"Tid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/tasks/{tid}/enabled":{"put":{"summary":"Tasks Enabled","operationId":"tasks_enabled_api_v1_admin_tasks__tid__enabled_put","parameters":[{"name":"tid","in":"path","required":true,"schema":{"type":"string","title":"Tid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/tasks/{tid}/run":{"post":{"summary":"Tasks Run","description":"Run it now: the ratified SQL, then the serve step, then a digest. Minutes.","operationId":"tasks_run_api_v1_admin_tasks__tid__run_post","parameters":[{"name":"tid","in":"path","required":true,"schema":{"type":"string","title":"Tid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/tasks/{tid}/actions":{"get":{"summary":"Tasks Actions","operationId":"tasks_actions_api_v1_admin_tasks__tid__actions_get","parameters":[{"name":"tid","in":"path","required":true,"schema":{"type":"string","title":"Tid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/tasks/{tid}/record":{"post":{"summary":"Tasks Record","description":"Record an outcome against a queue item, as the actor.","operationId":"tasks_record_api_v1_admin_tasks__tid__record_post","parameters":[{"name":"tid","in":"path","required":true,"schema":{"type":"string","title":"Tid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/digests":{"get":{"summary":"Digests List","operationId":"digests_list_api_v1_admin_digests_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/digests/{stamp}":{"get":{"summary":"Digest Read","operationId":"digest_read_api_v1_admin_digests__stamp__get","parameters":[{"name":"stamp","in":"path","required":true,"schema":{"type":"string","title":"Stamp"}}],"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"}}}}