{"openapi":"3.1.0","info":{"title":"thinqOS API","version":"0.1.0"},"paths":{"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Health Get"}}}}}}},"/health/deep":{"get":{"summary":"Health Deep","operationId":"health_deep_health_deep_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Deep Health Deep Get"}}}}}}},"/api/manifest":{"get":{"summary":"Manifest","operationId":"manifest_api_manifest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Manifest Api Manifest Get"}}}}}}},"/api/me":{"get":{"summary":"Me","operationId":"me_api_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Me Api Me Get"}}}}}}},"/api/folders/{library_id}/syncs":{"get":{"tags":["library-syncs"],"summary":"List Syncs","description":"List every sync of a folder, GitHub, website and Google imports alike, with state, schedule, last run, and a website's last-sweep coverage.","operationId":"list_syncs_api_folders__library_id__syncs_get","parameters":[{"name":"library_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Library Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SyncOut"},"title":"Response List Syncs Api Folders  Library Id  Syncs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tier":"extended","x-mcp-action":"syncs_get"},"post":{"tags":["library-syncs"],"summary":"Create Sync","description":"Create a sync. A GitHub-out sync writes nothing until its first-sync\npreview is confirmed with ``/start``; a website sync is watched at once;\na Google import runs first on the next sweep, or with Sync now.","operationId":"create_sync_api_folders__library_id__syncs_post","parameters":[{"name":"library_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Library Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSyncIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tier":"extended","x-mcp-action":"syncs_create"}},"/api/folders/{library_id}/syncs/github/connections":{"get":{"tags":["library-syncs"],"summary":"List Github Connections","description":"List the caller's own connected GitHub connections, to choose which one a new folder sync writes through.","operationId":"list_github_connections_api_folders__library_id__syncs_github_connections_get","parameters":[{"name":"library_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Library Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GitHubConnectionOut"},"title":"Response List Github Connections Api Folders  Library Id  Syncs Github Connections Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tier":"extended","x-mcp-action":"syncs_github_connections_get"}},"/api/folders/{library_id}/syncs/github/folders":{"get":{"tags":["library-syncs"],"summary":"List Repository Folders","description":"List the folders in a GitHub repository branch with file counts, checked against the caller's GitHub connection, for picking where a sync writes.","operationId":"list_repository_folders_api_folders__library_id__syncs_github_folders_get","parameters":[{"name":"library_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Library Id"}},{"name":"installation_instance_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Installation Instance Id"}},{"name":"owner","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":100,"title":"Owner"}},{"name":"name","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":100,"title":"Name"}},{"name":"branch","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":255,"default":"main","title":"Branch"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RepoFolderOut"},"title":"Response List Repository Folders Api Folders  Library Id  Syncs Github Folders Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tier":"extended","x-mcp-action":"syncs_github_folders_get"}},"/api/folders/{library_id}/syncs/google/connections":{"get":{"tags":["library-syncs"],"summary":"List Google Connections","description":"List the caller's own connected Google Drive connections, to choose which one a new Drive folder import into this folder reads through.","operationId":"list_google_connections_api_folders__library_id__syncs_google_connections_get","parameters":[{"name":"library_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Library Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GoogleConnectionOut"},"title":"Response List Google Connections Api Folders  Library Id  Syncs Google Connections Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tier":"extended","x-mcp-action":"syncs_google_connections_get"}},"/api/folders/{library_id}/syncs/google/folders":{"get":{"tags":["library-syncs"],"summary":"List Google Drive Folders","description":"List the Google Drive folders a sync can import through one of the caller's own Google Drive connections, read live from Google.","operationId":"list_google_drive_folders_api_folders__library_id__syncs_google_folders_get","parameters":[{"name":"library_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Library Id"}},{"name":"instance_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GoogleResourceOut"},"title":"Response List Google Drive Folders Api Folders  Library Id  Syncs Google Folders Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tier":"extended","x-mcp-action":"syncs_google_folders_get"}},"/api/folders/{library_id}/syncs/{sync_id}":{"get":{"tags":["library-syncs"],"summary":"Get Sync","description":"One folder sync with its held conflicts, the documents kept out of syncs, how many files it manages, and its recent run history.","operationId":"get_sync_api_folders__library_id__syncs__sync_id__get","parameters":[{"name":"library_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Library Id"}},{"name":"sync_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sync Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tier":"extended","x-mcp-action":"sync_get"},"patch":{"tags":["library-syncs"],"summary":"Patch Sync","description":"Pause or resume a folder sync or change its schedule; for GitHub its auto-merge, removal policy and note file; for a website its crawl settings; for a Google import whether new documents arrive published.","operationId":"patch_sync_api_folders__library_id__syncs__sync_id__patch","parameters":[{"name":"library_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Library Id"}},{"name":"sync_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sync Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchSyncIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tier":"extended","x-mcp-action":"sync_update"},"delete":{"tags":["library-syncs"],"summary":"Delete Sync","description":"Delete a sync. Files already in GitHub stay and its open pull request\nis closed when GitHub still allows it; documents a website or Google\nimport brought in are kept, since stopping is not a request to erase them.","operationId":"delete_sync_api_folders__library_id__syncs__sync_id__delete","parameters":[{"name":"library_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Library Id"}},{"name":"sync_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sync Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tier":"extended","x-mcp-action":"sync_delete"}},"/api/folders/{library_id}/syncs/{sync_id}/preview":{"get":{"tags":["library-syncs"],"summary":"Get Preview","description":"Preview what the first run of a GitHub sync will do: files added, updated, different on both sides, already the same, and left alone.","operationId":"get_preview_api_folders__library_id__syncs__sync_id__preview_get","parameters":[{"name":"library_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Library Id"}},{"name":"sync_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sync Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tier":"extended","x-mcp-action":"sync_preview_get"}},"/api/folders/{library_id}/syncs/{sync_id}/start":{"post":{"tags":["library-syncs"],"summary":"Start Sync","description":"Confirm the first-sync preview with a choice for every file that differs on both sides; the first run then opens the pull request.","operationId":"start_sync_api_folders__library_id__syncs__sync_id__start_post","parameters":[{"name":"library_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Library Id"}},{"name":"sync_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sync Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartIn"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptedOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tier":"extended","x-mcp-action":"sync_start_create"}},"/api/folders/{library_id}/syncs/{sync_id}/run":{"post":{"tags":["library-syncs"],"summary":"Run Now","description":"Sync now. A stopped GitHub or Google sync is tried again, so this is\nalso how an owner restarts one after reconnecting. A website sweep is limited\nto one per 15 minutes (429 with Retry-After inside that window).","operationId":"run_now_api_folders__library_id__syncs__sync_id__run_post","parameters":[{"name":"library_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Library Id"}},{"name":"sync_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sync Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptedOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tier":"extended","x-mcp-action":"sync_run_create"}},"/api/folders/{library_id}/syncs/{sync_id}/coverage":{"get":{"tags":["library-syncs"],"summary":"Get Sync Coverage","description":"What a website sync's last sweep found: pages discovered, indexed, unchanged, skipped and failed with reasons, and whether it fully reconciled.","operationId":"get_sync_coverage_api_folders__library_id__syncs__sync_id__coverage_get","parameters":[{"name":"library_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Library Id"}},{"name":"sync_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sync Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoverageOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tier":"extended","x-mcp-action":"sync_coverage_get"}},"/api/folders/{library_id}/syncs/{sync_id}/conflicts/{document_id}":{"get":{"tags":["library-syncs"],"summary":"Get Conflict","description":"Both versions of a document the sync held because it was changed in GitHub, with who changed it, when, and in which pull request.","operationId":"get_conflict_api_folders__library_id__syncs__sync_id__conflicts__document_id__get","parameters":[{"name":"library_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Library Id"}},{"name":"sync_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sync Id"}},{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConflictOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tier":"extended","x-mcp-action":"sync_conflict_get"}},"/api/folders/{library_id}/syncs/{sync_id}/conflicts/resolve":{"post":{"tags":["library-syncs"],"summary":"Resolve Conflicts","description":"Keep theirs copies GitHub's file into thinqOS now; keep thinqOS sends\nthinqOS's version in the next pull request. A run follows either way.","operationId":"resolve_conflicts_api_folders__library_id__syncs__sync_id__conflicts_resolve_post","parameters":[{"name":"library_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Library Id"}},{"name":"sync_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sync Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/thinqos__api__library_syncs__ResolveIn"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptedOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tier":"extended","x-mcp-action":"sync_conflicts_resolve_create"}},"/api/access-requests":{"post":{"tags":["access-requests"],"summary":"Request Access","operationId":"request_access_api_access_requests_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequestBody"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReceivedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/entry-events":{"post":{"tags":["access-requests"],"summary":"Record Entry Event","operationId":"record_entry_event_api_entry_events_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntryEventBody"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReceivedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhooks/resend":{"post":{"tags":["access-requests"],"summary":"Resend Delivery Webhook","description":"Record what Resend did with an access email (TOS-4110).\n\n`access_email_deliveries` has always logged what we handed the provider and\nnever what the provider did with it, so an invitation that hard-bounced was\nindistinguishable from one that landed - and the person waiting for access\nsimply never heard from us.\n\nThe Svix signature is the ONLY authentication on this route, exactly as the\nStripe signature is on `_stripe_webhook`, so a body that fails verification\nis rejected before it is parsed. An unset secret is a 503 rather than an\nopen door: a self-hosted install with no Resend account must not expose an\nunauthenticated write path.\n\n`async def` only for `await request.body()`; the signature is over the RAW\nbytes, so the body cannot be read through a parsed model.","operationId":"resend_delivery_webhook_api_webhooks_resend_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Resend Delivery Webhook Api Webhooks Resend Post"}}}}},"x-mcp-exclude":true}},"/api/webhooks/clerk":{"post":{"tags":["clerk-webhooks"],"summary":"Clerk Account Webhook","description":"Reconcile a person's `is_active` with Clerk's authoritative account state.\n\nDisabled (503) when `clerk_account_sync_enabled` is false or the webhook\nsecret is unset - both are configuration states, not signature failures,\nand 503 (not 200 or 404) is what tells Clerk's dashboard \"this endpoint is\nnot ready\" rather than \"delivered fine\".\n\nThe payload's own `data` is used ONLY to find which Clerk user id the\nevent is about; every flag/timestamp it carries is deliberately ignored -\nthe worker re-fetches Clerk's CURRENT state under a row lock instead of\ntrusting anything the delivery itself claims. This is what makes a stale\nor reordered delivery, and a `user.deleted` event for a user recreated\nunder the same id, both safe to apply.","operationId":"clerk_account_webhook_api_webhooks_clerk_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Clerk Account Webhook Api Webhooks Clerk Post"}}}}},"x-mcp-exclude":true}},"/api/access-invitations/validate":{"post":{"tags":["access-invitations"],"summary":"Validate Invitation","description":"Return the invitation state; when valid, its masked recipient and trial offer.","operationId":"validate_invitation_api_access_invitations_validate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvitationBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvitationValidationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/access-invitations/accept":{"post":{"tags":["access-invitations"],"summary":"Accept Invitation","description":"Consume an invitation using independently verified provider email proof.","operationId":"accept_invitation_api_access_invitations_accept_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvitationAcceptanceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/credentials/captures/undo":{"post":{"tags":["credentials"],"summary":"Undo Capture","description":"Put back a secret thinqOS vaulted out of something you just sent.\n\nSpend the one-use token from the capture chip. The original text is restored\nfrom the vault, and when nothing else references the credential it is shred\nrather than left behind. Tokens last 15 minutes and work once.","operationId":"undo_capture_api_credentials_captures_undo_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UndoCaptureRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UndoCaptureResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/pending-approval":{"get":{"tags":["skills"],"summary":"List Pending Approval","description":"List skills actually BLOCKED on a platform admin, in folders the caller can edit.\n\nSee ``_pending_approval_query`` for the filter this applies.","operationId":"list_pending_approval_api_skills_pending_approval_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SkillOut"},"title":"Response List Pending Approval Api Skills Pending Approval Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills":{"get":{"tags":["skills"],"summary":"List Skills","description":"List skills for an owner scope.\n\nAuthorization model:\n- ``identity``: caller can only list their own skills.\n- ``agent`` / ``kb``: caller must own the agent / be a folder member\n  (enforced by ``_require_install_target``).\n- ``plugin`` / ``enterprise``: no membership relation exists for these\n  scopes today, so we list **public skills only**. This keeps Phase 7+\n  catalog browsing working without leaking unpublished plugin/enterprise\n  skills to non-members.\n\nPass ``deleted=true`` to list the recycle-bin contents instead of live\nskills (TOS-435).","operationId":"list_skills_api_skills_get","parameters":[{"name":"owner_kind","in":"query","required":false,"schema":{"type":"string","default":"identity","title":"Owner Kind"}},{"name":"owner_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner Id"}},{"name":"deleted","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Deleted"}},{"name":"library_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Library Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SkillOut"},"title":"Response List Skills Api Skills Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["skills"],"summary":"Create Skill","operationId":"create_skill_api_skills_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSkillBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/summaries":{"get":{"tags":["skills"],"summary":"List Skill Summaries","description":"List catalog metadata without transferring each SKILL.md body.","operationId":"list_skill_summaries_api_skills_summaries_get","parameters":[{"name":"owner_kind","in":"query","required":false,"schema":{"type":"string","default":"identity","title":"Owner Kind"}},{"name":"owner_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner Id"}},{"name":"deleted","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Deleted"}},{"name":"library_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Library Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SkillSummaryOut"},"title":"Response List Skill Summaries Api Skills Summaries Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/move":{"post":{"tags":["skills"],"summary":"Move Skills","description":"Move one or more skills into another folder (TOS-1490).\n\nRung rule: edit+ on the destination folder AND on each skill's current\n(source) folder. A bad destination 403s the whole request up front; a\nper-skill source-authorization failure or unknown id is collected as a\nper-item error instead of failing the whole batch - matches documents'\nbulk-move partial-failure contract (``bulk_move_documents`` in\napi/knowledge.py). Ownership is unchanged; only ``library_id`` moves\n(see ``SkillService.move_skills``).","operationId":"move_skills_api_skills_move_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoveSkillsBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoveSkillsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/bulk/delete":{"post":{"tags":["skills"],"summary":"Bulk Delete Skills","description":"Soft-delete (recycle bin) one or more skills (TOS-1490).\n\nPer-item errors for a not-found or forbidden skill; the whole batch never\nfails on one bad item - matches documents' bulk-delete contract\n(``bulk_delete_documents`` in api/knowledge.py). Same edit+ rung and\nsame soft-delete-with-recycle-bin semantics as ``DELETE /{skill_id}``.","operationId":"bulk_delete_skills_api_skills_bulk_delete_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkSkillIdsBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDeleteSkillsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/installed-on":{"get":{"tags":["skills"],"summary":"List Installed On Self","description":"Skills installed on a target, defaulting to the CALLER's own identity.\n\nThe two-parameter route below cannot answer \"what skills do I have?\",\nbecause it requires the install_id you would be trying to discover. Over\nthe generic MCP verb tools that produced a genuine dead end: a caller asked\nfor its own installed skills, was told install_kind was required, supplied\nit, and was then told install_id was required with no route from an agent\nid to one. An agent that cannot enumerate its own skills cannot reason\nabout which to invoke, and an owner cannot audit whether the right skill\nfired.\n\nMirrors ``_resolve_install_id`` (identity installs default to the caller)\nand the ``/instances/installed-on/{identity_id}`` authority model in the\nintegrations API: self needs nothing, anyone else is owner-gated.","operationId":"list_installed_on_self_api_skills_installed_on_get","parameters":[{"name":"install_kind","in":"query","required":false,"schema":{"type":"string","default":"identity","title":"Install Kind"}},{"name":"install_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Install Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InstalledSkillOut"},"title":"Response List Installed On Self Api Skills Installed On Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/shadowed-by-builtin":{"get":{"tags":["skills"],"summary":"List Shadowed By Builtin","description":"The subject's OWN copies that now yield their slug to a built-in (TOS-6903).\n\nA copy nobody marked as an intentional fork, installed from the platform's\nfirst-party source (or identical to an older built-in version), no longer\nruns in place of the built-in. It is kept, not deleted; this read lets the\nowner see that and keep it with ``POST /{skill_id}/keep-copy``. Only copies\nthe subject owns are listed, because only an owner can keep one. Self or\nan owner of the subject, like ``/installed-on``.","operationId":"list_shadowed_by_builtin_api_skills_shadowed_by_builtin_get","parameters":[{"name":"identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ShadowedSkillCopyOut"},"title":"Response List Shadowed By Builtin Api Skills Shadowed By Builtin Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/installed":{"get":{"tags":["skills"],"summary":"List Installed","description":"Skills LIVE for the caller (membership ∧ approval, TOS-1493).\n\nWas ``list_active_for_identity`` (the legacy ``skill_installs`` join)\nuntil TOS-1493 retired that write path - a skill installed after the\ncutover never gets a ``skill_installs`` row, so the legacy join would\nsilently go blind for it. ``list_live_for_identity`` is the resolver both\n``install_skill`` (this endpoint's write side) and the runtime skill\nregistry already agree on.","operationId":"list_installed_api_skills_installed_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SkillOut"},"title":"Response List Installed Api Skills Installed Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/import":{"post":{"tags":["skills"],"summary":"Import Skill","operationId":"import_skill_api_skills_import_post","parameters":[{"name":"skill_md","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Skill Md"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_import_skill_api_skills_import_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/import-from-url":{"post":{"tags":["skills"],"summary":"Import Skill From Url","description":"Begin an asynchronous skill import from a GitHub shorthand or https URL.\n\nReturns 202 immediately with a stub skill row (``import_status`` =\n'installing'); the GitHub fetch runs as a background task that finalizes the\nrow to 'ready' or 'failed'. The client renders the placeholder card from the\nreturned row and polls ``GET /api/skills`` until it settles. Re-importing a\nURL the caller already has refreshes that row in the background without\ndisturbing its card.","operationId":"import_skill_from_url_api_skills_import_from_url_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportFromUrlBody"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/{skill_id}/retry-import":{"post":{"tags":["skills"],"summary":"Retry Import","description":"Re-run a failed URL import on the same row (TOS-453).","operationId":"retry_import_api_skills__skill_id__retry_import_post","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Skill Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/import-package":{"post":{"tags":["skills"],"summary":"Import Skill Json Package","operationId":"import_skill_json_package_api_skills_import_package_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillPackageImportBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Import Skill Json Package Api Skills Import Package Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/{skill_id}":{"get":{"tags":["skills"],"summary":"Get Skill","operationId":"get_skill_api_skills__skill_id__get","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Skill Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["skills"],"summary":"Update Skill","operationId":"update_skill_api_skills__skill_id__patch","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Skill Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSkillBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["skills"],"summary":"Delete Skill","operationId":"delete_skill_api_skills__skill_id__delete","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Skill Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/{skill_id}/rename":{"post":{"tags":["skills"],"summary":"Rename Skill","operationId":"rename_skill_api_skills__skill_id__rename_post","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Skill Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenameSkillBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/{skill_id}/restore":{"post":{"tags":["skills"],"summary":"Restore Skill","operationId":"restore_skill_api_skills__skill_id__restore_post","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Skill Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/{skill_id}/purge":{"post":{"tags":["skills"],"summary":"Purge Skill","description":"Permanently delete a soft-deleted skill (TOS-1489: admin rung - tightened\nfrom edit; irreversible, unlike soft-delete/restore which stay edit+).","operationId":"purge_skill_api_skills__skill_id__purge_post","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Skill Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/{skill_id}/versions":{"get":{"tags":["skills"],"summary":"List Versions","operationId":"list_versions_api_skills__skill_id__versions_get","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Skill Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SkillVersionOut"},"title":"Response List Versions Api Skills  Skill Id  Versions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/{skill_id}/rollback":{"post":{"tags":["skills"],"summary":"Rollback Skill","operationId":"rollback_skill_api_skills__skill_id__rollback_post","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Skill Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RollbackBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/{skill_id}/keep-copy":{"post":{"tags":["skills"],"summary":"Keep Skill Copy","description":"Mark an identity-owned copy as an intentional fork, so it runs again.\n\nThe explicit user action TOS-6903 requires: a copy that yielded its slug to\na built-in wins it back once marked. Authority is config authority over\nthe copy's OWNER (self, or an owner of that agent), the same rule as\ninstalling onto that identity. Idempotent.","operationId":"keep_skill_copy_api_skills__skill_id__keep_copy_post","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Skill Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/{skill_id}/approve":{"post":{"tags":["skills"],"summary":"Approve Skill","operationId":"approve_skill_api_skills__skill_id__approve_post","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Skill Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/{skill_id}/unapprove":{"post":{"tags":["skills"],"summary":"Unapprove Skill","description":"Revoke content vetting: flip ``approved`` back to False (TOS-1492).\n\n``skills.approved`` is a catalog-level content-vetting flag, not a\nper-agent grant (per-agent visibility is ``artifact_approvals`` /\n``LiveSetResolver``, unaffected by this). Revoking it re-gates every\nsurface that checks ``skills.approved`` (install eligibility, the live\nskill loader) for EVERYONE with access, not just the caller - that is\nthe whole point of an \"unapprove\" action, so this uses the same edit+\nrung as ``approve_skill`` (a content-editorial decision on the artifact\nwithin the folder, not a membership-management action - see\n``services/access/rungs.py`` module docstring for the edit/admin\ndistinction). A command-hook skill still requires re-approval by a\nplatform admin (the ``approve_skill`` gate above); revoking that\napproval does not need the extra gate since revoking never grants\nanything.","operationId":"unapprove_skill_api_skills__skill_id__unapprove_post","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Skill Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/{skill_id}/upstream-status":{"get":{"tags":["skills"],"summary":"Get Upstream Status","description":"Compare a registry-installed skill against its upstream source.\n\nSee ``UpstreamStatusOut`` for the four possible states. Network failures\nin the adapter surface as 502; the four documented states are all 200s.","operationId":"get_upstream_status_api_skills__skill_id__upstream_status_get","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Skill Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamStatusOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/upstream-status/batch":{"post":{"tags":["skills"],"summary":"Get Upstream Status Batch","description":"Batch sibling of ``GET /{skill_id}/upstream-status`` (Sentry FE-28).\n\nThe skills catalog calls this once with every registry-installed skill id\ninstead of one request per skill. Drift comparisons use the source-level\ncatalog snapshots maintained by ``sync-skill-catalog``; this request makes\nzero registry calls. Skills the caller can't read, that don't exist, or\nwhose latest source sync/snapshot is unavailable are omitted rather than\nfailing the whole batch. The badge is a non-blocking hint, so a missing\nentry reads as \"no update\" client-side.","operationId":"get_upstream_status_batch_api_skills_upstream_status_batch_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamStatusBatchIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamStatusBatchOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/{skill_id}/refresh":{"post":{"tags":["skills"],"summary":"Refresh From Upstream","description":"Pull the latest definition from the source and update the local row.\n\n422 if the skill wasn't registry-installed (no upstream to refresh from).\n410 if the source has been removed/disabled — caller should re-import.\nThe existing trust gate doesn't fire here: refresh is only meaningful for\nskills the caller already owns + manages, and ownership is enforced via\n``_require_write_access`` below.","operationId":"refresh_from_upstream_api_skills__skill_id__refresh_post","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Skill Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/{skill_id}/export.md":{"get":{"tags":["skills"],"summary":"Export Md","operationId":"export_md_api_skills__skill_id__export_md_get","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Skill Id"}},{"name":"target","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SkillExportTarget","default":"thinqos"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/{skill_id}/export.zip":{"get":{"tags":["skills"],"summary":"Export Zip","operationId":"export_zip_api_skills__skill_id__export_zip_get","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Skill Id"}},{"name":"target","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SkillExportTarget","default":"thinqos"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/{skill_id}/export.json":{"get":{"tags":["skills"],"summary":"Export Skill Json","operationId":"export_skill_json_api_skills__skill_id__export_json_get","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Skill Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Export Skill Json Api Skills  Skill Id  Export Json Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/installed-on/{install_kind}/{install_id}":{"get":{"tags":["skills"],"summary":"List Installed On Target","description":"Skills installed on a target (e.g. an agent), with install state.\n\nOwner-gated via the same target-authorization as install/uninstall, so a\ncaller can only inspect targets they control (their own identity, an agent\nthey own, or a folder they belong to).\n\nTo list your OWN skills without knowing an id, call ``GET\n/skills/installed-on`` instead.","operationId":"list_installed_on_target_api_skills_installed_on__install_kind___install_id__get","parameters":[{"name":"install_kind","in":"path","required":true,"schema":{"type":"string","title":"Install Kind"}},{"name":"install_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Install Id"}},{"name":"include_paused","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Paused"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InstalledSkillOut"},"title":"Response List Installed On Target Api Skills Installed On  Install Kind   Install Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/{skill_id}/enabled":{"patch":{"tags":["skills"],"summary":"Set Skill Enabled","operationId":"set_skill_enabled_api_skills__skill_id__enabled_patch","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Skill Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetSkillEnabledBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstalledSkillOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/{skill_id}/install":{"post":{"tags":["skills"],"summary":"Install Skill","operationId":"install_skill_api_skills__skill_id__install_post","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Skill Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/thinqos__api__skills_schemas__InstallBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillInstallOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/{skill_id}/accept-update":{"post":{"tags":["skills"],"summary":"Accept Update","description":"Take the version you were held back from (TOS-3760, gap D5).\n\nTOS-3713 shipped the hold and not the release. A new version that declares\ntools or capabilities beyond what the holder approved is deliberately NOT\nadopted, which is right, and until now there was no way to say yes: the\nhold was silent in the app and readable only by diffing two version ids\nnothing exposed. Seven holdings in production sit behind current.\n\nThis is a CONSENT-WIDENING write, so it is here rather than on the\nMarketplace router, whose docstring commits it to no writes precisely so\nthe trust gate cannot fork. The caller is granting the current version's\ndeclared tools and capabilities; the client names that delta before asking\n(``held_back.added_tools`` / ``added_capabilities``), which is the same\ndelta this recomputes rather than trusts from the request. There is no\nrequest body on purpose: the only thing a caller could put in one is the\npermission set they are approving, and accepting a set the client\nsupplied would let a stale or hostile client widen a holding by naming\npermissions the user was never shown.\n\n404 when the caller holds nothing here. 409 when nothing is held back, so\na double-click cannot silently re-consent to a version that has moved on\nunderneath the dialog.","operationId":"accept_update_api_skills__skill_id__accept_update_post","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Skill Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/{skill_id}/uninstall":{"post":{"tags":["skills"],"summary":"Uninstall Skill","operationId":"uninstall_skill_api_skills__skill_id__uninstall_post","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Skill Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UninstallBody"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/{skill_id}/library-preview":{"get":{"tags":["skills"],"summary":"Get Skill Folder Preview","description":"Retired: normal skill attachment never grants a whole folder.","operationId":"get_skill_library_preview_api_skills__skill_id__library_preview_get","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Skill Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillLibraryPreviewOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/{skill_id}/attach-to-agent":{"post":{"tags":["skills"],"summary":"Attach Skill To Agent","description":"Retired: become the target identity and use the scoped install route.","operationId":"attach_skill_to_agent_api_skills__skill_id__attach_to_agent_post","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Skill Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachSkillToAgentBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachSkillToAgentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/{skill_id}/detach-from-agent":{"post":{"tags":["skills"],"summary":"Detach Skill From Agent","description":"Retired: become the target identity and use the scoped uninstall route.","operationId":"detach_skill_from_agent_api_skills__skill_id__detach_from_agent_post","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Skill Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetachSkillFromAgentBody"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skill-sources":{"get":{"tags":["skill-sources"],"summary":"List Sources","operationId":"list_sources_api_skill_sources_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SkillSourceOut"},"title":"Response List Sources Api Skill Sources Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["skill-sources"],"summary":"Create Source","operationId":"create_source_api_skill_sources_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSkillSourceBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillSourceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skill-sources/{source_id}":{"patch":{"tags":["skill-sources"],"summary":"Update Source","operationId":"update_source_api_skill_sources__source_id__patch","parameters":[{"name":"source_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Source Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSkillSourceBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillSourceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["skill-sources"],"summary":"Delete Source","operationId":"delete_source_api_skill_sources__source_id__delete","parameters":[{"name":"source_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Source Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skill-sources/search":{"get":{"tags":["skill-sources"],"summary":"Federated Search","description":"Search skills across configured registry sources. Pass a source_id to scope to one source, or\nomit to federate across all enabled sources. Returns a list of skill summaries with source_id,\nsource_slug, slug, name, description, version, tags, and homepage_url.","operationId":"federated_search_api_skill_sources_search_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Case-insensitive substring filter","default":"","title":"Q"},"description":"Case-insensitive substring filter"},{"name":"limit_per_source","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit Per Source"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SkillSourceSummary"},"title":"Response Federated Search Api Skill Sources Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skill-sources/{source_id}/skills":{"get":{"tags":["skill-sources"],"summary":"List Skills For Source","operationId":"list_skills_for_source_api_skill_sources__source_id__skills_get","parameters":[{"name":"source_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Source Id"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Case-insensitive substring filter","default":"","title":"Q"},"description":"Case-insensitive substring filter"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SkillSourceSummary"},"title":"Response List Skills For Source Api Skill Sources  Source Id  Skills Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skill-sources/{source_id}/audit":{"get":{"tags":["skill-sources"],"summary":"Audit Skills For Source","description":"Return dependency/capability readiness for skills in one registry source.","operationId":"audit_skills_for_source_api_skill_sources__source_id__audit_get","parameters":[{"name":"source_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Source Id"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Case-insensitive substring filter","default":"","title":"Q"},"description":"Case-insensitive substring filter"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":200,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillSourceAuditOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skill-sources/{source_id}/skills/{slug}/preview":{"get":{"tags":["skill-sources"],"summary":"Preview Skill From Source","description":"Fetch a skill via the source's adapter without installing it.\n\nMirrors the shape of the ``skill_details`` MCP tool but exposed over\nHTTP for the catalog's preview drawer. Returns frontmatter + body +\nsupporting_file_paths so the user can audit before clicking Install.","operationId":"preview_skill_from_source_api_skill_sources__source_id__skills__slug__preview_get","parameters":[{"name":"source_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Source Id"}},{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Preview Skill From Source Api Skill Sources  Source Id  Skills  Slug  Preview Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skill-sources/{source_id}/install/{slug}":{"post":{"tags":["skill-sources"],"summary":"Install From Source","description":"Fetch a skill via the source's adapter and import it through SkillService.\n\nReturns the created ``Skill`` row (as the standard SkillOut shape) on\nsuccess, or 412 with allowed_tools / capabilities / side_effects when the trust gate\nfires (mirrors POST /api/skills/import behaviour).","operationId":"install_from_source_api_skill_sources__source_id__install__slug__post","parameters":[{"name":"source_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Source Id"}},{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstallFromSourceBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skill-catalog":{"get":{"tags":["skill-catalog"],"summary":"Search Catalog","description":"Everything-by-default catalog search. Source is a filter, not required.\n\nShows the caller system sources + their own registered sources (TOS-1711).\nThe 'semantic' (Best match) sort embeds the query once - opt-in so per-search\nembedding cost stays off the default keyword path (TOS-1710).","operationId":"search_catalog_api_skill_catalog_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Full-text + trigram search over the catalog","default":"","title":"Q"},"description":"Full-text + trigram search over the catalog"},{"name":"sources","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Filter to these source ids","default":[],"title":"Sources"},"description":"Filter to these source ids"},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"relevance | installs | newest | name | rating | semantic","title":"Sort"},"description":"relevance | installs | newest | name | rating | semantic"},{"name":"min_rating","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":5,"minimum":1},{"type":"null"}],"description":"Only entries whose average rating is at least this (TOS-3342)","title":"Min Rating"},"description":"Only entries whose average rating is at least this (TOS-3342)"},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque pagination cursor","title":"Cursor"},"description":"Opaque pagination cursor"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":30,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillCatalogSearchOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skill-catalog/{catalog_entry_id}/rating":{"put":{"tags":["skill-catalog"],"summary":"Set Rating","description":"Deprecated alias of ``PUT /api/marketplace/capabilities/{capability_id}/rating``.","operationId":"set_rating_api_skill_catalog__catalog_entry_id__rating_put","deprecated":true,"parameters":[{"name":"catalog_entry_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Catalog Entry Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapabilityRatingBody"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"rating_set"},"delete":{"tags":["skill-catalog"],"summary":"Clear Rating","description":"Deprecated alias of ``DELETE /api/marketplace/capabilities/{capability_id}/rating``.","operationId":"clear_rating_api_skill_catalog__catalog_entry_id__rating_delete","deprecated":true,"parameters":[{"name":"catalog_entry_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Catalog Entry Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"rating_delete"}},"/api/skill-catalog/my-sources":{"get":{"tags":["skill-catalog"],"summary":"List My Sources","description":"List the caller's own registered sources.","operationId":"list_my_sources_api_skill_catalog_my_sources_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SkillSourceOut"},"title":"Response List My Sources Api Skill Catalog My Sources Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["skill-catalog"],"summary":"Create My Source","description":"Register a GitHub skill source owned by the caller, then sync it inline so\nits skills show up immediately (v1: github_repo only).","operationId":"create_my_source_api_skill_catalog_my_sources_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MySourceCreateBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillSourceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skill-catalog/my-sources/{source_id}":{"delete":{"tags":["skill-catalog"],"summary":"Delete My Source","description":"Delete one of the caller's own sources (404 if not theirs).","operationId":"delete_my_source_api_skill_catalog_my_sources__source_id__delete","parameters":[{"name":"source_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Source Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skill-catalog/refresh":{"post":{"tags":["skill-catalog"],"summary":"Refresh Catalog","description":"Admin: re-sync the whole catalog now (the cron job does this on a schedule).","operationId":"refresh_catalog_api_skill_catalog_refresh_post","parameters":[{"name":"force","in":"query","required":false,"schema":{"type":"boolean","description":"Ignore fingerprints and re-hydrate every source","default":false,"title":"Force"},"description":"Ignore fingerprints and re-hydrate every source"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillCatalogRefreshOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/skill-catalog/sources/{source_id}/refresh":{"post":{"tags":["skill-catalog"],"summary":"Refresh Source","description":"Admin: force re-sync one source immediately.","operationId":"refresh_source_api_skill_catalog_sources__source_id__refresh_post","parameters":[{"name":"source_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Source Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillCatalogRefreshOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/marketplace/capabilities/{capability_id}/rating":{"put":{"tags":["capabilities"],"summary":"Put Rating","description":"Set (upsert) the caller's 1-5 star rating for a capability.","operationId":"put_rating_api_marketplace_capabilities__capability_id__rating_put","parameters":[{"name":"capability_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Capability Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapabilityRatingBody"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"rating_set"},"delete":{"tags":["capabilities"],"summary":"Delete Rating","description":"Remove the caller's rating for a capability (idempotent).","operationId":"delete_rating_api_marketplace_capabilities__capability_id__rating_delete","parameters":[{"name":"capability_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Capability Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"rating_delete"}},"/api/marketplace/capabilities":{"get":{"tags":["marketplace"],"summary":"List Capabilities","description":"The blended capability grid: every visible object, all types at once.\n\n``facets=false`` omits the facet block (TOS-3710). Facets describe the\nWHOLE filtered set, so they are identical for every offset of one filter,\nand computing them again per page is work whose answer is already on the\nclient. It stays a flag on this endpoint rather than a second endpoint on\npurpose: a separate call would add a round trip to the FIRST paint, which\nis the request that is actually slow, to save work on later pages that a\nflag saves for free.","operationId":"list_capabilities_api_marketplace_capabilities_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Substring search over name/description/slug","default":"","title":"Q"},"description":"Substring search over name/description/slug"},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"One family code, or several separated by commas","title":"Type"},"description":"One family code, or several separated by commas"},{"name":"publisher","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Publisher"}},{"name":"capability","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capability"}},{"name":"side_effect","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Side Effect"}},{"name":"type_facet","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"A per-type facet key, e.g. runtime","title":"Type Facet"},"description":"A per-type facet key, e.g. runtime"},{"name":"type_facet_value","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type Facet Value"}},{"name":"relationship","in":"query","required":false,"schema":{"type":"string","description":"all | my | discover | mine | using","default":"all","title":"Relationship"},"description":"all | my | discover | mine | using"},{"name":"listed_only","in":"query","required":false,"schema":{"type":"boolean","description":"Only currently published Marketplace listings","default":false,"title":"Listed Only"},"description":"Only currently published Marketplace listings"},{"name":"ownership","in":"query","required":false,"schema":{"type":"string","description":"all | mine","default":"all","title":"Ownership"},"description":"all | mine"},{"name":"held","in":"query","required":false,"schema":{"type":"string","description":"all | held | not_held","default":"all","title":"Held"},"description":"all | held | not_held"},{"name":"slug","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated connection definition slugs to narrow to (the attention deep link, TOS-6556)","default":"","title":"Slug"},"description":"Comma-separated connection definition slugs to narrow to (the attention deep link, TOS-6556)"},{"name":"domain","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Domain"}},{"name":"subtree","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Subtree"}},{"name":"min_rating","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":5,"minimum":1},{"type":"null"}],"title":"Min Rating"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","description":"relevance | best_match | name | newest | top_rated | most_learned | publisher","default":"relevance","title":"Sort"},"description":"relevance | best_match | name | newest | top_rated | most_learned | publisher"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":60,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"facets","in":"query","required":false,"schema":{"type":"boolean","description":"Compute the facet block. Pass false when paging an unchanged filter.","default":true,"title":"Facets"},"description":"Compute the facet block. Pass false when paging an unchanged filter."},{"name":"needed","in":"query","required":false,"schema":{"type":"string","description":"agents: only what the caller's own agents' tools need and the caller does not hold","default":"","title":"Needed"},"description":"agents: only what the caller's own agents' tools need and the caller does not hold"},{"name":"updates_only","in":"query","required":false,"schema":{"type":"boolean","description":"Only held capabilities with an unresolved consent or permission update","default":false,"title":"Updates Only"},"description":"Only held capabilities with an unresolved consent or permission update"},{"name":"org","in":"query","required":false,"schema":{"type":"boolean","description":"Only listings published from an organization the caller belongs to","default":false,"title":"Org"},"description":"Only listings published from an organization the caller belongs to"},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketplaceListOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/marketplace/capabilities/{object_id}":{"get":{"tags":["marketplace"],"summary":"Get Capability","description":"One capability's detail frame: generic facts plus typed sections.","operationId":"get_capability_api_marketplace_capabilities__object_id__get","parameters":[{"name":"object_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Object Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketplaceCapabilityDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/marketplace/capabilities/{object_id}/acquire":{"post":{"tags":["marketplace"],"summary":"Acquire Capability","description":"Acquire one visible capability through its registered type executor.\n\nThe body is OPTIONAL and generic (TOS-4215): it carries the caller's\nanswers to whatever ``inputs`` this object's acquire plan declared, keyed\nby input name. Nothing in this endpoint knows what any of those names mean\n:func:`validate_acquire_inputs` checks them against the plan's own\ndeclaration, and the resolver reads them. A type declaring no inputs is\nunaffected and a bodiless POST remains valid for it.\n\nWhy this stopped being a 204. The caller needs to be told WHICH thing they\nnow hold and whether it actually works yet. A connection account exists the\nmoment it is created and carries no credential, and reporting that as\nconnected is the defect this ticket was opened over: the production Sentry\ndetail page read \"Connected\", over an identity with zero connected\naccounts, because nothing on the wire could say otherwise.","operationId":"acquire_capability_api_marketplace_capabilities__object_id__acquire_post","parameters":[{"name":"object_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Object Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/MarketplaceAcquireIn"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketplaceAcquiredOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["marketplace"],"summary":"Release Capability","description":"Release one capability through its registered type executor.","operationId":"release_capability_api_marketplace_capabilities__object_id__acquire_delete","parameters":[{"name":"object_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Object Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/marketplace/capabilities/{object_id}/accept-update":{"post":{"tags":["marketplace"],"summary":"Accept Update Capability","description":"Take the held-back update on one capability (TOS-6779).\n\nTOS-3760 shipped the accept path for skills only (``POST /api/skills/{id}/\naccept-update``); connections got held-back DETECTION in TOS-5024 but no\nrelease, so a holder whose consent baseline fell behind the current\nversion saw \"v3 is waiting on you\" and no way to say yes. This is the\ngeneric route, dispatched through the registry like acquire/release so the\nendpoint stays type-agnostic (the module-import guard forbids naming a\nper-type module here).\n\nA CONSENT-WIDENING write, so it carries the same contract the skill\nendpoint established: no request body, because the only thing a caller\ncould put in one is the permission set being approved, and the server must\nrecompute that from the object rather than take it from a client that\nmight be stale. The type's executor recomputes the delta through the same\n``held_back`` decision the runtime serves, so what the UI showed and what\nthis grants cannot disagree.\n\n404 when the caller holds nothing here; 409 when nothing is held back, so\na double-click cannot silently re-consent to a version that has moved on\nunderneath the dialog.","operationId":"accept_update_capability_api_marketplace_capabilities__object_id__accept_update_post","parameters":[{"name":"object_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Object Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/identity":{"get":{"tags":["me"],"summary":"Get My Identity","description":"Return the current user's internal identity ID and role.","operationId":"get_my_identity_api_me_identity_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"null"}]},"title":"Response Get My Identity Api Me Identity Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/account/delete-preflight":{"get":{"tags":["me"],"summary":"My Account Delete Preflight","description":"Report what deleting your own account would do, before you confirm.\n\nTOS-4278. The confirm dialog used to assert that deletion removed \"your\nthinqOS account, agents, and data\" while the handler only called Clerk's\n`user.delete()`, so none of the thinqOS side was touched. This endpoint\nexists so the UI can state the real consequences instead of a promise\nnothing kept, and so a user who is blocked learns WHY before losing\ntheir Clerk account to a delete that could never finish.","operationId":"my_account_delete_preflight_api_me_account_delete_preflight_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyDeletePreflightOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/account":{"delete":{"tags":["me"],"summary":"Delete My Account","description":"Delete your own account: thinqOS data first, then the Clerk user.\n\nTOS-4278. Ordering is the whole point. The frontend previously called\nClerk's `user.delete()` directly, which destroyed the credential and left\nevery thinqOS row orphaned with no session able to reach it afterwards.\n`delete_person_identity` purges the thinqOS side and deletes the Clerk\nuser as its LAST step, so a failure anywhere leaves the account still\nusable and the delete retryable, rather than half-done and unrecoverable.","operationId":"delete_my_account_api_me_account_delete","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/organizations":{"get":{"tags":["me"],"summary":"List My Organizations","description":"The organizations the caller may open a chat in, or scope a grant to.\n\nTwo UI pickers need exactly this list and nothing wider: the new-chat\ncomposer's \"start this in <organization>\" choice, and the connected-account\ngrant scope choice. Both are empty for a person who belongs to no\norganization, which is every user today, so both render nothing rather than\nan empty dropdown.\n\nPersonal tenants are deliberately absent. \"Which organizations am I in\" is\nthe question, and a person's own tenant is not an answer to it - offering it\nas a scope would let someone confine a grant to their own private space and\nthen wonder why it stopped working in a room.","operationId":"list_my_organizations_api_me_organizations_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MyOrganizationOut"},"title":"Response List My Organizations Api Me Organizations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["me"],"summary":"Create Organization Endpoint","description":"Create an organization. The caller becomes its owner.\n\nNo approval queue: an organization with no members is inert, so the cost of\na spurious one is a row. Creating the tenant is the whole act - migration\n1066's trigger provisions the identity and the Mind in the same transaction.","operationId":"create_organization_endpoint_api_me_organizations_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/organizations/{tenant_id}/members":{"get":{"tags":["me"],"summary":"List Organization Members","description":"Who the caller may seat in a chat belonging to this organization.\n\nBacks the new-chat people-picker's filter. That filter is a COURTESY, not a\nboundary: ``ChatService.create_chat`` refuses a non-member regardless, and it\nhas to, because a picker is not an authorization gate. Without the filter the\nordinary flow is to pick a colleague, press Create, and get a 403 naming a\nUUID.\n\nThe roster comes from ``org_admitted_identities``, one bounded query whose\nrow count is the ORGANIZATION's size. It is deliberately not a scan of every\nactive identity with a membership check per row, which is what shipped first\nand is O(identities) queries on an endpoint a picker opens.\n\n403 for a non-member caller. Membership of an organization is not public: the\nroster names who works there, and handing it to anyone who can guess a tenant\nid would make this endpoint a directory.","operationId":"list_organization_members_api_me_organizations__tenant_id__members_get","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationMemberOut"},"title":"Response List Organization Members Api Me Organizations  Tenant Id  Members Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["me"],"summary":"Add Organization Member","description":"Put a person on this organization's roster by naming their email address.\n\nThe roster could re-grade somebody already on it and remove them, and had\nno way to put anybody ON it. The routes in were an email-domain rule, which\nneeds the organization to own the domain, and the retired root-domain\nderivation. A contractor on a personal address could not be added at all.\n\n404 when no account holds the address, and the message says what to do\ninstead rather than restating the failure. The address has to belong to\nsomebody who has already signed up: this endpoint seats an existing\nidentity, it does not invite a stranger.","operationId":"add_organization_member_api_me_organizations__tenant_id__members_post","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddOrganizationMemberIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"members_add"}},"/api/me/organizations/{tenant_id}/capture-status":{"get":{"tags":["me"],"summary":"Get Organization Capture Status","description":"Per-person, per-capture-source connected/stale/not_connected table.\n\n403 for anyone who is not this organization's admin or owner - a\nmember's capture status names which of their own tools are wired up,\nwhich is not information a fellow member (below admin) gets to see about\nsomeone else (TOS-5372 Requirements).","operationId":"get_organization_capture_status_api_me_organizations__tenant_id__capture_status_get","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationCaptureStatusOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/organizations/discover":{"get":{"tags":["me"],"summary":"Discover Organizations Endpoint","description":"Search the organizations that have chosen to be findable.\n\nAn organization appears here only if an owner or admin turned\nDiscoverable on. Everything else is invisible to this endpoint, for every\ncaller and for every search term, which is why the switch defaults to off:\na directory that lists every household and client organization on the\nplatform is worse than no directory.\n\nDeclared BEFORE ``/organizations/{tenant_id}``. FastAPI matches routes in\ndeclaration order, so the other way round the literal ``discover`` is read\nas a tenant id and this endpoint answers 422 forever.","operationId":"discover_organizations_endpoint_api_me_organizations_discover_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Q"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DiscoverableOrganizationOut"},"title":"Response Discover Organizations Endpoint Api Me Organizations Discover Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/organizations/join-requests/mine":{"get":{"tags":["me"],"summary":"List My Organization Join Requests","description":"Every request this person has made to join an organization, newest first.\n\nIncludes the decided ones. A denial the requester never sees is\nindistinguishable to them from a request nobody has read, and they ask\nagain into a queue that already refused them.","operationId":"list_my_organization_join_requests_api_me_organizations_join_requests_mine_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MyOrganizationJoinRequestOut"},"title":"Response List My Organization Join Requests Api Me Organizations Join Requests Mine Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-resource":"me_organization_join_requests"}},"/api/me/organizations/recycle-bin":{"get":{"tags":["me"],"summary":"List Deleted Organizations Endpoint","description":"The caller's binned organizations, newest deletion first.\n\nDeclared BEFORE ``/organizations/{tenant_id}`` so ``recycle-bin`` cannot\nbe parsed as a tenant uuid (the same shadowing the members_add override\nbelow guards against for POST). Only orgs where the caller is still an\nactive OWNER are listed, matching the restore authority - so ``role``\nhere is always \"owner\", not a hardcoded guess.","operationId":"list_deleted_organizations_endpoint_api_me_organizations_recycle_bin_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeletedOrganizationOut"},"title":"Response List Deleted Organizations Endpoint Api Me Organizations Recycle Bin Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/organizations/{tenant_id}":{"get":{"tags":["me"],"summary":"Get Organization","description":"The organization page: members with roles, and the domains it claims.","operationId":"get_organization_api_me_organizations__tenant_id__get","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["me"],"summary":"Update Organization Endpoint","description":"Rename this organization, or list it in the directory. Owner or admin only.\n\nTurning Discoverable on is what lets somebody who does not already know\nthis organization exists ask to join it. Turning it off stops new requests\nwithout touching the people already here or the requests already waiting,\nbecause withdrawing an invitation is not the same act as removing a\ncolleague.","operationId":"update_organization_endpoint_api_me_organizations__tenant_id__patch","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["me"],"summary":"Delete Organization Endpoint","description":"Move this organization to the recycle bin. Owner only.\n\nA soft delete: membership, join rules and requests, the org identity and\nits Mind are all preserved untouched, so restore (below) is exact. The\norganization disappears from the member's organization lists, the\ndirectory, and join-rule seating the moment this commits.","operationId":"delete_organization_endpoint_api_me_organizations__tenant_id__delete","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/organizations/{tenant_id}/conversation-config":{"get":{"tags":["me"],"summary":"Get Organization Conversation Config","operationId":"get_organization_conversation_config_api_me_organizations__tenant_id__conversation_config_get","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationConversationConfigOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"conversation_config_get"},"patch":{"tags":["me"],"summary":"Patch Organization Conversation Config","operationId":"patch_organization_conversation_config_api_me_organizations__tenant_id__conversation_config_patch","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationConversationConfigIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationConversationConfigOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"conversation_config_update"}},"/api/me/organizations/{tenant_id}/logo":{"post":{"tags":["me"],"summary":"Upload Organization Logo","description":"Upload the organization's logo. Owner or admin only.","operationId":"upload_organization_logo_api_me_organizations__tenant_id__logo_post","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_organization_logo_api_me_organizations__tenant_id__logo_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Upload Organization Logo Api Me Organizations  Tenant Id  Logo Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"logo_upload"},"delete":{"tags":["me"],"summary":"Delete Organization Logo","description":"Remove the organization's logo and restore the initials fallback.","operationId":"delete_organization_logo_api_me_organizations__tenant_id__logo_delete","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"logo_remove"}},"/api/me/organizations/{tenant_id}/members/{member_identity_id}":{"put":{"tags":["me"],"summary":"Set Organization Member Role","description":"Seat somebody, or change the role they hold.","operationId":"set_organization_member_role_api_me_organizations__tenant_id__members__member_identity_id__put","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"member_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Member Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetMemberRoleIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"members_set_role"},"delete":{"tags":["me"],"summary":"Remove Organization Member","description":"Withdraw a membership. The last owner cannot be removed.\n\nTOS-4878: a caller removing THEMSELVES gets 204, not the refreshed detail\npage. `_organization_detail` refuses a non-member with 403 on purpose (a\nroster names who works somewhere, so it must not be readable by anyone who\nguesses a tenant id), and after a self-removal the caller IS that\nnon-member. Returning the page unconditionally therefore committed the\nwrite and then answered 403, reporting failure for an operation that had\nfully succeeded - and it reached real users, because `leave organization`\nin the web client calls this same route. `delete_organization` on this\nrouter already answers 204, so a no-body success is the established shape\nhere rather than a new one.","operationId":"remove_organization_member_api_me_organizations__tenant_id__members__member_identity_id__delete","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"member_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Member Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"members_remove"}},"/api/me/organizations/{tenant_id}/join-rules":{"post":{"tags":["me"],"summary":"Add Organization Join Rule","description":"Claim an email domain, so a matching verified address seats itself.","operationId":"add_organization_join_rule_api_me_organizations__tenant_id__join_rules_post","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddJoinRuleIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/organizations/{tenant_id}/join-rules/{rule_id}":{"delete":{"tags":["me"],"summary":"Remove Organization Join Rule","description":"Release a claimed domain. People already seated keep their seats.","operationId":"remove_organization_join_rule_api_me_organizations__tenant_id__join_rules__rule_id__delete","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Rule Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/organizations/{tenant_id}/domains":{"get":{"tags":["me"],"summary":"List Organization Folders","description":"The folders this organization keeps, as this member reaches them.\n\nAn organization has MANY root folders, not one: verified against production\n2026-09-02 the ai4o tenant has 17. So the answer is a list and the page\nrenders it as one, rather than a single \"the organization's folder\".\n\nScoped to what the CALLER reaches, through the same\n``_reachable_org_library_ids`` the help agent's retrieval uses. A member\ninvited to one root must not learn the names of the other sixteen by\nopening the organization page: membership of a company is not membership of\nevery filing cabinet in it, which is the exact inversion of the proxy\nTOS-4113 retired.\n\nA separate call rather than a field on the organization detail. Every\nmutation on that page returns the whole organization, so folding the folder\ntree into it would re-run this query on each role change for a list that\ncannot have altered.","operationId":"list_organization_domains_api_me_organizations__tenant_id__domains_get","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationDomainOut"},"title":"Response List Organization Domains Api Me Organizations  Tenant Id  Domains Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"domains_list"}},"/api/me/organizations/{tenant_id}/restore":{"post":{"tags":["me"],"summary":"Restore Organization Endpoint","description":"Take this organization back out of the recycle bin. Owner only.\n\nRequires the actor to still hold their seat: a member removed while the\norganization was binned cannot restore themselves into it.","operationId":"restore_organization_endpoint_api_me_organizations__tenant_id__restore_post","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/organizations/{tenant_id}/join-requests":{"post":{"tags":["me"],"summary":"Create Organization Join Request","description":"Ask to join an organization.\n\nOpen to any signed-in person, for an organization that is discoverable or\nthat already claims one of the caller's verified email domains.\n\nEvery other id answers the SAME 404 with the SAME sentence: an id that\nnames nothing, one that names a personal tenant, and one that names an\nunlisted organization are indistinguishable from here. Discoverable is an\nopt-in to being known about, so a response that separates \"nothing is\nthere\" from \"something is there and it is private\" defeats it. This used\nto leak across three statuses and three sentences.","operationId":"create_organization_join_request_api_me_organizations__tenant_id__join_requests_post","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JoinRequestIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyOrganizationJoinRequestOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"join_requests_create"},"get":{"tags":["me"],"summary":"List Organization Join Requests","description":"The queue of people asking to join this organization, oldest first.\n\nOwner or admin only, and it is a membership question rather than a roster\none: a member who cannot decide a request has no reason to see who was\nturned away. Pending by default; pass ``status=all`` for the whole history.","operationId":"list_organization_join_requests_api_me_organizations__tenant_id__join_requests_get","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"pending","title":"Status"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationJoinRequestOut"},"title":"Response List Organization Join Requests Api Me Organizations  Tenant Id  Join Requests Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"join_requests_list"}},"/api/me/organizations/{tenant_id}/join-requests/{request_id}/approve":{"post":{"tags":["me"],"summary":"Approve Organization Join Request","description":"Let this person into the organization, as a member.\n\nApproval never mints an admin. Somebody asking to be let in is not somebody\nasking to run the place, and promoting them is a separate deliberate act on\nthe roster the page already offers.","operationId":"approve_organization_join_request_api_me_organizations__tenant_id__join_requests__request_id__approve_post","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"request_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"join_requests_approve"}},"/api/me/organizations/{tenant_id}/join-requests/{request_id}/deny":{"post":{"tags":["me"],"summary":"Deny Organization Join Request","description":"Turn down this request to join. The person is told, and may ask again.","operationId":"deny_organization_join_request_api_me_organizations__tenant_id__join_requests__request_id__deny_post","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"request_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"join_requests_deny"}},"/api/me/organizations/{tenant_id}/join-requests/{request_id}":{"delete":{"tags":["me"],"summary":"Withdraw Organization Join Request","description":"Take back a request to join an organization. Only the requester may.\n\nAnswers 404 rather than 403 for somebody else's request. \"That is not\nyours\" confirms the request exists, which is the fact a probe is after.","operationId":"withdraw_organization_join_request_api_me_organizations__tenant_id__join_requests__request_id__delete","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"request_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MyOrganizationJoinRequestOut"},"title":"Response Withdraw Organization Join Request Api Me Organizations  Tenant Id  Join Requests  Request Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"join_requests_withdraw"}},"/api/me/organizations/{tenant_id}/domain-grants":{"get":{"tags":["me"],"summary":"List Organization Folder Grants","description":"The folders this organization holds a role on, and so carries its members into.\n\nThe GRANTS the organization holds, NOT the folders it keeps. Those are two\ndifferent lists and ``list_organization_domains`` above is the other one: a\nfolder filed under the organization's own tenant is its property, while a\nrow here is somebody else's folder that the organization was let into, and\nevery member inherits it. Separate paths because conflating them would make\n\"what does this organization own\" and \"what was this organization lent\"\nthe same question, and only the second one can be revoked by a stranger.\n\nDirect grants only. An organization granted on ``finance`` also carries its\nmembers into ``payroll.finance``, but that reach is derived from this row\nrather than written anywhere, so listing the descendants would present one\ngrant as many and offer no way to revoke the copies.\n\nMembership-gated at any organization role: this is a list of what the\ncaller's own membership already gets them, so an outsider has no business\nreading it.","operationId":"list_organization_domain_grants_api_me_organizations__tenant_id__domain_grants_get","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationDomainGrantOut"},"title":"Response List Organization Domain Grants Api Me Organizations  Tenant Id  Domain Grants Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"domain_grants_list"}},"/api/me/models":{"get":{"tags":["me"],"summary":"List Usable Models","description":"List usable chat models for the current identity.\n\nReturns only models where:\n- model_type = 'chat', status = 'active'\n- has an active ModelContract\n- provider has a key configured (server or identity-level)","operationId":"list_usable_models_api_me_models_get","parameters":[{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ChatModelResponse"},"title":"Response List Usable Models Api Me Models Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/models/openrouter/refresh":{"post":{"tags":["me"],"summary":"Refresh Openrouter Models","description":"Refresh the governed registry from OpenRouter's live text catalog.\n\nUses the current identity's BYOK key when present, then the platform key.\nA missing key is an expected no-op.  An upstream failure is returned as a\nwarning-shaped success response so existing registered models remain\nselectable while the UI can tell the person that refresh failed.","operationId":"refresh_openrouter_models_api_me_models_openrouter_refresh_post","parameters":[{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenRouterCatalogRefreshResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/provider-keys":{"get":{"tags":["me"],"summary":"List Provider Keys","description":"List the caller's provider keys (redacted — never the secret value).\n\nTOS-831: feeds Settings, Model keys (TOS-7119; formerly the folder page's\nKeys tab). Keys are scoped to the caller's identity; ``library_id`` tags\nwhich folder each lives in (P3).","operationId":"list_provider_keys_api_me_provider_keys_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProviderKeyOut"},"title":"Response List Provider Keys Api Me Provider Keys Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/provider-keys/{provider}":{"put":{"tags":["me"],"summary":"Set Provider Key","description":"Set or update a provider API key for this identity.\n\nUpserts: if a row exists, updates the key and re-activates.\nKey is encrypted with Fernet before storage when FERNET_KEY is configured.\n\nTOS-6394: an admin/owner has no way to tell, from this endpoint alone,\nwhether a key they mean for the whole install actually needs the admin\nplatform-key surface instead. A real incident on the Heartwood Guild\ninstall (2026-09-17) left a platform-intended ElevenLabs key sitting here,\nunder one person's identity, for a month with nothing surfacing the\nmismatch. The response now carries a one-line hint when the saving\nidentity is an admin/owner and the platform has no active key for this\nprovider yet - advisory only, never blocks or redirects the save, because\na personal key for a provider the platform also happens to lack is a\ncompletely ordinary case.","operationId":"set_provider_key_api_me_provider_keys__provider__put","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProviderKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProviderKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["me"],"summary":"Delete Provider Key","description":"Hard-delete a provider key for this identity.\n\nTOS-1591 A4: permanent — no recycle bin, no restore. Irreversible, so it\nrequires the ADDITIVE admin rung on the owner's home folder (A3).","operationId":"delete_provider_key_api_me_provider_keys__provider__delete","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/provider-keys/bulk-delete":{"post":{"tags":["me"],"summary":"Bulk Delete Provider Keys","description":"Permanently delete several of the caller's provider keys in one call.\n\nTOS-1591 A5: bulk delete is the only bulk action for keys — there is no bulk\nmove (keys never leave the owner's home folder). Irreversible, so it is\nadmin-gated via the ADDITIVE folder rung (A3/A4).","operationId":"bulk_delete_provider_keys_api_me_provider_keys_bulk_delete_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDeleteProviderKeysRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDeleteProviderKeysResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/providers":{"get":{"tags":["me"],"summary":"List Providers","description":"Return the BYOK provider listing for this identity.\n\nSee `thinqos.services.provider_listing` for derivation logic.","operationId":"list_providers_api_me_providers_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/provider-keys/{provider}/test":{"post":{"tags":["me"],"summary":"Test Provider Key","description":"Probe the upstream provider with the supplied key. No DB write.\n\nUsed by the AI Providers page to validate a pasted key before save.\n\nSurfaces the probe's diagnostic ``message``/``error_class`` so the UI can\ndistinguish \"no probe configured\" (cannot validate, save anyway) from a\ntransient failure (timed out / rate limited / provider error - retry).","operationId":"test_provider_key_api_me_provider_keys__provider__test_post","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestProviderKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestProviderKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/agent-compatibility":{"get":{"tags":["me"],"summary":"Check Agent Compatibility","description":"Check provider key compatibility for a list of agent identities.\n\nQuery param: ``agent_ids`` - comma-separated UUIDs.","operationId":"check_agent_compatibility_api_me_agent_compatibility_get","parameters":[{"name":"agent_ids","in":"query","required":true,"schema":{"type":"string","title":"Agent Ids"}},{"name":"chat_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object","additionalProperties":true},"title":"Response Check Agent Compatibility Api Me Agent Compatibility Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/events":{"get":{"tags":["me"],"summary":"Events Stream","description":"Long-lived SSE stream for real-time events delivered to this identity.\n\nEvents are JSON objects emitted as ``data: {json}\\n\\n``.\nTypes: presence_update, typing_start, thread_read, notification_created, ping.\n\nIdentity-scoped: subscribes to ``identity:{identity.id}`` only.","operationId":"events_stream_api_me_events_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/sync":{"get":{"tags":["me"],"summary":"Ambient Sync","description":"Every ambient badge surface in one cheap round trip (TOS-3494).\n\nReplaces the ambient half of the always-on ``GET /api/me/events`` stream.\nThat stream is a held HTTP request, and Cloud Run bills request-based CPU at\n9.6x the idle rate for the whole time any request is in flight, so an\nopen-but-silent stream costs the same as hard compute. Measured 2026-08-22:\n563 streams x 228s mean = 128,394 request-seconds/day, **51% of all billable\ninstance time on awen-api**, overwhelmingly from tabs nobody was looking at.\n\nWhy ONE endpoint rather than four polls. The four ambient surfaces (nav\nunread badge, notification bell, agents \"needs review\" badge, chat sidebar)\neach have a perfectly good REST endpoint already. Polling all four costs\nfour auth passes, four ``get_db`` sessions and four middleware traversals per\ntick, and the measured floor for any request here is ~0.25-0.6s regardless\nof how trivial its work is. Consolidating is roughly a 3x saving on top of\nthe ~30x from not holding the stream open. constraint-intelligence runs the\nunconsolidated version (3-5 sequential round trips per tick) and lists it as\na known defect; this is the fixed shape, not a port of theirs.\n\n``since`` is optional. Omitted, this is a bootstrap returning current state\nwith no ``changed_chat_ids``. Supplied, ``changed_chat_ids`` carries chats\nwhose activity moved since then. The comparison is ``>=`` (matching the\nexisting ``activity_since`` filter on ``GET /api/chats``), so the boundary\nchat can repeat across consecutive polls; consumers must treat the list as a\nset of \"refetch this\" hints and not as an append log.\n\nSends ``ETag``/``304``. The overwhelmingly common outcome is that nothing\nchanged, and a 304 skips the response body: FastAPI clears it for any status\nthat may not carry one, so the wire form is a bodiless, Content-Length-less\n304 per RFC 7232. It does NOT skip serialization - the payload is still\nencoded and then discarded - and it does NOT skip the queries below, which is\ndeliberate: a cheaper \"has anything\nchanged\" probe would need its own high-water-mark column, and each query\nhere is already indexed and cheap. Revisit only if measurement says these\nqueries, rather than the request floor, are the cost.","operationId":"ambient_sync_api_me_sync_get","parameters":[{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Since"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AmbientSyncResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/me/presence":{"post":{"tags":["me"],"summary":"Presence Heartbeat","description":"Update presence for the current identity.\n\nCall every 30 seconds while the user has the app open.\n\nNo-ops entirely while impersonating: the web app's shared\nfetch client attaches X-Impersonate-Identity-Id to every request,\nincluding this heartbeat, so an admin/owner with an identity's screen\nopen via act-as would otherwise continuously refresh THAT identity's\npresence purely from the impersonator's own session - not anything the\nidentity did.","operationId":"presence_heartbeat_api_me_presence_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/PresenceHeartbeatRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresenceHeartbeatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["me"],"summary":"Get Presence Snapshots","description":"Return current visible presence snapshots for this identity.","operationId":"get_presence_snapshots_api_me_presence_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PresenceSnapshotResponse"},"title":"Response Get Presence Snapshots Api Me Presence Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/notifications":{"get":{"tags":["me"],"summary":"Get Notifications","description":"Keyset-paginated open notifications, newest first (TOS-464 / TOS-3120).\n\n\"Open\" is every unresolved obligation plus every unread receipt - an\nobligation deliberately survives being read, because reading is not doing.\n\nWithout ``before`` returns the most recent ``limit`` rows; pass the previous\nresponse's ``next_cursor`` as ``before`` to load older ones. 400 on a\nmalformed cursor.","operationId":"get_notifications_api_me_notifications_get","parameters":[{"name":"before","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Before"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/notifications/read-all":{"patch":{"tags":["me"],"summary":"Mark All Notifications Read","description":"Mark all unread notifications read for the current identity.\n\nDoes not resolve obligations (TOS-3120): a still-broken integration stays in\nthe queue and keeps counting. Emptying the badge while the problems remain\nis what made it untrustworthy.","operationId":"mark_all_notifications_read_api_me_notifications_read_all_patch","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/notifications/{notification_id}/read":{"patch":{"tags":["me"],"summary":"Mark Notification Read","description":"Mark a single notification read. 404 if not found or not owned by caller.","operationId":"mark_notification_read_api_me_notifications__notification_id__read_patch","parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Notification Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/notifications/{notification_id}/dismiss":{"patch":{"tags":["me"],"summary":"Dismiss Notification","description":"Resolve one notification as \"I know, leave me alone\" (TOS-3120).\n\nThe user's explicit exit from an obligation the system cannot see the end\nof. Distinct from read: read means seen, this means done with. 404 if not\nfound or not owned by the caller.","operationId":"dismiss_notification_api_me_notifications__notification_id__dismiss_patch","parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Notification Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/connect-code":{"get":{"tags":["me"],"summary":"Get Connect Code","description":"Get the calling identity's connection code (e.g. 'TQ-ABCD1234EFGH'). Others can use this code\nwith connect_by_code to request a connection without searching by name.","operationId":"get_connect_code_api_me_connect_code_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectCodeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/connect-by-code":{"post":{"tags":["me"],"summary":"Connect By Code","description":"Send a connection request to the owner of a connect code. If the target auto-accepts, the\nconnection is established immediately.","operationId":"connect_by_code_api_me_connect_by_code_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectByCodeRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Connect By Code Api Me Connect By Code Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/connection-defaults":{"get":{"tags":["me"],"summary":"Get Connection Defaults","description":"Return the current identity's connection defaults.","operationId":"get_connection_defaults_api_me_connection_defaults_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionDefaultsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["me"],"summary":"Update Connection Defaults","description":"Update the current identity's connection defaults.","operationId":"update_connection_defaults_api_me_connection_defaults_patch","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateConnectionDefaultsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionDefaultsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/discoverability":{"get":{"tags":["me"],"summary":"Get Discoverability","description":"Get the calling identity's discoverability and connection settings: discoverable_by_username,\ndiscoverable_by_email, auto_accept, and connection_policy.","operationId":"get_discoverability_api_me_discoverability_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoverabilityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["me"],"summary":"Update Discoverability","description":"Update the calling identity's discoverability and connection settings. connection_policy is\n'off', 'request', or 'auto'.","operationId":"update_discoverability_api_me_discoverability_patch","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDiscoverabilityRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoverabilityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/preferences":{"get":{"tags":["me"],"summary":"Get Preferences","description":"Return the current identity's UI preferences (TTS voice etc.).","operationId":"get_preferences_api_me_preferences_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreferencesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["me"],"summary":"Update Preferences","description":"Patch the current identity's UI preferences.\n\nOnly the fields explicitly present in the JSON body are touched.\nPassing ``\"tts_voice\": null`` clears the preference (falls back to the\nplatform default).","operationId":"update_preferences_api_me_preferences_patch","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePreferencesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreferencesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/notification-overrides":{"get":{"tags":["me"],"summary":"List Notification Overrides","description":"Return per-contact notification overrides for the current identity.\n\nKeyset-paginated (TOS-3280); pass the previous response's ``next_cursor``\nto load more. 400 on a malformed cursor.","operationId":"list_notification_overrides_api_me_notification_overrides_get","parameters":[{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":200,"minimum":1},{"type":"null"}],"default":200,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationOverrideListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/notification-overrides/{target_identity_id}":{"put":{"tags":["me"],"summary":"Set Notification Override","description":"Set (or clear) a notification style override for one contact.\n\nPass ``style=null`` to delete the override and inherit the account default.","operationId":"set_notification_override_api_me_notification_overrides__target_identity_id__put","parameters":[{"name":"target_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Target Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetNotificationOverrideBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Set Notification Override Api Me Notification Overrides  Target Identity Id  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/visitor-claims":{"post":{"tags":["me"],"summary":"Claim Visitor Session","description":"Hand an anonymous embed visitor's conversation to the signed-in caller (TOS-4550).\n\nSame-site only: this is an authenticated ``/api/me`` route, reached with\nthe caller's own session, not the CORS-scoped ``/api/embed`` surface. It\nexists because ``thinqos.com`` and ``app.thinqos.com`` are same-site, so a\nvisitor token minted while chatting on the marketing site is readable from\nthis app's own ``localStorage`` once the person signs up here. A visitor\nembedded on a THIRD-PARTY customer domain is storage-partitioned from this\norigin and cannot reach this route at all; that case is out of scope (see\nTOS-4550) and is not silently pretended to work.\n\n``resolve_visitor`` is called with ``same_origin_transport=True`` for the\nsame reason ``embed_session`` uses it: the token was minted while the\ncaller was on this app's own origin, not a customer's, so the stored\norigin can never match a customer origin here. ``origin`` is otherwise\nunused on that path and is passed empty.","operationId":"claim_visitor_session_api_me_visitor_claims_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitorClaimBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitorClaimResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/chat-mute-overrides":{"get":{"tags":["me"],"summary":"List Chat Mute Overrides","description":"Return the caller's explicitly-set per-conversation mute overrides (TOS-575).\n\nKeyset-paginated (TOS-3280); pass the previous response's ``next_cursor``\nto load more. 400 on a malformed cursor.","operationId":"list_chat_mute_overrides_api_me_chat_mute_overrides_get","parameters":[{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":200,"minimum":1},{"type":"null"}],"default":200,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatMuteOverrideListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/avatar":{"post":{"tags":["me"],"summary":"Upload My Avatar","operationId":"upload_my_avatar_api_me_avatar_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_my_avatar_api_me_avatar_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"null"}]},"title":"Response Upload My Avatar Api Me Avatar Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["me"],"summary":"Delete My Avatar","operationId":"delete_my_avatar_api_me_avatar_delete","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/self-improvement":{"get":{"tags":["agents"],"summary":"Get Owner Self Improvement","description":"Read this agent's own measured score and recorded self-update trials.\n\nVisibility is checked before owner authority so an invisible agent remains\na 404. The effective Become identity, never its controller, is the actor.","operationId":"get_owner_self_improvement_api_agents__agent_id__self_improvement_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OwnerSelfImprovementSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/self-improvement/review-runs":{"get":{"tags":["agents"],"summary":"List Identity Review Runs","description":"The identity's nightly review rows, newest night first.\n\nA person reads their own Mind's rows (TOS-5064 9.1: a person's Mind is\nreviewed like an agent, and the person is its owner). Anything else has\nthe self-improvement summary's authority: visibility first (an invisible\nagent stays a 404), then owner authority.","operationId":"list_identity_review_runs_api_agents__agent_id__self_improvement_review_runs_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":60,"minimum":1,"default":7,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/IdentityReviewRunSummary"},"title":"Response List Identity Review Runs Api Agents  Agent Id  Self Improvement Review Runs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents":{"get":{"tags":["agents"],"summary":"List Agents","description":"List all agents visible to the current identity.\n\nTOS-419 optional filters: ``archetype`` and ``tag`` (a tag slug) narrow the\nresult server-side. Both are AND-combined when present.\n\nTOS-595: the system-only ``integration`` archetype is accepted HERE as a\nread filter (it surfaces the caller's integration-agent wrappers), even\nthough it is rejected as a manual assignment on PUT /api/agents/{id}. The\naccepted read set is therefore ``ALL_ARCHETYPES``; any other value is 422.\n\nTOS-3512: returns the trimmed ``AgentSummaryResponse`` shape - no\n``system_prompt``/``config`` - since those two fields alone accounted for\n~95% of a measured 431KB/56-agent payload. A caller needing either field\nfetches ``GET /api/agents/{agent_id}``, which still returns the full\n``AgentResponse``.\n\nTOS-3663 follow-up: serialized through ``_agent_list_payloads`` rather than\na FastAPI ``response_model``, so the owner-only omission contract applies\nhere too. ``list_agents_for`` returns every ``is_global`` agent plus any\nagent the caller holds a viewer grant on, so this endpoint hands most of\nits rows to a NON-owner; before this it shipped ``model_bundle``,\nthe since-retired ``reply_style`` and ``autonomy_tier``, ``default_mode``,\n``self_improvement_mode`` and the owner's ``listing`` consent record to\neach one. Declaring the model here is what bypassed the contract, which is\nwhy ``response_model`` is now pinned to None by a test.","operationId":"list_agents_api_agents_get","parameters":[{"name":"archetype","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Archetype"}},{"name":"tag","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tag"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["agents"],"summary":"Create Agent","description":"Create a new agent owned by the current identity.\n\nTOS-318: when ``body.tts_voice`` is omitted, the handler picks an\nElevenLabs voice via ``suggest_voice`` (4s hard timeout) and writes\nit to ``identities.tts_voice`` before returning. On any failure path\nit writes ``PLATFORM_FALLBACK_VOICE_ID`` instead. The agent is NEVER\npersisted with a NULL voice.","operationId":"create_agent_api_agents_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentCreateBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/inventory":{"get":{"tags":["agents"],"summary":"List Agents Inventory","description":"Return the caller's genuine configured agents.","operationId":"list_agents_inventory_api_agents_inventory_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/trash":{"get":{"tags":["agents"],"summary":"List Trashed Agents","description":"List the caller's recycle-binned agents (TOS-397).\n\nDeclared before ``GET /{agent_id}`` so the literal ``trash`` segment isn't\ncaptured as an agent id.\n\nTOS-3512 follow-up: trimmed to ``AgentSummaryResponse`` like the other two\nlist endpoints. AgentsPage.tsx renders trashed agents through the same\n``AgentCard`` as the live list, reading ``knowledge_source_count`` rather\nthan the full ``config`` this shape omits.\n\nTOS-3663 follow-up: routed through ``_agent_list_payloads`` like every\nother list. ``list_deleted_agents_for`` is scoped to agents the caller\nadministers, so in practice every row here is an owner row and nothing is\nstripped - but that is a property of today's query, not of this endpoint,\nand pinning the serializer is what keeps it true if the scope ever widens.\nThe move also removes a real N+1: this endpoint passed no ``tags``, so\n``_agent_to_response`` fired one ``agent_tags`` query per trashed agent.","operationId":"list_trashed_agents_api_agents_trash_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/listed":{"get":{"tags":["agents"],"summary":"List Listed Agents","description":"List every live, connectable agent: the Marketplace Agents tab.\n\nTOS-3663 / TOS-5058: the read behind the Marketplace Agents tab (lane A1).\nSelection is ``kind == \"agent\"`` and ``connection_policy != \"off\"`` plus\nliveness; NOT scoped to the caller's visibility, because an agent that\naccepts connection requests is reachable by anyone. The kind filter is\nrequired: ``connection_policy`` defaults to ``request`` for every kind,\nso without it this would also surface default-configured persons who\nnever consented to a public listing.\n\nDeclared before ``GET /{agent_id}`` so the literal ``listed`` segment is\nnot captured as an agent id.\n\nEach item is the list (summary) shape serialized through the TOS-3663\nomission contract: for identities the caller does not own, the owner-only\nMind/behavior/finance fields are ABSENT from the JSON. ``listing`` is the\none exception here - every item on this endpoint is listed by consent, so\nthe consent triple itself is included for every item.","operationId":"list_listed_agents_api_agents_listed_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/from-definition":{"post":{"tags":["agents"],"summary":"Create Agent From Definition Route","description":"Create a new agent carrying only the definition of an agent the caller\nowns (TOS-3760). See ``services/agents/definition.py`` for what is copied.","operationId":"create_agent_from_definition_route_api_agents_from_definition_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentFromDefinitionBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentFromDefinitionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/import":{"post":{"tags":["agents"],"summary":"Import Agent Json","operationId":"import_agent_json_api_agents_import_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentPackageImportBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Import Agent Json Api Agents Import Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/import-zip":{"post":{"tags":["agents"],"summary":"Import Agent Zip","description":"Create a new agent from the zip ``GET /{agent_id}/export.zip`` produces\n(TOS-7356). Restores the Mind when the zip carries one; the caller becomes\nthe owner and nothing reaches wider than the caller already does.","operationId":"import_agent_zip_api_agents_import_zip_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_import_agent_zip_api_agents_import_zip_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Import Agent Zip Api Agents Import Zip Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/model-bundles":{"get":{"tags":["agents"],"summary":"List Model Bundles","description":"List every Mindset the caller may select: platform-curated + their own.\n\nTOS-1912 Unit B: this is the Mind tab's picker, so it must include the\ncaller's own personal Mindsets alongside the platform-curated set - never\nanother identity's private one.","operationId":"list_model_bundles_api_agents_model_bundles_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ModelBundleResponse"},"title":"Response List Model Bundles Api Agents Model Bundles Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/model-bundle":{"put":{"tags":["agents"],"summary":"Select Model Bundle","description":"Select a curated bundle, defaulting to GLM 5.2 when no id is supplied.\n\nUser overrides are preserved. Every identity retains a concrete template.","operationId":"select_model_bundle_api_agents__agent_id__model_bundle_put","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelBundleUpdateBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/export.json":{"get":{"tags":["agents"],"summary":"Export Agent Json","operationId":"export_agent_json_api_agents__agent_id__export_json_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Export Agent Json Api Agents  Agent Id  Export Json Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/export.zip":{"get":{"tags":["agents"],"summary":"Export Agent Zip","description":"The complete agent download (TOS-7356): agent.json, AGENT.md, skills,\nand the Mind.\n\nThe Mind and memory are far more sensitive than the configuration, so they\nare included only for a caller with config authority (an owner or\nadministrator, the same check that gates editing the agent). A caller who\ncan merely see the agent gets the rest, and the package says what it left\nout in ``omitted``.","operationId":"export_agent_zip_api_agents__agent_id__export_zip_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/document":{"put":{"tags":["agents"],"summary":"Put Agent Document","description":"Apply an edited document to the effective identity's live profile.","operationId":"put_agent_document_api_agents__agent_id__document_put","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentDocumentBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Put Agent Document Api Agents  Agent Id  Document Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/pending-change-counts":{"get":{"tags":["agents"],"summary":"Get Pending Change Counts","description":"Per-agent pending change-set counts for the caller's owned agents.\n\nTOS-2165: powers the \"needs review\" badge on the Agents list. Declared\nBEFORE the plain ``GET /{agent_id}`` route so the literal path is not\ncaptured by the ``{agent_id}`` UUID parameter (TOS-3272: a prior version\nof this comment only guarded against ``/{agent_id}/pending-changes``,\nmissing this route's real collision).","operationId":"get_pending_change_counts_api_agents_pending_change_counts_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PendingChangeCountsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}":{"get":{"tags":["agents"],"summary":"Get Agent","description":"Get detail for a single agent.\n\nTOS-3663 (decision U3): the payload shape depends on the caller's\nrelationship. Owners (myself/built) get the full ``AgentResponse``;\neveryone else gets it with ``OWNER_ONLY_AGENT_FIELDS`` (Mind, behavior,\ncredential, and finance configuration) OMITTED from the JSON entirely,\nnot nulled. Serialized through ``_agent_payload`` rather than a FastAPI\nresponse_model so the omitted keys are genuinely absent. TOS-4945 layers\nthe owner's capabilities/reputation disclosure switches on top of that.\n\n``?as=connected|hirer|public`` (TOS-4945) lets an owner preview their own\nidentity's payload as another viewer would see it. One implementation of\nthe omission/disclosure rule serves both the real and the previewed\npayload - the query param only substitutes the relationship BEFORE\n``_agent_payload`` runs. Owner-only: rejected with 422 for a caller whose\nreal relationship is not already myself/built.","operationId":"get_agent_api_agents__agent_id__get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"as","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Owner-only preview: render the payload as connected/hirer/public would see it.","title":"As"},"description":"Owner-only preview: render the payload as connected/hirer/public would see it."},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["agents"],"summary":"Update Agent","description":"Update the currently authenticated thinqOS identity. To update an agent, authenticate or act as\nthat agent first. Pass only the fields you want to change; omitted fields are left alone.\nSetting status='archived' takes the agent offline (also see agent_archive for a shorthand).\ntagline is a short hook shown under the agent name. communication_profile (TOS-2926) is\nhow the identity writes: an object with a 'preset' key, one of 'adaptive' (default), 'clear_direct', 'warm_expressive', 'formal_precise'. reply_workflow\ncontrols whether this identity drafts for owner review, sends without review, or does not reply:\n'manual', 'draft', or 'send'. unreviewed_information_scope ('limited' or 'full') applies only\nwhen reply_workflow='send'. self_improvement_policy supersedes self_improvement_mode: 'off',\n'review', or 'minor' (auto-applies only platform-allowlisted low-risk changes).\ndefault_mode applies only to a PERSON identity: an agent identity is always kind='agent', so setting default_mode to anything other than 'agent' on an agent is rejected -\nthis is unrelated to reply_workflow, which IS configurable for agents. self_improvement_mode\n(legacy) is still accepted for compatibility: 'manual' disables self-improvement suggestions,\n'augmented' requires owner approval, 'autonomous' lets low-risk changes auto-apply.\nsystem_prompt is the Mind Constitution: thinqOS distills it into identity, role, expertise and\ntrait beliefs, and instructions written in it do NOT reach the model. Put rules the agent must\nfollow in operating_instructions, which is injected verbatim into every turn; pass an empty\nstring to clear it. When a write sets system_prompt while the identity has no\noperating_instructions, the response's warnings list says so. Universal truthfulness rules are platform-owned. connection_policy is 'off',\n'request', or 'auto'. visual_brand_guidelines and visual_brand_logo_url update generated visual\nasset brand standards; pass an empty string to clear an agent override and fall back to thinqOS\ndefaults. config is the structural identity blob. Model selection is configured only through the\nidentity's AI Config template and per-operation overrides; versioning-owned keys (status,\nmemory_kb_id, default_mode) are preserved automatically.\nbrowser_automation_enabled toggles the governed browser runner platform capability.\nweb_browse_enabled toggles the isolated public-web browsing platform capability.\ndoctrine_library_ids replaces the agent's connected folders wholesale; pass [] to disconnect\nall. billing_mode sets whose trial grant pays for turns: 'owner_pays' (the owner's grant funds\nevery caller) or 'caller_pays' (each caller funds their own); applied surgically without\ntouching the rest of config. To act as another identity, impersonate it per request with the\nimpersonation header, as the web client does; this route takes no act_as parameter. You must be\nentitled to impersonate that identity.","operationId":"update_agent_api_agents__agent_id__put","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentUpdateBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["agents"],"summary":"Delete Agent","description":"Archive a thinqOS agent (status='archived', is_active=false). Caller must be an active owner.\nIdempotent: re-archiving a currently-archived agent is a no-op success. Shorthand for\nagent_update(agent_id, status='archived').","operationId":"delete_agent_api_agents__agent_id__delete","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/turn-duration-p90":{"get":{"tags":["agents"],"summary":"Get Agent Turn Duration P90","description":"This agent's measured p90 turn duration, or \"insufficient data\".\n\n``p90_ms`` is ``None`` below ``min_sample_size`` samples in the trailing\n``window_days`` - never a fabricated number. Any caller who can view the\nagent may read this; it carries only an aggregate timing statistic, no\nprompts, responses, or per-turn detail.","operationId":"get_agent_turn_duration_p90_api_agents__agent_id__turn_duration_p90_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"capability","in":"query","required":false,"schema":{"type":"string","default":"chat","title":"Capability"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TurnDurationStatsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/prompt-preview":{"get":{"tags":["agents"],"summary":"Get Agent Prompt Preview","description":"Show what this identity's next system prompt is actually built from.","operationId":"get_agent_prompt_preview_api_agents__agent_id__prompt_preview_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptPreviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/ai-config":{"get":{"tags":["agents"],"summary":"Get Ai Config","description":"Resolved per-operation model-config sheet (TOS-1281 Phase B).\n\nSame visibility gate as ``GET /api/agents/{agent_id}`` - any identity that\ncan view the agent can read its resolved config; only owners may write to\nit (enforced in the service, not here).","operationId":"get_ai_config_api_agents__agent_id__ai_config_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/ai-config/preview":{"post":{"tags":["agents"],"summary":"Preview Ai Config","description":"Resolve a candidate template selection WITHOUT saving (TOS-2491).\n\nThis is what lets the agent editor treat template selection like every\nother section - buffer it into the editor's dirty state and commit on the\nglobal Save - rather than writing on click. The client cannot resolve it\nitself: ``GET /api/agents/model-bundles`` returns template metadata only,\nwith no operations blob, and resolution additionally needs the identity's\ncredential policy, model bindings and contract data.\n\nRead-only. Same visibility gate as ``GET .../ai-config``; it performs no\nwrites, so it deliberately does NOT require config authority - previewing\nis exactly as sensitive as reading the sheet you are previewing against.","operationId":"preview_ai_config_api_agents__agent_id__ai_config_preview_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiConfigPreviewBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/ai-config/{op_key}/override":{"put":{"tags":["agents"],"summary":"Set Ai Config Override","description":"Pin one registry operation to a specific model + params. Owner-only -\nenforced by ``AgentsService.set_operation_override`` (raises\n``PermissionError``), not by a route-level check.","operationId":"set_ai_config_override_api_agents__agent_id__ai_config__op_key__override_put","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"op_key","in":"path","required":true,"schema":{"type":"string","title":"Op Key"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OverrideBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"ai-config_override_set"},"delete":{"tags":["agents"],"summary":"Clear Ai Config Override","description":"Remove one operation's override, restoring the selected template\nresolution. Owner-only, enforced in the service. Clearing an override\nthat was never set (or already cleared) is a no-op, not a 404/400.","operationId":"clear_ai_config_override_api_agents__agent_id__ai_config__op_key__override_delete","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"op_key","in":"path","required":true,"schema":{"type":"string","title":"Op Key"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"ai-config_override_delete"}},"/api/agents/{agent_id}/ai-config/{op_key}/editable-params":{"get":{"tags":["agents"],"summary":"Get Ai Config Candidate Params","description":"Editable param defs for a CANDIDATE model on one operation (TOS-1281 Task 5).\n\nThe sheet's `editable_params` reflects each row's currently RESOLVED\nmodel; this endpoint lets the editor re-fetch the same param-def shape\nfor a model the user is considering switching TO, before committing the\nPUT. Same read-visibility gate as `GET .../ai-config` - viewing candidate\nparams does not require ownership; only the PUT actually assigns.","operationId":"get_ai_config_candidate_params_api_agents__agent_id__ai_config__op_key__editable_params_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"op_key","in":"path","required":true,"schema":{"type":"string","title":"Op Key"}},{"name":"model_uuid","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Model Uuid"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get Ai Config Candidate Params Api Agents  Agent Id  Ai Config  Op Key  Editable Params Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/ai-config/{op_key}/recent-activity":{"get":{"tags":["agents"],"summary":"Get Ai Config Recent Activity","description":"The trust loop: proof that this operation's config actually did\nsomething, not just that it was saved (TOS-1281 Task 6).\n\nSame read-visibility gate as `GET .../ai-config`. Deliberately NOT part of\nthat sheet response - it queries `model_runs` (the newest row for this\nagent's `identity_id` + the op's mapped `capability`) on demand, called by\nthe frontend on row-expand, so the sheet GET's own bounded query count is\nuntouched. Returns an all-null row when `op_key` has no discoverable\ncapability mapping (`capability_for_op`) or when no run has landed yet.\n`params_summary` never echoes the raw `model_runs.raw_request` - only the\nkeys already declared editable for the op's currently resolved model.","operationId":"get_ai_config_recent_activity_api_agents__agent_id__ai_config__op_key__recent_activity_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"op_key","in":"path","required":true,"schema":{"type":"string","title":"Op Key"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiConfigRecentActivityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/ai-config/revert-all":{"post":{"tags":["agents"],"summary":"Revert All Ai Config","description":"Clear every per-operation override so the selected template is authoritative.","operationId":"revert_all_ai_config_api_agents__agent_id__ai_config_revert_all_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/ai-config/rules":{"put":{"tags":["agents"],"summary":"Set Ai Config Rules","description":"Replace this identity's chat routing rules wholesale (TOS-1287 Phase 2).\n\nOwner-only, enforced by ``AgentsService.set_rule_overrides``. The whole\nordered list is sent every time - order, enable/disable, and each rule's\ntarget model - matching how the Mind tab's \"Model rules\" editor stages a\nsingle dirty-state list rather than per-rule diffs.","operationId":"set_ai_config_rules_api_agents__agent_id__ai_config_rules_put","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RulesBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/ai-config/rules/compile":{"post":{"tags":["agents"],"summary":"Compile Ai Config Rule","description":"Compile a plain-English rule description into structured conditions\n(TOS-1287 Phase 3), for the caller to confirm before staging it.\n\nOwner-gated the same as every other AI-config write surface, even though\nthis endpoint writes nothing - it spends a real, funded AI call\n(``rule_compile``, tracked via ``TrackedAIClient``) against this\nidentity's configuration on every invocation. The compiled predicates\nstill have to pass through ``PUT .../ai-config/rules`` (full\n``routing_policy`` + model-binding validation) to actually be saved -\nthis endpoint's own validation (same ``routing_policy`` predicate rules,\napplied via ``rule_authoring.compile_rule_text``) exists so a bad compile\nis rejected here, at the point it was authored, not silently accepted and\nonly caught later at save time.","operationId":"compile_ai_config_rule_api_agents__agent_id__ai_config_rules_compile_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleCompileBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleCompileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/ai-config/rules/revert":{"post":{"tags":["agents"],"summary":"Revert Ai Config Rules","description":"Revert to the selected Mindset's own chat rules. A no-op when the\nidentity already has no rule override, matching ``revert-all``'s\nidempotent-on-absence contract for per-op overrides.","operationId":"revert_ai_config_rules_api_agents__agent_id__ai_config_rules_revert_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/suggest-voice":{"post":{"tags":["agents"],"summary":"Suggest Agent Voice","description":"Pick a best-fit ElevenLabs voice for the agent's persona.\n\nFetches the live voice catalog under the caller's effective ElevenLabs\nkey (TOS-199 cascade), then asks Haiku to choose one - see\n``services/voice_suggest.suggest_voice`` for the prompt + parsing.\n\nReturns the suggested ``voice_id``. The caller decides whether to\npersist it (PUT /api/agents/{id} with ``tts_voice``). Never throws on\nLLM failure - returns 503 with a clear reason if the suggestion path\ncan't complete.","operationId":"suggest_agent_voice_api_agents__agent_id__suggest_voice_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuggestVoiceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/abilities":{"get":{"tags":["agents"],"summary":"Get Agent Abilities","description":"What can the caller do with this agent? Drives the avatar menu UI.\n\n404 if the agent isn't visible to the caller (same contract as\nGET /api/agents/{id}).","operationId":"get_agent_abilities_api_agents__agent_id__abilities_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentAbilitiesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/provider-keys":{"get":{"tags":["agents"],"summary":"List Agent Provider Keys","description":"List provider keys stored on the agent identity. Values are never returned.","operationId":"list_agent_provider_keys_api_agents__agent_id__provider_keys_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AgentProviderKeyResponse"},"title":"Response List Agent Provider Keys Api Agents  Agent Id  Provider Keys Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/provider-keys/{provider}":{"put":{"tags":["agents"],"summary":"Set Agent Provider Key","description":"Set or update an encrypted provider API key on the agent identity.","operationId":"set_agent_provider_key_api_agents__agent_id__provider_keys__provider__put","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetAgentProviderKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetAgentProviderKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"provider-keys_set"},"delete":{"tags":["agents"],"summary":"Delete Agent Provider Key","description":"Hard-delete a provider key stored on the agent identity.\n\nTOS-1591 A4: permanent — no recycle bin, no restore. Irreversible, so it\nrequires the ADDITIVE admin rung on the agent's home folder (A3).","operationId":"delete_agent_provider_key_api_agents__agent_id__provider_keys__provider__delete","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"provider-keys_delete"}},"/api/agents/{agent_id}/provider-keys/bulk-delete":{"post":{"tags":["agents"],"summary":"Bulk Delete Agent Provider Keys","description":"Permanently delete several of an agent's provider keys in one call.\n\nTOS-1591 A5: bulk delete is the only bulk action for keys — there is no bulk\nmove. Irreversible, so it is admin-gated via the ADDITIVE folder rung on top\nof the active-agent-owner authority.","operationId":"bulk_delete_agent_provider_keys_api_agents__agent_id__provider_keys_bulk_delete_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDeleteAgentProviderKeysRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDeleteAgentProviderKeysResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/reclassify":{"post":{"tags":["agents"],"summary":"Reclassify Agent","description":"Force a fresh AI classification of the agent (TOS-419).\n\nRe-runs the AI classifier REGARDLESS of any manual lock and stamps\n``classification_source='ai'`` on success - the explicit \"re-derive my\ntaxonomy from current content\" action. Caller must be an active owner\n(same authorization as PUT /api/agents/{id}). Fail-soft: a null-archetype\nclassifier result leaves the prior classification untouched.","operationId":"reclassify_agent_api_agents__agent_id__reclassify_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/pending-changes":{"get":{"tags":["agents"],"summary":"List Pending Changes","operationId":"list_pending_changes_api_agents__agent_id__pending_changes_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"pending","title":"Status"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PendingChangesListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/pending-changes/approve":{"post":{"tags":["agents"],"summary":"Approve Pending Changes","operationId":"approve_pending_changes_api_agents__agent_id__pending_changes_approve_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PendingChangeApproveBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PendingChangeDecisionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/pending-changes/reject":{"post":{"tags":["agents"],"summary":"Reject Pending Changes","operationId":"reject_pending_changes_api_agents__agent_id__pending_changes_reject_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PendingChangeRejectBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PendingChangeDecisionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/pending-changes/revert":{"post":{"tags":["agents"],"summary":"Revert Pending Change","operationId":"revert_pending_change_api_agents__agent_id__pending_changes_revert_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PendingChangeRevertBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PendingChangeProposal"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/home":{"put":{"tags":["agents"],"summary":"Set Agent Home","description":"Move an agent to another home folder (TOS-2150). Active owners only.\n\nDeliberately NOT a field on `PUT /api/agents/{id}`. A home folder is not\npart of the agent's self-description; it is the OWNER filing an object in\ntheir namespace, and authorizing it needs a second axis the profile\nendpoint does not check: write reach on the TARGET folder, exactly like\nmoving a document or an integration between folders. So this endpoint takes\nthe ownership axis (an explicit owner grant - an agent may not re-file\nitself) plus that reach check.\n\nThe agent's address changes and it lists under a different folder. For an\nagent whose owners are its folder's administrators (every agent created\nsince home-folder authority), moving it CHANGES WHO OWNS IT: the owners\nbecome the destination folder's administrators, and the previous folder's\nadministrators lose ownership unless they also administer the destination.\nTo add a co-owner without losing anyone, use agent_share instead.","operationId":"set_agent_home_api_agents__agent_id__home_put","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetAgentHomeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/restore":{"post":{"tags":["agents"],"summary":"Restore Agent","description":"Restore an agent from the recycle bin (TOS-397). Active owners only.","operationId":"restore_agent_api_agents__agent_id__restore_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/permanent":{"delete":{"tags":["agents"],"summary":"Purge Agent","description":"Permanently delete a recycle-binned agent (irreversible, TOS-397). Owners only.","operationId":"purge_agent_api_agents__agent_id__permanent_delete","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/share":{"post":{"tags":["agents"],"summary":"Share Agent","description":"Share an agent with another person by making them an administrator of the folder it lives in. Owners only. If the agent lives in a private Home folder, pass a shared folder to move it into (an existing one you administer, or a name to create); the person then owns the agent alongside you. Use this when someone wants to add a co-owner or co-manager, share an agent with a friend or colleague, or give another person full access to it.\n\nIdempotent: repeating the same share changes nothing and answers 200. The person is added\nto the folder as an administrator (promoted if already a member). Everyone who administers\nthat folder owns the agent, so moving it into a folder with other administrators gives them\nownership too.","operationId":"share_agent_api_agents__agent_id__share_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShareAgentBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tool-name":"agent_share","x-mcp-tier":"core"}},"/api/agents/{agent_id}/owners":{"post":{"tags":["agents"],"summary":"Grant Owner","description":"Grant ownership of a thinqOS agent to another PERSON identity (owner = view + edit + delete +\nbilling). Caller must be an active owner. Idempotent: re-granting an existing owner is a no-op\nand a viewer-level grant is promoted to owner. Only person identities can own agents.","operationId":"grant_owner_api_agents__agent_id__owners_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GrantOwnerBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentOwnerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/owners/{owner_id}":{"delete":{"tags":["agents"],"summary":"Revoke Owner","description":"Revoke an identity's ownership of a thinqOS agent. Caller must be an active owner. Refuses to\nrevoke the LAST active owner - an agent must always have at least one owner; hand off to a new\nowner first or archive the agent instead.","operationId":"revoke_owner_api_agents__agent_id__owners__owner_id__delete","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"owner_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Owner Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/lineage":{"get":{"tags":["agents"],"summary":"Get Lineage","description":"List the ownership lineage of a thinqOS agent: every grant including revoked ones, oldest first.\nCaller must be able to view the agent. Each entry has owner_identity_id, access_level ('owner' =\nview + edit + delete + billing, 'viewer' = view only), granted_at/by, and revoked_at/by (null\nwhile active).","operationId":"get_lineage_api_agents__agent_id__lineage_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AgentOwnerResponse"},"title":"Response Get Lineage Api Agents  Agent Id  Lineage Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/versions":{"get":{"tags":["agents"],"summary":"List Versions","description":"Return paginated version history for an agent.","operationId":"list_versions_api_agents__agent_id__versions_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Per Page"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentVersionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/versions/{version_number}":{"get":{"tags":["agents"],"summary":"Get Version","description":"Return a specific version of an agent's configuration.","operationId":"get_version_api_agents__agent_id__versions__version_number__get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"version_number","in":"path","required":true,"schema":{"type":"integer","title":"Version Number"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentVersionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/versions/{version_number}/restore":{"post":{"tags":["agents"],"summary":"Restore Version","description":"Restore the effective identity's profile to a previous version.","operationId":"restore_version_api_agents__agent_id__versions__version_number__restore_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"version_number","in":"path","required":true,"schema":{"type":"integer","title":"Version Number"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/avatar":{"post":{"tags":["agents"],"summary":"Upload Agent Avatar","description":"Upload an avatar for the effective identity.","operationId":"upload_agent_avatar_api_agents__agent_id__avatar_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_agent_avatar_api_agents__agent_id__avatar_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"avatar_create"},"delete":{"tags":["agents"],"summary":"Delete Agent Avatar","description":"Delete the effective identity's avatar.","operationId":"delete_agent_avatar_api_agents__agent_id__avatar_delete","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"avatar_delete"}},"/api/agents/{agent_id}/settings":{"patch":{"tags":["agents"],"summary":"Update Agent Discoverability","description":"Update discoverability settings for the effective identity.","operationId":"update_agent_discoverability_api_agents__agent_id__settings_patch","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentDiscoverabilityRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Agent Discoverability Api Agents  Agent Id  Settings Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/a2a-exposure":{"get":{"tags":["agents"],"summary":"Get A2A Exposure","description":"Whether this agent is reachable over the public A2A protocol surface.","operationId":"get_a2a_exposure_api_agents__agent_id__a2a_exposure_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/A2AExposureResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"a2a-exposure_get"},"put":{"tags":["agents"],"summary":"Set A2A Exposure","description":"Publish this agent on the public A2A surface, or withdraw it.\n\nGated on config authority, not mere visibility: turning this on makes the\nagent reachable by any authenticated external A2A caller, and its turns are\nbilled to its owner by default. Only someone who can configure the agent\nmay make that call.","operationId":"set_a2a_exposure_api_agents__agent_id__a2a_exposure_put","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/A2AExposureUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/A2AExposureResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"a2a-exposure_set"}},"/api/agents/a2a/published":{"get":{"tags":["agents"],"summary":"List Published A2A Agents","description":"Every agent of the caller's that is currently reachable over A2A.\n\nExists so \"which of my agents are exposed to the outside world\" is\nanswerable in one place. Per-agent toggles alone make that question\nrequire opening each agent in turn, which is exactly how someone loses\ntrack of what they have published.\n\nScoped to agents this caller actively OWNS, not merely controls in some\nother capacity - so it can never be used to enumerate other people's\npublished agents, and a non-owner controller (e.g. delegated admin\naccess) never sees an agent listed as theirs to publish.","operationId":"list_published_a2a_agents_api_agents_a2a_published_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PublishedA2AAgent"},"title":"Response List Published A2A Agents Api Agents A2A Published Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/a2a/caller-tokens":{"get":{"tags":["agents"],"summary":"List A2A Caller Tokens","description":"The caller tokens this identity has minted (masked; secrets are gone).","operationId":"list_a2a_caller_tokens_api_agents_a2a_caller_tokens_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/A2ACallerTokenSummary"},"title":"Response List A2A Caller Tokens Api Agents A2A Caller Tokens Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"a2a-caller-tokens_get"},"post":{"tags":["agents"],"summary":"Create A2A Caller Token","description":"Mint a caller token for this identity. The secret is shown exactly once.\n\nThe token grants nothing the identity does not already have: every A2A/MCP\ncall it authenticates still passes the per-agent exposure gate, the\nentitlement check, and the connection policy at turn time.","operationId":"create_a2a_caller_token_api_agents_a2a_caller_tokens_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/A2ACallerTokenCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/A2ACallerTokenCreated"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"a2a-caller-tokens_create"}},"/api/agents/a2a/caller-tokens/{key_id}":{"delete":{"tags":["agents"],"summary":"Revoke A2A Caller Token","description":"Revoke one of this identity's caller tokens. 404 for anyone else's.","operationId":"revoke_a2a_caller_token_api_agents_a2a_caller_tokens__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Key Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"a2a-caller-tokens_delete"}},"/api/agents/{agent_id}/a2a-credentials":{"get":{"tags":["agents"],"summary":"List A2A Credentials","description":"Peers this agent's owner holds a credential for.\n\nReturns hosts and labels only. A stored token is never readable back out\nof the API - there is no product reason to display it, and every reason\nnot to make it retrievable.","operationId":"list_a2a_credentials_api_agents__agent_id__a2a_credentials_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/A2ACredentialSummary"},"title":"Response List A2A Credentials Api Agents  Agent Id  A2A Credentials Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"a2a-credentials_get"},"put":{"tags":["agents"],"summary":"Upsert A2A Credential","description":"Store or rotate the credential presented when calling one peer host.","operationId":"upsert_a2a_credential_api_agents__agent_id__a2a_credentials_put","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/A2ACredentialUpsert"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/A2ACredentialSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"a2a-credentials_set"}},"/api/agents/{agent_id}/a2a-credentials/{host}":{"delete":{"tags":["agents"],"summary":"Delete A2A Credential","operationId":"delete_a2a_credential_api_agents__agent_id__a2a_credentials__host__delete","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"host","in":"path","required":true,"schema":{"type":"string","title":"Host"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/file-retention":{"get":{"tags":["agents"],"summary":"Get File Retention","description":"Read this agent's default file-retention policy.","operationId":"get_file_retention_api_agents__agent_id__file_retention_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileRetentionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"file-retention_get"},"put":{"tags":["agents"],"summary":"Set File Retention","description":"Set the effective identity's default file-retention policy.\n\nSetting a retention preference implies the agent should have memory, so the\nhome folder is provisioned on demand if it does not yet exist.","operationId":"set_file_retention_api_agents__agent_id__file_retention_put","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileRetentionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileRetentionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"file-retention_set"}},"/api/agents/{agent_id}/web-browse-auth-profiles":{"get":{"tags":["agents"],"summary":"List Web Browse Auth Profiles","description":"Which sites this agent may browse already signed in (TOS-3721).\n\nReturns metadata plus a cookie count. The session state itself lives on the\nbrowse runner and is never returned here or to any model.","operationId":"list_web_browse_auth_profiles_api_agents__agent_id__web_browse_auth_profiles_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Web Browse Auth Profiles Api Agents  Agent Id  Web Browse Auth Profiles Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true},"put":{"tags":["agents"],"summary":"Seed Web Browse Auth Profile","description":"Let this agent browse a site you are already logged into (TOS-3721).\n\nYou perform the login yourself, in a real browser, however the site demands\n(password, MFA, SSO). This carries the RESULT of that login: the captured\ncookies and localStorage become the state new browse sessions for this\nagent start from. Nothing here automates a login, and the runner's\npassword/OTP blocks are unchanged.\n\nAuthorization is the same as any other change to this agent's\nconfiguration: the agent itself, or an active owner. Granting is exactly an\nowner deciding their own agent may act on a site they can log into.","operationId":"seed_web_browse_auth_profile_api_agents__agent_id__web_browse_auth_profiles_put","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebBrowseAuthProfileSeed"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Seed Web Browse Auth Profile Api Agents  Agent Id  Web Browse Auth Profiles Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true},"delete":{"tags":["agents"],"summary":"Revoke Web Browse Auth Profile","description":"Withdraw this agent's authenticated access to one site (TOS-3721).\n\nRevoking drops the grant and wipes the stored session state, so the agent\nis signed out there from its next session onward.","operationId":"revoke_web_browse_auth_profile_api_agents__agent_id__web_browse_auth_profiles_delete","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebBrowseAuthProfileRevoke"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Revoke Web Browse Auth Profile Api Agents  Agent Id  Web Browse Auth Profiles Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/agents/{agent_id}/autonomous-work":{"get":{"tags":["agents"],"summary":"Get Autonomous Work","description":"Read whether an owned agent's new autonomous background work is paused.\n\nRequires configuration authority. This does not pause work or affect direct chat.","operationId":"get_autonomous_work_api_agents__agent_id__autonomous_work_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutonomousWorkState"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"autonomous-work_get"},"put":{"tags":["agents"],"summary":"Set Autonomous Work","description":"Stop new background starts without changing listing, billing or direct chat.","operationId":"set_autonomous_work_api_agents__agent_id__autonomous_work_put","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutonomousWorkState"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutonomousWorkState"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"autonomous-work_set"}},"/api/agents/proxy-discover":{"post":{"tags":["agents"],"summary":"Discover Proxy Responder","description":"Check your connection and return the remote agent card or advertised MCP tools.\n\nDiscovery uses your own account and does not create or update an agent.","operationId":"discover_proxy_responder_api_agents_proxy_discover_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProxyConfiguration"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Discover Proxy Responder Api Agents Proxy Discover Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"proxy-discover"}},"/api/agents/{agent_id}/proxy":{"get":{"tags":["agents"],"summary":"Get Proxy Responder","description":"Read the agent response source, pause state and your account readiness.\n\nOnly owners receive the saved responder configuration and connection label.","operationId":"get_proxy_responder_api_agents__agent_id__proxy_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"as","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Proxy Responder Api Agents  Agent Id  Proxy Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"proxy_get"},"put":{"tags":["agents"],"summary":"Put Proxy Responder","description":"Validate and save an external MCP or A2A responder for an agent you own.\n\nA failed connection check leaves the saved response source unchanged.","operationId":"put_proxy_responder_api_agents__agent_id__proxy_put","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProxyConfiguration"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Put Proxy Responder Api Agents  Agent Id  Proxy Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"proxy_set"}},"/api/agents/{agent_id}/proxy/connect":{"post":{"tags":["agents"],"summary":"Connect Proxy Account","description":"Connect your own account to the saved A2A responder after checking its Agent Card.\n\nApproval applies to your current account and configuration, including for hired agents.","operationId":"connect_proxy_account_api_agents__agent_id__proxy_connect_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Connect Proxy Account Api Agents  Agent Id  Proxy Connect Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"proxy_connect"}},"/api/agents/{agent_id}/proxy/pause":{"post":{"tags":["agents"],"summary":"Pause Proxy Responder","description":"Pause or resume an agent's external responder while retaining its saved configuration.\n\nOnly owners may change this state; paused proxies refuse new forwarding.","operationId":"pause_proxy_responder_api_agents__agent_id__proxy_pause_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProxyPauseBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Pause Proxy Responder Api Agents  Agent Id  Proxy Pause Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"proxy_pause"}},"/api/agents/{agent_id}/evaluation-settings":{"get":{"tags":["agent-evaluation"],"summary":"Get Settings","description":"Read an owned agent's interview setting and publisher-approved public instructions.\n\nRequires an active owner grant. This does not read private agent instructions or run a model.","operationId":"get_settings_api_agents__agent_id__evaluation_settings_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationSettings"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"evaluation-settings_get"},"put":{"tags":["agent-evaluation"],"summary":"Put Settings","description":"Enable or disable public interviews and save their approved instructions for an owned agent.\n\nEnabling requires nonempty public instructions and a native agent. This does not run an interview.","operationId":"put_settings_api_agents__agent_id__evaluation_settings_put","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationSettings"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationSettings"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"evaluation-settings_set"}},"/api/agents/{agent_id}/evaluation":{"get":{"tags":["agent-evaluation"],"summary":"Get Evaluation","description":"Read a visible agent listing's interview availability, model and usage disclosures.\n\nUse this before offering an interview. It does not start a model request or incur model usage.","operationId":"get_evaluation_api_agents__agent_id__evaluation_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Evaluation Api Agents  Agent Id  Evaluation Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"evaluation_get"},"post":{"tags":["agent-evaluation"],"summary":"Run Evaluation","description":"Run one bounded public interview using only publisher-approved instructions and the prompt.\n\nNo private Mind or tools are accessed. Existing funding applies; provider work may incur usage\nafter an HTTP timeout or cancellation. Check interview availability and disclosures first.","operationId":"run_evaluation_api_agents__agent_id__evaluation_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationPrompt"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"evaluation_run"}},"/api/agent-triggers":{"get":{"tags":["agent-triggers"],"summary":"Get Agent Triggers","operationId":"get_agent_triggers_api_agent_triggers_get","parameters":[{"name":"agent_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentTriggersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["agent-triggers"],"summary":"Create Agent Trigger","operationId":"create_agent_trigger_api_agent_triggers_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAgentTriggerRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentTriggerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-triggers/webhook":{"post":{"tags":["agent-triggers"],"summary":"Create Agent Webhook Trigger","description":"Create a webhook trigger and hand back its one-time delivery token (TOS-2025).","operationId":"create_agent_webhook_trigger_api_agent_triggers_webhook_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWebhookTriggerRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWebhookTriggerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-triggers/{trigger_id}/rotate-token":{"post":{"tags":["agent-triggers"],"summary":"Rotate Agent Webhook Token","description":"Re-mint a webhook trigger's delivery token (TOS-2081).\n\nThe only recovery path for a token that was lost, and the revocation path\nfor one that leaked. There is deliberately no GET counterpart: nothing can\nread an existing token back, so this endpoint is the whole surface.","operationId":"rotate_agent_webhook_token_api_agent_triggers__trigger_id__rotate_token_post","parameters":[{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Trigger Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateWebhookTokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-triggers/{trigger_id}/deliver":{"post":{"tags":["agent-triggers"],"summary":"Deliver Agent Trigger Webhook","description":"Accept an inbound webhook delivery and enqueue one agent task run (TOS-2025).\n\nDeliberately has NO ``get_identity`` dependency: the caller is an external\nsystem (HubSpot, Stripe, a CI hook) that has no thinqOS identity. It is\nauthorized by the delivery token plus, when the trigger configures a signing\nsecret, an HMAC signature over the raw body. This follows the repo's Cloud\nRun convention: the service is deployed allow-unauthenticated and every\nroute gates itself at the application layer.\n\nReturns 202 as soon as the run is enqueued. It does NOT wait for the agent\nturn, because a vendor's webhook client times out long before one finishes;\nthe scheduler's drain executes it out of band.","operationId":"deliver_agent_trigger_webhook_api_agent_triggers__trigger_id__deliver_post","parameters":[{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Trigger Id"}},{"name":"x-thinqos-delivery-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Thinqos-Delivery-Token"}},{"name":"x-thinqos-signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Thinqos-Signature"}},{"name":"x-thinqos-delivery-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Thinqos-Delivery-Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDeliveryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/agent-triggers/{trigger_id}":{"patch":{"tags":["agent-triggers"],"summary":"Update Agent Trigger","operationId":"update_agent_trigger_api_agent_triggers__trigger_id__patch","parameters":[{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Trigger Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAgentTriggerRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentTriggerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["agent-triggers"],"summary":"Cancel Agent Trigger","operationId":"cancel_agent_trigger_api_agent_triggers__trigger_id__delete","parameters":[{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Trigger Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentTriggerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-triggers/{trigger_id}/enabled":{"post":{"tags":["agent-triggers"],"summary":"Set Agent Trigger Enabled","operationId":"set_agent_trigger_enabled_api_agent_triggers__trigger_id__enabled_post","parameters":[{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Trigger Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetEnabledRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentTriggerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-triggers/{trigger_id}/run-now":{"post":{"tags":["agent-triggers"],"summary":"Run Agent Trigger Now","description":"Queue a run of the trigger now and return it while it is still pending.\n\nTOS-7720: the turn runs as durable background work, never inside this\nrequest, so it is not bound to the request's database deadline. Poll\n``GET /{trigger_id}/runs`` for its outcome.","operationId":"run_agent_trigger_now_api_agent_triggers__trigger_id__run_now_post","parameters":[{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Trigger Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentTaskRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-triggers/{trigger_id}/runs":{"get":{"tags":["agent-triggers"],"summary":"Get Agent Trigger Runs","operationId":"get_agent_trigger_runs_api_agent_triggers__trigger_id__runs_get","parameters":[{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Trigger Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentTaskRunsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/{provider}/{presence_id}":{"post":{"tags":["channel-presence"],"summary":"Deliver Channel Presence Event","description":"Accept one inbound provider push and enqueue at most one agent run.\n\nDeliberately has NO ``get_identity`` dependency, same reasoning as\n``deliver_agent_trigger_webhook``: the caller is an external provider with\nno thinqOS identity. Authorization is entirely the adapter's\n``verify_inbound`` signature check (Slack's HMAC over the raw body) -\nthere is no separate delivery token here because Slack's own signature\nscheme already covers it.","operationId":"deliver_channel_presence_event_api_channels__provider___presence_id__post","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"presence_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Presence Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Deliver Channel Presence Event Api Channels  Provider   Presence Id  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/agents/{agent_id}/slack-presence":{"get":{"tags":["slack-presence"],"summary":"Get Slack Presence","description":"Where this agent's Slack switch stands, and the next step if any.","operationId":"get_slack_presence_api_agents__agent_id__slack_presence_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackPresenceStatus"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true},"patch":{"tags":["slack-presence"],"summary":"Update Slack Presence","description":"The plain switch (``enabled``) and the direct-message toggle.","operationId":"update_slack_presence_api_agents__agent_id__slack_presence_patch","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackPresencePatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackPresenceStatus"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true},"delete":{"tags":["slack-presence"],"summary":"Remove Slack Presence","description":"Remove from Slack: uninstall and delete the agent's Slack app.","operationId":"remove_slack_presence_api_agents__agent_id__slack_presence_delete","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackPresenceStatus"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/agents/{agent_id}/slack-presence/enable":{"post":{"tags":["slack-presence"],"summary":"Enable Slack Presence","description":"Turn the switch on: resume an installed bot, or create and wire its Slack app.\n\nAnswers ``state: needs_token`` when no configuration token is saved for\nthe workspace; a Slack failure answers ``state: failed`` with\n``last_error`` rather than an HTTP error, so the switch can show it.","operationId":"enable_slack_presence_api_agents__agent_id__slack_presence_enable_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackEnableBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackPresenceStatus"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/agents/{agent_id}/slack-presence/config-token":{"post":{"tags":["slack-presence"],"summary":"Save Slack Config Token","description":"Save a pasted Slack configuration refresh token, then continue setup.","operationId":"save_slack_config_token_api_agents__agent_id__slack_presence_config_token_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackConfigTokenBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackPresenceStatus"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/agents/{agent_id}/slack-presence/update-permissions":{"post":{"tags":["slack-presence"],"summary":"Update Slack Permissions","description":"Bring this agent's Slack app up to the permissions thinqOS now asks for.\n\nUpdates the Slack app's scopes and answers with the reinstall link (files and\nthe agent's picture on each reply arrived after the first installs).","operationId":"update_slack_permissions_api_agents__agent_id__slack_presence_update_permissions_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackUpdatePermissionsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/agents/{agent_id}/slack-presence/channels":{"get":{"tags":["slack-presence"],"summary":"List Slack Channels","description":"The workspace's public channels, each marked with whether the agent answers there.\n\nEvery channel the agent is set to answer in is listed even when it is no\nlonger a live public channel, with ``problem`` saying why it cannot hear it.","operationId":"list_slack_channels_api_agents__agent_id__slack_presence_channels_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SlackChannelOut"},"title":"Response List Slack Channels Api Agents  Agent Id  Slack Presence Channels Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/agents/{agent_id}/slack-presence/channels/{channel_id}":{"patch":{"tags":["slack-presence"],"summary":"Update Slack Channel","description":"Check or uncheck a channel (joining it as the bot), or edit its settings.","operationId":"update_slack_channel_api_agents__agent_id__slack_presence_channels__channel_id__patch","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","title":"Channel Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackChannelPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackChannelOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/channels/slack-bot/oauth/callback":{"get":{"tags":["slack-presence"],"summary":"Slack Install Callback","description":"Slack's OAuth redirect after the Allow click.\n\nNo session auth: Slack's redirect carries no thinqOS identity, so the\nsigned ``state`` (presence id + installing identity + expiry) is the\nauthentication, the same role the state row plays in\n``api/github_app_integration.py``'s callback. Every outcome is a redirect\nback to the agent's publish screen with a ``slack=`` marker.","operationId":"slack_install_callback_api_channels_slack_bot_oauth_callback_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/agents/{agent_id}/slack-presence/links":{"get":{"tags":["slack-presence"],"summary":"List Slack Links","description":"People in this agent's Slack workspace who have connected their thinqOS account.\n\nWhen one of them messages the agent it runs as them, with their own access.","operationId":"list_slack_links_api_agents__agent_id__slack_presence_links_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SlackLinkedPersonOut"},"title":"Response List Slack Links Api Agents  Agent Id  Slack Presence Links Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/agents/{agent_id}/slack-presence/links/{slack_user_id}":{"delete":{"tags":["slack-presence"],"summary":"Remove Slack Link","description":"Remove one person's link. Their next message gets the connect link again.","operationId":"remove_slack_link_api_agents__agent_id__slack_presence_links__slack_user_id__delete","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"slack_user_id","in":"path","required":true,"schema":{"type":"string","title":"Slack User Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SlackLinkedPersonOut"},"title":"Response Remove Slack Link Api Agents  Agent Id  Slack Presence Links  Slack User Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/channels/slack-bot/identity-link":{"get":{"tags":["slack-presence"],"summary":"Preview Slack Identity Link","description":"What the link page shows before the person confirms. Spends nothing.","operationId":"preview_slack_identity_link_api_channels_slack_bot_identity_link_get","parameters":[{"name":"state","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":400,"title":"State"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackIdentityLinkPreview"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/channels/slack-bot/identity-link/confirm":{"post":{"tags":["slack-presence"],"summary":"Complete Slack Identity Link","description":"Link the Slack person in the state to the signed-in person. Single use.","operationId":"complete_slack_identity_link_api_channels_slack_bot_identity_link_confirm_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackIdentityLinkBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackIdentityLinkPreview"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/agent-runs":{"get":{"tags":["agent-runs"],"summary":"List Agent Runs","operationId":"list_agent_runs_api_agent_runs_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"enum":["active","waiting","failed","completed","all"],"type":"string","default":"all","title":"State"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":200,"title":"Limit"}},{"name":"fanout_limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Fanout Limit"}},{"name":"agent_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRunsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-runs/fanouts/{fanout_id}/children":{"get":{"tags":["agent-runs"],"summary":"List Fanout Children Endpoint","description":"Drill in to one fan-out's children - where the per-child chats live.","operationId":"list_fanout_children_endpoint_api_agent_runs_fanouts__fanout_id__children_get","parameters":[{"name":"fanout_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Fanout Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FanoutChildrenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-runs/fanouts/{fanout_id}/cancel":{"post":{"tags":["agent-runs"],"summary":"Cancel Fanout Endpoint","description":"Cancel the unstarted children; let the in-flight ones drain.\n\n``cancel_fanout`` only flushes, so the commit has to happen here - without\nit the cancel would appear to succeed and then vanish on the next poll.","operationId":"cancel_fanout_endpoint_api_agent_runs_fanouts__fanout_id__cancel_post","parameters":[{"name":"fanout_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Fanout Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FanoutCancelResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internet-tasks":{"post":{"tags":["internet-tasks"],"summary":"Create Internet Task","description":"Admit an InternetTask under the server policy and run it to a verdict.\n\nExecution is inline rather than dispatched. ``origin='internet'`` is\ndeliberately excluded from the generic executor\n(``agent_triggers._DISPATCH_DISABLED_ORIGINS``) precisely so no worker can\nclaim a task whose authority and budget it does not understand, and this\nroute is the first caller that does understand them. The task's own\n``maximumElapsedMs`` bounds how long that can take.","operationId":"create_internet_task_api_internet_tasks_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternetTaskCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Internet Task Api Internet Tasks Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internet-tasks/{run_id}":{"get":{"tags":["internet-tasks"],"summary":"Get Internet Task","description":"Read one task's lifecycle state and the goal it was admitted with.","operationId":"get_internet_task_api_internet_tasks__run_id__get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Run Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternetTaskStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internet-tasks/{run_id}/result":{"get":{"tags":["internet-tasks"],"summary":"Get Internet Task Result","description":"Return the stored ``InternetTaskResultV1`` verbatim.\n\n404 while the task has not reached a terminal judgment: an absent result is\ngenuinely absent, and must not be papered over with an empty success shape.","operationId":"get_internet_task_result_api_internet_tasks__run_id__result_get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Run Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Internet Task Result Api Internet Tasks  Run Id  Result Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internet-tasks/{run_id}/evidence":{"get":{"tags":["internet-tasks"],"summary":"Get Internet Task Evidence","description":"Return every persisted evidence envelope for the run.\n\nThis is what a citation resolves against, so it includes items the judge\nexcluded from support: the audit trail shows what was seen, not only what\nwas used.","operationId":"get_internet_task_evidence_api_internet_tasks__run_id__evidence_get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Run Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Internet Task Evidence Api Internet Tasks  Run Id  Evidence Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/memory/summary":{"get":{"tags":["agent-memory"],"summary":"Memory Summary","operationId":"memory_summary_api_agents__agent_id__memory_summary_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Memory Summary Api Agents  Agent Id  Memory Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/memory/collections":{"get":{"tags":["agent-memory"],"summary":"List Collections","operationId":"list_collections_api_agents__agent_id__memory_collections_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Collections Api Agents  Agent Id  Memory Collections Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/memory/records":{"get":{"tags":["agent-memory"],"summary":"List Records","operationId":"list_records_api_agents__agent_id__memory_records_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"collection","in":"query","required":true,"schema":{"type":"string","title":"Collection"}},{"name":"subject_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Subject Identity Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Records Api Agents  Agent Id  Memory Records Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/memory/export":{"get":{"tags":["agent-memory"],"summary":"Export Records","operationId":"export_records_api_agents__agent_id__memory_export_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Export Records Api Agents  Agent Id  Memory Export Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/memory/records/{record_id}":{"delete":{"tags":["agent-memory"],"summary":"Delete Record","operationId":"delete_record_api_agents__agent_id__memory_records__record_id__delete","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Record Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Record Api Agents  Agent Id  Memory Records  Record Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/memory/staging":{"get":{"tags":["agent-memory"],"summary":"List Staging","description":"Read-only view of the agent's short-term staged_data (per-chat, 24h TTL).","operationId":"list_staging_api_agents__agent_id__memory_staging_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Staging Api Agents  Agent Id  Memory Staging Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/files":{"get":{"tags":["agent-files"],"summary":"List Agent Files","description":"List the caller's own files vaulted in this agent's private file vault.\n\nSubject-scoped to the CALLER: returns only files vaulted under the\ncaller's own identity, never another owner's, even when the caller is a\nco-owner of the agent. Each entry is metadata only - content hash, file\nname, MIME type, size in bytes, retention policy, and source provenance\n(e.g. the originating mailbox message) - never the file's raw bytes.\nRequires the caller to be an active owner of the agent.\n\nKeyset-paginated (TOS-3280): without ``cursor`` returns the most recently\nvaulted files first; pass the previous response's ``next_cursor`` to load\nolder ones. 400 on a malformed cursor.","operationId":"list_agent_files_api_agents__agent_id__files_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentFileListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tool-name":"list_agent_files","x-mcp-tier":"core"}},"/api/agents/{agent_id}/files/{content_hash}":{"get":{"tags":["agent-files"],"summary":"Get Agent File","description":"Return one vaulted file's metadata by its content hash.\n\n``content_hash`` is the sha256 of the file's bytes - also its record key\nand object-store key, so it is the stable identifier to pass here and to\nthe delete route. Only a file vaulted under the CALLER's own identity is\nvisible, never another owner's, regardless of agent co-ownership. Returns\n404 if no such file is vaulted for the caller. Never returns raw bytes -\nuse the returned ``source`` provenance for follow-up, not file content.","operationId":"get_agent_file_api_agents__agent_id__files__content_hash__get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"content_hash","in":"path","required":true,"schema":{"type":"string","title":"Content Hash"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentFileMetadata"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tool-name":"get_agent_file","x-mcp-tier":"core","x-mcp-action":"files_get"},"delete":{"tags":["agent-files"],"summary":"Delete Agent File","description":"Purge a vaulted file: deletes its bytes from object storage and archives\nits reference record.\n\nIdempotent - purging a file that was already deleted, or was never\nvaulted for the caller, returns ``{\"deleted\": false}`` rather than a 404,\nso a retry is always safe. Only purges a file vaulted under the CALLER's\nown identity; a co-owner can never purge another owner's file this way.","operationId":"delete_agent_file_api_agents__agent_id__files__content_hash__delete","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"content_hash","in":"path","required":true,"schema":{"type":"string","title":"Content Hash"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"boolean"},"title":"Response Delete Agent File Api Agents  Agent Id  Files  Content Hash  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tool-name":"delete_agent_file","x-mcp-tier":"core","x-mcp-action":"files_delete"}},"/api/agents/{agent_id}/pricing-plan":{"get":{"tags":["agent-pricing-plan"],"summary":"Get Pricing Plan","description":"The pricing plan the owner of a monetized thinqOS agent has published, plus any unpublished\ndraft: billing model, price, trial terms and rate limits. Only an active owner or a platform\nadmin can read it; anyone else gets a 403. A prospective buyer reads the offer with\nagent_offer instead. Read-only - it never subscribes anyone to anything.","operationId":"get_pricing_plan_api_agents__agent_id__pricing_plan_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingPlanBundle"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"pricing-plan_get"},"put":{"tags":["agent-pricing-plan"],"summary":"Upsert Draft","operationId":"upsert_draft_api_agents__agent_id__pricing_plan_put","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingPlanIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingPlanOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"pricing-plan_set"}},"/api/agents/{agent_id}/pricing-plan/publish":{"post":{"tags":["agent-pricing-plan"],"summary":"Publish","operationId":"publish_api_agents__agent_id__pricing_plan_publish_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingPlanPublishIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingPlanOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/pricing-plan/retire":{"post":{"tags":["agent-pricing-plan"],"summary":"Retire","operationId":"retire_api_agents__agent_id__pricing_plan_retire_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingPlanOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/pricing-plan/versions":{"get":{"tags":["agent-pricing-plan"],"summary":"List Versions","operationId":"list_versions_api_agents__agent_id__pricing_plan_versions_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PricingPlanOut"},"title":"Response List Versions Api Agents  Agent Id  Pricing Plan Versions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/pricing-plan/margin":{"get":{"tags":["agent-pricing-plan"],"summary":"Get Agent Margin","description":"Owner net-margin view for this agent over the trailing 30 days.\n\nMounted on the pricing-plan router because it answers a pricing question and\nhas exactly the same audience and authorization as the plan editor - an\nactive owner or a platform admin. It deliberately does NOT require a\npublished plan: an owner who just retired one still needs to see what the\nperiod earned, and returning 404 there would read as \"your revenue is gone\".","operationId":"get_agent_margin_api_agents__agent_id__pricing_plan_margin_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentMarginOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tier":"extended"}},"/api/agents/{agent_id}/entitlement":{"get":{"tags":["agent-entitlements"],"summary":"Get Entitlement","description":"What access the calling identity currently holds for a thinqOS agent: whether the agent is\nmonetized at all, whether you are entitled to run it, your entitlement state (trialing / active\n/ past_due / canceled / expired), trial runs used vs granted, the period end, and the current offer with its price when the agent\nis monetized. Readable by a prospective buyer, not only by the owner. Read-only. Use\nthinqos_action with resource=\"agents\" and action=\"entitlement_trial\" to start a free\ntrial, or action=\"entitlement_subscribe\" to buy. Confirm the displayed offer first.","operationId":"get_entitlement_api_agents__agent_id__entitlement_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitlementStatusOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/entitlement/trial":{"post":{"tags":["agent-entitlements"],"summary":"Accept Trial","description":"Accept a free trial using the plan_id and plan_version the buyer reviewed.\n\nAn offer_changed conflict requires reviewing its fresh offer and confirming again.","operationId":"accept_trial_api_agents__agent_id__entitlement_trial_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OfferConfirmationIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitlementStatusOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/entitlement/subscribe":{"post":{"tags":["agent-entitlements"],"summary":"Subscribe","description":"Buy access to a monetized thinqOS agent as the calling identity. THIS IS A PURCHASE.\n\nRead the offer and its price first with agent_offer. This endpoint takes no ``trial``\noption: POST to ``/entitlement/trial`` instead (tool agent_start_trial).\nMCP uses thinqos_action(resource=\"agents\", action=\"entitlement_trial\") for trials,\naction=\"entitlement_subscribe\" for purchases, and action=\"entitlement\" to read the offer.\nSubmit its plan_id and plan_version after explicit buyer confirmation.\nAn offer_changed conflict requires reviewing its fresh offer and confirming again.\nFor free resume, send the held plan's coordinates and resume_only=true; this never\nstarts a paid period. Subscribing with active access is refused, not double-charged.\nConfirming this offer while a cancel-pending period on OTHER terms is still live is\nrefused as held_plan_mismatch: resume those held terms, or let the period end first.","operationId":"subscribe_api_agents__agent_id__entitlement_subscribe_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscribeIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitlementStatusOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/entitlement/cancel":{"post":{"tags":["agent-entitlements"],"summary":"Cancel","operationId":"cancel_api_agents__agent_id__entitlement_cancel_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CancelIn"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitlementStatusOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/entitlements":{"get":{"tags":["agent-entitlements"],"summary":"List My Entitlements","operationId":"list_my_entitlements_api_entitlements_get","parameters":[{"name":"target_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntitlementOut"},"title":"Response List My Entitlements Api Entitlements Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/earnings":{"get":{"tags":["agent-earnings"],"summary":"Get Earnings","description":"This seller's earnings portfolio and payout position in one read.\n\nOne endpoint rather than two because the Earnings tab renders them as one\ncard: \"you earned $X, $Y of it is still withdrawable\". Splitting them would\nlet the two halves be fetched a second apart and disagree on screen for that\nsecond, which on a money surface reads as a bug every time.","operationId":"get_earnings_api_earnings_get","parameters":[{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Window Days"}},{"name":"target_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Earnings Api Earnings Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tier":"extended"}},"/api/earnings/charges":{"get":{"tags":["agent-earnings"],"summary":"Get Earnings Charges","description":"This seller's individual sales, newest first, including uncollectable ones.","operationId":"get_earnings_charges_api_earnings_charges_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"target_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Earnings Charges Api Earnings Charges Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tier":"extended"}},"/api/earnings/payouts":{"get":{"tags":["agent-earnings"],"summary":"Get My Payouts","description":"This seller's payout requests, newest first.","operationId":"get_my_payouts_api_earnings_payouts_get","parameters":[{"name":"target_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get My Payouts Api Earnings Payouts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tier":"extended"},"post":{"tags":["agent-earnings"],"summary":"Post Payout Request","description":"Request a payout of available earnings, reserving the amount.\n\nThe reservation is live the moment this returns: the seller's spendable\nbalance drops by the requested amount, so the same dollars cannot also fund\nan AI turn while an admin decides. Rejection gives them back.","operationId":"post_payout_request_api_earnings_payouts_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayoutRequestIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Post Payout Request Api Earnings Payouts Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/admin/payouts":{"get":{"tags":["agent-earnings"],"summary":"Admin List Payouts","description":"The payout queue. Defaults to open requests, oldest first.\n\nPass ``state=paid&state=rejected`` to read the resolved history instead. An\nunknown state is rejected rather than silently returning nothing - an empty\nqueue and a typo'd filter look identical otherwise, and one of them means an\noperator is about to conclude there is nothing to pay.","operationId":"admin_list_payouts_api_admin_payouts_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"State"}},{"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":{"type":"object","additionalProperties":true,"title":"Response Admin List Payouts Api Admin Payouts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/payouts/legal-review":{"post":{"tags":["agent-earnings"],"summary":"Admin Set Payout Legal Review","description":"Record that the attorney review is done, or clear it. Audited; moves no money.","operationId":"admin_set_payout_legal_review_api_admin_payouts_legal_review_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegalReviewIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Admin Set Payout Legal Review Api Admin Payouts Legal Review Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/payouts/{payout_id}/approve":{"post":{"tags":["agent-earnings"],"summary":"Admin Approve Payout","description":"Approve a requested payout. Moves no money; the reservation stands.","operationId":"admin_approve_payout_api_admin_payouts__payout_id__approve_post","parameters":[{"name":"payout_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Payout Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayoutDecisionIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Approve Payout Api Admin Payouts  Payout Id  Approve Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/payouts/{payout_id}/reject":{"post":{"tags":["agent-earnings"],"summary":"Admin Reject Payout","description":"Reject a requested or approved payout, releasing its reservation.","operationId":"admin_reject_payout_api_admin_payouts__payout_id__reject_post","parameters":[{"name":"payout_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Payout Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayoutDecisionIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Reject Payout Api Admin Payouts  Payout Id  Reject Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/payouts/{payout_id}/mark-paid":{"post":{"tags":["agent-earnings"],"summary":"Admin Mark Payout Paid","description":"Mark an approved payout paid: debit the seller's earnings, free the hold.\n\nThis is where the money actually leaves the platform ledger. The transfer\nitself is out of band (``provider='manual'``); ``provider_ref`` records what\nthe operator sent so the ledger line can be tied back to it.","operationId":"admin_mark_payout_paid_api_admin_payouts__payout_id__mark_paid_post","parameters":[{"name":"payout_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Payout Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayoutPaidIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Mark Payout Paid Api Admin Payouts  Payout Id  Mark Paid Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/revenue":{"get":{"tags":["agent-earnings"],"summary":"Admin Platform Revenue","description":"Platform-wide monetization revenue: the 30% share, by kind, plus payout liability.","operationId":"admin_platform_revenue_api_admin_revenue_get","parameters":[{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Window Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Platform Revenue Api Admin Revenue Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-data/schema-changes":{"get":{"tags":["agent-data"],"summary":"List Schema Changes","description":"List the destructive schema changes YOU proposed and where each stands: requested (waiting on\nthe database owner), approved, applied, denied, or canceled. Use this after schema_apply reports\na change needs approval — read the resolution note on a denial and adjust rather than retrying\nthe same spec. Each entry carries the exact DDL and the blast radius that was measured.","operationId":"list_schema_changes_api_agent_data_schema_changes_get","parameters":[{"name":"include_resolved","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Resolved"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchemaChangeListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-data/schema-changes/{request_id}/approve":{"post":{"tags":["agent-data"],"summary":"Approve Schema Change","description":"Approve and execute. Returns the request in its post-apply state.\n\nA 409 here means approved-but-not-applied (the DDL failed against live data,\ntypically a SET NOT NULL over rows that still hold NULLs). The approval\nstands and the request stays retryable — the response says so rather than\nreporting a clean success for a change that did not land.","operationId":"approve_schema_change_api_agent_data_schema_changes__request_id__approve_post","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchemaChangeResolutionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Approve Schema Change Api Agent Data Schema Changes  Request Id  Approve Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-data/schema-changes/{request_id}/deny":{"post":{"tags":["agent-data"],"summary":"Deny Schema Change","description":"Deny a request. The note is what the agent reads, so it is worth writing.","operationId":"deny_schema_change_api_agent_data_schema_changes__request_id__deny_post","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchemaChangeResolutionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Deny Schema Change Api Agent Data Schema Changes  Request Id  Deny Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/audio/status":{"get":{"tags":["audio"],"summary":"Audio Provider Status","operationId":"audio_provider_status_api_audio_status_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioProviderStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/audio/voices":{"get":{"tags":["audio"],"summary":"List Voices","description":"Return the curated default voice set plus the caller's own clones.\n\nThe curated set (``voice_catalog``) is a large, diverse, account-independent\nlist. Every user sees the same presets. Personal voices and English imported\nlibrary voices are fetched from the caller's key via\n``/v1/voices`` and appended. The full Voice Library is reached separately\nthrough ``/voices/search``.","operationId":"list_voices_api_audio_voices_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/audio/voices/search":{"get":{"tags":["audio"],"summary":"Search Voices","description":"Search the full ElevenLabs Voice Library (`/v1/shared-voices`).\n\nEnglish voices only, including provider previews.\nSame key cascade and error mapping as ``/voices``. Returns one page\n(50) of matches in the same ``VoiceOut`` shape.","operationId":"search_voices_api_audio_voices_search_get","parameters":[{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"gender","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"}},{"name":"age","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Age"}},{"name":"accent","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Accent"}},{"name":"language","in":"query","required":false,"schema":{"const":"en","type":"string","default":"en","title":"Language"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Page"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/audio/voices/clone":{"post":{"tags":["audio"],"summary":"Create Voice Clone","description":"Create an ElevenLabs Instant Voice Clone and assign it as a voice.\n\nThe clone belongs to the effective identity. A controller who wants to\nclone for an agent must become that agent first; the authenticated human's\nElevenLabs key still funds the provider call while impersonating.","operationId":"create_voice_clone_api_audio_voices_clone_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_voice_clone_api_audio_voices_clone_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceCloneResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/audio/transcribe":{"post":{"tags":["audio"],"summary":"Transcribe Audio","description":"Transcribe an audio file to text via ElevenLabs Scribe v2.\n\nSame key cascade as /tts and /voices: caller's BYO ElevenLabs key via\nTOS-199 → the stored platform ElevenLabs key. Returns 503 if neither is\nconfigured.\n\nSize cap (25 MB) is kept for parity with the previous OpenAI path -\nElevenLabs has a higher ceiling but the cap doubles as a sane\nupload-size limit for the frontend's webm/opus recordings.","operationId":"transcribe_audio_api_audio_transcribe_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_transcribe_audio_api_audio_transcribe_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Transcribe Audio Api Audio Transcribe Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/audio/tts":{"post":{"tags":["audio"],"summary":"Text To Speech","description":"Convert text to MP3 audio via ElevenLabs Flash v2.5.\n\nVoice resolution order:\n  1. Explicit ``body.voice`` override.\n  2. ``identities.tts_voice`` for ``body.speaker_identity_id`` (the\n     message sender - agent or person).\n  3. ``identities.tts_voice`` for the caller (legacy, no speaker passed).\n  4. ``settings.elevenlabs_default_voice_id`` (synthesis-time fallback\n     per TOS-205 spec §4.4).\n\nVoice IDs are opaque ElevenLabs voice identifiers. ElevenLabs voices\nare scoped by workspace: presets are universally visible, but Instant\nVoice Clones and Voice Design clones live only in the owner's\nworkspace. When the caller's resolved key sits in a different\nworkspace than the message speaker's stored clone, the primary voice\n404s. To stop the stream from blowing up, we pre-check speaker-derived\nvoices against the resolved key and fall back to ``tts_voice_backup``\n(preset, always visible) → ``settings.elevenlabs_default_voice_id`` →\nthe platform fallback voice. See TOS-205 §G and TOS-911.\n\nReturns 503 if no ElevenLabs key is configured.","operationId":"text_to_speech_api_audio_tts_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TTSRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/avatars/generate":{"post":{"tags":["avatars"],"summary":"Generate Avatar Image","operationId":"generate_avatar_image_api_avatars_generate_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/capabilities":{"get":{"tags":["capabilities"],"summary":"Get Capabilities","description":"Return the chat-platform capability list for the slash palette.","operationId":"get_capabilities_api_capabilities_get","parameters":[{"name":"chat_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Optional chat id. When supplied, the response is filtered to the caller's commands, executed by their own Subconscious.","title":"Chat Id"},"description":"Optional chat id. When supplied, the response is filtered to the caller's commands, executed by their own Subconscious."},{"name":"identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Optional identity id. When supplied, returns the owner grant and effective readiness of that identity's platform capabilities.","title":"Identity Id"},"description":"Optional identity id. When supplied, returns the owner grant and effective readiness of that identity's platform capabilities."},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapabilitiesListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identities/{identity_id}/capability-access":{"get":{"tags":["capability-access"],"summary":"Get Capability Access","description":"Return the membership-derived capability picture for ``identity_id``.\n\n404 if the target identity does not exist or is inactive. 403 if the caller is\nneither the target identity, one of its active owners, nor (when the target\nhas disclosed its capabilities, TOS-5180) a hirer or connected viewer.","operationId":"get_capability_access_api_identities__identity_id__capability_access_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapabilityAccessResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identities/{identity_id}/capability-access/effective-tools/{artifact_id}":{"get":{"tags":["capability-access"],"summary":"Get Effective Tool Set","description":"The tools ``identity_id`` may actually call on one connection (TOS-2706).\n\nAnswers \"what does this role actually give them?\" from the SAME\nclassification the call-time guard uses, so the number shown in the UI and\nthe number enforced at dispatch cannot drift.\n\nReads the durable ``connection_tool_catalog`` index rather than calling the\nupstream server: this is a governance read that must be fast, must work\nwhile the connector is down, and must never require the caller to hold the\nconnection's credential.\n\n404 when the artifact is not live for the target identity -- a caller may\nnot enumerate a connection the identity cannot reach. Authorization is the\nsame self-or-owner rule as the rest of this router.","operationId":"get_effective_tool_set_api_identities__identity_id__capability_access_effective_tools__artifact_id__get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Artifact Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EffectiveToolSetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identities/{identity_id}/capability-access/approvals":{"put":{"tags":["capability-access"],"summary":"Set Capability Approval","description":"Set the explicit approval state (and optionally the role) for one artifact.","operationId":"set_capability_approval_api_identities__identity_id__capability_access_approvals_put","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetCapabilityApprovalRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetCapabilityApprovalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identities/{identity_id}/capability-access/grants/{library_id}":{"patch":{"tags":["capability-access"],"summary":"Set Grant Trust Mode","description":"Set the trust policy and/or the capability role for one active grant.","operationId":"set_grant_trust_mode_api_identities__identity_id__capability_access_grants__library_id__patch","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"library_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Library Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetGrantTrustModeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetGrantTrustModeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/operations/{operation_id}/cancel":{"post":{"tags":["operations"],"summary":"Cancel Operation","description":"Cancel one of the caller's own in-flight operations.\n\n404 covers three cases that must stay indistinguishable to the caller: no\nsuch operation, an operation belonging to someone else, and one that has\nalready finished. Reporting them apart would turn this into an oracle for\nwhether another identity is currently running something.","operationId":"cancel_operation_api_operations__operation_id__cancel_post","parameters":[{"name":"operation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Operation Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelOperationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/access/{subject_identity_id}":{"get":{"tags":["integrations"],"summary":"Get Integration Access","description":"Ownership + availability for every integration live for ``subject_identity_id``.","operationId":"get_integration_access_api_integrations_access__subject_identity_id__get","parameters":[{"name":"subject_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Subject Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationAccessResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/captures/extraction-status":{"get":{"tags":["captures"],"summary":"Get Capture Extraction Status","description":"Report honest capture state and separate provider cost from charged spend.","operationId":"get_capture_extraction_status_api_captures_extraction_status_get","parameters":[{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureExtractionTelemetryV1"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/captures/devices":{"get":{"tags":["captures"],"summary":"Get Capture Devices","description":"Observed receipts for this identity, not an inventory of current host trust.","operationId":"get_capture_devices_api_captures_devices_get","parameters":[{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureDevicesV1"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/captures/install-receipt":{"get":{"tags":["captures"],"summary":"Get Capture Install Receipt","description":"Bounded, owner-scoped answer to \"did this installation attempt arrive\".\n\nTOS-4487. This is what makes the historical-session false positive\nimpossible: the only acceptable proof of a fresh install is a receipt\nmatching THIS attempt id and THIS source, inside a server-clock age\nwindow - never \"any existing session for this source\".\n\n``machine_id`` is an OPTIONAL narrowing filter, not a required one, and is\nreturned as evidence instead. The browser cannot know it: the CLI mints it\nlocally per account binding and never tells the UI. The attempt id is the\ncorrelation key the caller actually owns - 128 random bits it generated for\nthis one attempt - so requiring machine_id as an input would only have made\nthe endpoint uncallable from the surface it exists to serve.\n\nOwnership is enforced by filtering on ``(identity_id, attempt_id)``\nfirst, exactly like ``get_external_session``: a foreign or never-arrived\nattempt_id can never match another caller's own identity_id, so this\nreturns 404 with no existence disclosure whether the attempt belongs to\nsomeone else or never happened at all. A match that DOES exist for this\ncaller but under a different source/machine_id, or outside\n``max_age_seconds``, is deliberately NOT a 404 - it is a 200 with every\nfact false, because the attempt genuinely is this caller's own and simply\nhas not (or no longer) produced matching evidence.\n\nNever pages through capture history: the lookup is one indexed equality\nscan on ``(identity_id, attempt_id)`` - the leading columns of\n``CaptureInstallReceipt``'s unique constraint, so no extra index is\nneeded - bounded by a small LIMIT, and every install attempt has at most\none row per distinct trigger by construction.","operationId":"get_capture_install_receipt_api_captures_install_receipt_get","parameters":[{"name":"attempt_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Attempt Id"}},{"name":"source","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Source"}},{"name":"machine_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}],"title":"Machine Id"}},{"name":"max_age_seconds","in":"query","required":false,"schema":{"type":"integer","maximum":3600,"minimum":1,"default":900,"title":"Max Age Seconds"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureInstallReceiptV1"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/captures/source-registry":{"get":{"tags":["captures"],"summary":"Get Capture Source Registry","description":"Return public capture source metadata for product UI surfaces.","operationId":"get_capture_source_registry_api_captures_source_registry_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureSourceRegistryV1"}}}}}}},"/api/captures":{"delete":{"tags":["captures"],"summary":"Bulk Delete Captures","operationId":"bulk_delete_captures_api_captures_delete","parameters":[{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},{"name":"older_than_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":3650,"minimum":1},{"type":"null"}],"title":"Older Than Days"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureBulkDeleteResultV1"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/captures/test":{"post":{"tags":["captures"],"summary":"Post Test Capture For Captures","operationId":"post_test_capture_for_captures_api_captures_test_post","parameters":[{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureTestResultV1"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/captures/sources":{"get":{"tags":["captures"],"summary":"Get Capture Sources","operationId":"get_capture_sources_api_captures_sources_get","parameters":[{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureSourceInfoListV1"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/captures/sources/{source}/state":{"put":{"tags":["captures"],"summary":"Put Capture Source State","operationId":"put_capture_source_state_api_captures_sources__source__state_put","parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureSourceStateUpdateV1"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureSourceInfoV1"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/captures/sources/{source}/policy":{"put":{"tags":["captures"],"summary":"Put Capture Source Policy","operationId":"put_capture_source_policy_api_captures_sources__source__policy_put","parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureSourcePolicyUpdateV1"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureSourcePolicyV1"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/captures/{source}/{source_external_id}/policy":{"put":{"tags":["captures"],"summary":"Put Capture Policy","operationId":"put_capture_policy_api_captures__source___source_external_id__policy_put","parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"source_external_id","in":"path","required":true,"schema":{"type":"string","title":"Source External Id"}},{"name":"instance_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instance Id"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapturePolicyUpdateV1"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapturePolicyV1"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/captures/{source}/{source_external_id}/retention":{"put":{"tags":["captures"],"summary":"Put Capture Retention","operationId":"put_capture_retention_api_captures__source___source_external_id__retention_put","parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"source_external_id","in":"path","required":true,"schema":{"type":"string","title":"Source External Id"}},{"name":"instance_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instance Id"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureRetentionUpdateV1"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureRetentionV1"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/captures/{source}/{source_external_id}/reextract":{"post":{"tags":["captures"],"summary":"Reextract Capture","operationId":"reextract_capture_api_captures__source___source_external_id__reextract_post","parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"source_external_id","in":"path","required":true,"schema":{"type":"string","title":"Source External Id"}},{"name":"instance_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instance Id"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureReextractResultV1"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/captures/{source}/{source_external_id}":{"delete":{"tags":["captures"],"summary":"Delete Capture","operationId":"delete_capture_api_captures__source___source_external_id__delete","parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"source_external_id","in":"path","required":true,"schema":{"type":"string","title":"Source External Id"}},{"name":"instance_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instance Id"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/imprints":{"post":{"tags":["imprints"],"summary":"Teach Imprint","operationId":"teach_imprint_api_imprints_post","parameters":[{"name":"for_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"For Identity Id"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_teach_imprint_api_imprints_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImprintTeachResultV1"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["imprints"],"summary":"List Imprints","description":"List Mind sources, optionally using bounded server-side paging.\n\nCalls without paging or filter parameters keep the original ``{items}``\nresponse for existing consumers. Supplying search, bucket, offset or limit\nopts into ``{rows,total,next_offset,status_counts}``; at most 100 source\nrows and their extraction details are loaded in that form.","operationId":"list_imprints_api_imprints_get","parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","maxLength":200,"default":"","title":"Search"}},{"name":"bucket","in":"query","required":false,"schema":{"anyOf":[{"enum":["imprinted","processing","failed","pending"],"type":"string"},{"type":"null"}],"title":"Bucket"}},{"name":"offset","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100,"minimum":1},{"type":"null"}],"title":"Limit"}},{"name":"for_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"For Identity Id"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ImprintListV1"},{"$ref":"#/components/schemas/ImprintPageV1"}],"title":"Response List Imprints Api Imprints Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/imprints/from-document":{"post":{"tags":["imprints"],"summary":"Teach Imprint From Document","description":"Teach the Mind from a document already in the caller's folders.\n\nBridges folder → Mind without a re-upload: the document's already-extracted\ntext becomes an imprint (a Mind source), reusing the same extraction pipeline\nas an uploaded Teach. The document itself stays in the folder unchanged.\nIdempotent — re-imprinting identical content returns the existing imprint.\n\nDocument visibility is resolved against the CALLER, not the target Mind\n(TOS-2424): teaching one of your own documents to an agent you own is the\npoint of the feature, and the agent generally cannot see your folder.","operationId":"teach_imprint_from_document_api_imprints_from_document_post","parameters":[{"name":"for_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"For Identity Id"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImprintFromDocumentRequestV1"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImprintTeachResultV1"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/imprints/from-documents":{"post":{"tags":["imprints"],"summary":"Teach Imprints From Documents","description":"Teach the Mind from several folder documents at once.\n\nLoops the same per-document path as ``/from-document`` (read-visibility\nonly; never mutates the folder doc), committing and enqueuing extraction\nper document and accumulating per-document failures instead of aborting the\nbatch. Idempotent per document. Visibility is the caller's, ownership the\ntarget Mind's - see ``/from-document``.","operationId":"teach_imprints_from_documents_api_imprints_from_documents_post","parameters":[{"name":"for_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"For Identity Id"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImprintFromDocumentsRequestV1"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImprintBulkTeachResultV1"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/imprints/native-memory":{"post":{"tags":["imprints"],"summary":"Import Native Memory Fact","description":"Import one curated native-agent-memory fact as a durable Mind source.\n\nThis is intentionally an imprint, not an external capture: the source is a\ncurated fact that should feed the Mind and survive rebuild replay.","operationId":"import_native_memory_fact_api_imprints_native_memory_post","parameters":[{"name":"for_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"For Identity Id"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NativeMemoryFactRequestV1"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NativeMemoryFactResultV1"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/imprints/{imprint_id}":{"put":{"tags":["imprints"],"summary":"Update Imprint Version","operationId":"update_imprint_version_api_imprints__imprint_id__put","parameters":[{"name":"imprint_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Imprint Id"}},{"name":"for_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"For Identity Id"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_update_imprint_version_api_imprints__imprint_id__put"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImprintItemV1"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["imprints"],"summary":"Remove Imprint","description":"Remove from Mind, without waiting on the imprint's own extraction (TOS-4353).\n\n``ImprintService.remove`` re-projects synchronously and takes the imprint\nchat's extraction advisory lock to do it. That lock is held for the whole\nof a Mind extraction, and an extraction is exactly what is running moments\nafter a teach, so the synchronous path made this request wait until\n``lock_timeout`` and fail (the TOS-4156 shape). The nonblocking variant\ntombstones in this transaction only when the lock is free and always\nenqueues a durable DELETED reconcile job; the wake below asks the isolated\nreconcile worker to drain it now rather than on its hourly schedule.","operationId":"remove_imprint_api_imprints__imprint_id__delete","parameters":[{"name":"imprint_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Imprint Id"}},{"name":"for_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"For Identity Id"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/imprints/{imprint_id}/reprocess":{"post":{"tags":["imprints"],"summary":"Reprocess Imprint","description":"Re-run extraction for an imprint whose last episode failed.\n\nSeparates *upload* from *processing*: the document text is already stored,\nso a retry only re-opens a fresh extraction episode for the worker — it\nnever re-uploads. Owner-gated. Safe to call on a\n``failed``/``dead_letter`` imprint (the intended use) and idempotent while\none is still ``pending``/``extracting``.","operationId":"reprocess_imprint_api_imprints__imprint_id__reprocess_post","parameters":[{"name":"imprint_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Imprint Id"}},{"name":"for_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"For Identity Id"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImprintItemV1"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/imprints/{imprint_id}/original":{"get":{"tags":["imprints"],"summary":"Download Imprint Original","description":"Download the ORIGINAL uploaded file for an imprint (TOS-847 P2).\n\nOwner-gated. Returns 409 ``original_not_retained`` for imprints with no\nstored original (legacy uploads, teach-from-document of a doc that itself\nhad no retained original, or a store-write failure at upload time).","operationId":"download_imprint_original_api_imprints__imprint_id__original_get","parameters":[{"name":"imprint_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Imprint Id"}},{"name":"for_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"For Identity Id"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/direct-chats/open":{"post":{"tags":["direct chats"],"summary":"Open Direct Chat","description":"Open the canonical direct chat between the caller and another identity.","operationId":"open_direct_chat_api_direct_chats_open_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDirectChatRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/direct-chats/with/{other_identity_id}/conversations":{"get":{"tags":["direct chats"],"summary":"List Direct Conversations","description":"List one section of a connection's relationship panel.\n\n``scope=direct`` (the default) is the canonical direct chat and its active\ntopics, unchanged from before TOS-3461. ``scope=rooms`` is the rooms both\nidentities sit in; ``scope=archived`` is this relationship's archived\nhistory. Each scope pages independently through its own ``offset``.","operationId":"list_direct_conversations_api_direct_chats_with__other_identity_id__conversations_get","parameters":[{"name":"other_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Other Identity Id"}},{"name":"scope","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ConnectionConversationScope","default":"direct"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionConversationPageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/direct-chats/{direct_chat_id}/topics":{"post":{"tags":["direct chats"],"summary":"Create Direct Chat Topic","description":"Create an explicit topic under a canonical direct chat.","operationId":"create_direct_chat_topic_api_direct_chats__direct_chat_id__topics_post","parameters":[{"name":"direct_chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Direct Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTopicRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rooms":{"post":{"tags":["rooms"],"summary":"Create Room","description":"Create a named multiparty room.","operationId":"create_room_api_rooms_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRoomRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rooms/{room_id}":{"get":{"tags":["rooms"],"summary":"Get Room","description":"Get room detail.","operationId":"get_room_api_rooms__room_id__get","parameters":[{"name":"room_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Room Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["rooms"],"summary":"Update Room","description":"Update a room's required name and optional description.","operationId":"update_room_api_rooms__room_id__patch","parameters":[{"name":"room_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Room Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRoomRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rooms/{room_id}/participants":{"post":{"tags":["rooms"],"summary":"Add Room Participant","description":"Add a participant to a room.","operationId":"add_room_participant_api_rooms__room_id__participants_post","parameters":[{"name":"room_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Room Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddParticipantBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParticipantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rooms/{room_id}/participants/{target_identity_id}":{"delete":{"tags":["rooms"],"summary":"Remove Room Participant","description":"Leave a room or remove an agent from it.","operationId":"remove_room_participant_api_rooms__room_id__participants__target_identity_id__delete","parameters":[{"name":"room_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Room Id"}},{"name":"target_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Target Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rooms/{room_id}/owners/{target_identity_id}":{"post":{"tags":["rooms"],"summary":"Transfer Room Ownership","description":"Transfer room ownership to another active human member.","operationId":"transfer_room_ownership_api_rooms__room_id__owners__target_identity_id__post","parameters":[{"name":"room_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Room Id"}},{"name":"target_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Target Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tier":"extended"}},"/api/rooms/{room_id}/admins/{target_identity_id}":{"put":{"tags":["rooms"],"summary":"Promote Room Admin","description":"Promote an active room member to admin; owner-only.","operationId":"promote_room_admin_api_rooms__room_id__admins__target_identity_id__put","parameters":[{"name":"room_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Room Id"}},{"name":"target_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Target Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tier":"extended","x-mcp-action":"admins_set"},"delete":{"tags":["rooms"],"summary":"Demote Room Admin","description":"Demote an active room admin to an ordinary member; owner-only.","operationId":"demote_room_admin_api_rooms__room_id__admins__target_identity_id__delete","parameters":[{"name":"room_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Room Id"}},{"name":"target_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Target Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tier":"extended","x-mcp-action":"admins_delete"}},"/api/rooms/{room_id}/topics":{"post":{"tags":["rooms"],"summary":"Create Room Topic","description":"Create an explicit topic under a room.","operationId":"create_room_topic_api_rooms__room_id__topics_post","parameters":[{"name":"room_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Room Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTopicRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats":{"post":{"tags":["chats"],"summary":"Create Chat","description":"Create a chat. The service seeds creator + agent as participants.","operationId":"create_chat_api_chats_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateChatRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["chats"],"summary":"List Chats","description":"List chats where the current identity is an active participant.\n\nKeyset-paginated, search-aware, and filterable:\n\n- ``?archived=true`` lists chats the caller has archived.\n- ``?unread_only=true`` filters to chats with unread messages, excluding\n  effectively-muted chats (TOS-575; resolved in SQL per TOS-634).\n- ``?q=<text>`` filters to chats whose title or any active participant's\n  display name matches (case-insensitive substring), across the caller's\n  entire chat history rather than the first page.\n- ``?cursor=<token>`` resumes after a previous page. The token for the next\n  page (``None`` on the last page) is returned in the ``X-Next-Cursor``\n  response header so the JSON body stays a plain list.\n- ``?needs_you_only=true`` (TOS-7692) keeps only chats whose ``needs_you``\n  is set. It composes with every other filter and with the cursor.\n\nTOS-7692: every row carries ``last_message_preview``, ``needs_you`` and\n``working`` (see services/chats/list_signals.py for their sources), and the\n``X-Needs-You-Count`` header counts the caller's chats that need them in\nthe requested archive state, ignoring every other filter. Both ride the\nexisting list statements; neither adds a round trip.\n\nTOS-2596 filter axes. Every one of these used to be applied in the browser\nto whatever page was already loaded, so a filter hid rows instead of\nrunning a query - selecting a capture source the caller owned 991\nconversations from returned nothing, because none were on page one, and\ninfinite scroll had to be disabled whenever a filter was active. As query\nparams they compose with the cursor, so a page holds ``limit`` matches:\n\n- ``?source=<slug>`` restricts to one capture source; the reserved value\n  ``thinqos`` selects native conversations (no capture source).\n- ``?capture_connection_id=<uuid>`` narrows to one connection/deployment.\n- ``?capture_org_id=<external org id>`` narrows to one customer ORG across\n  every connection the caller has for it. Use this, not\n  ``capture_connection_id``, for a user-facing \"conversations from <org>\"\n  filter: one customer reached through two deployments is two connection\n  rows for the same caller, so a per-connection filter returns part of that\n  customer's history while looking complete.\n- ``?origin=<slug>&origin=<slug>|<external org id>&origin=thinqos`` (TOS-4379)\n  selects SEVERAL origins at once, OR'd: a whole source, one customer\n  org of an org-scoped source (``slug|org``), or native conversations.\n  When present it supersedes ``source`` and ``capture_org_id``.\n- ``?pinned_only=true``.\n- ``?kinds=direct&kinds=room&...`` OR's the conversation kinds\n  (``direct``, ``room``, ``topic``, ``agent``, ``people``).\n- ``?activity_since=<iso8601>`` bounds by last activity. Send an absolute\n  instant so \"Today\"/\"This week\" resolve in the CALLER's timezone.\n- ``?participant_identity_id=<uuid>`` narrows to chats that identity is\n  ALSO in (TOS-3292) - an intersection with the caller's own participation,\n  so it can only remove rows. Used by the agent schedule picker to list the\n  chats an agent can be scheduled into.\n\nTOS-2216: the retired ``?surface=history`` split (a separate view of\nconcluded conversations) is gone. ``concluded_at`` may still be set\ninternally (see ``ChatService.conclude_chat``/``reopen_chat``) but no\nlonger excludes a chat from this list - the only user-visible axes are\nread/unread and archived/unarchived, both participant scoped.","operationId":"list_chats_api_chats_get","parameters":[{"name":"archived","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Archived"}},{"name":"unread_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Unread Only"}},{"name":"needs_you_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Needs You Only"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Q"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Source"}},{"name":"capture_connection_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Capture Connection Id"}},{"name":"capture_org_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Capture Org Id"}},{"name":"origin","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"},"maxItems":400},{"type":"null"}],"title":"Origin"}},{"name":"pinned_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Pinned Only"}},{"name":"kinds","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Kinds"}},{"name":"activity_since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Activity Since"}},{"name":"participant_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Participant Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ChatResponse"},"title":"Response List Chats Api Chats Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/self":{"post":{"tags":["chats"],"summary":"Open Self Chat","description":"Open the caller's Subconscious — their single persistent self-chat.\n\nIdempotent front door (TOS-424): returns the existing self-chat if one\nexists, otherwise creates it. The Subconscious is one destination per\nidentity, never a fresh chat per visit. No connection gate — the caller\nis the only participant and the responder is their own Mind.","operationId":"open_self_chat_api_chats_self_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/OpenSelfChatRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/start":{"post":{"tags":["chats"],"summary":"Start Conversation","description":"Start a NEW message-first conversation with these parties (TOS-4104).\n\nThe New chat screen's chat action. Always creates; never reopens an\nexisting thread, which is the reported bug this endpoint exists to fix.\nAccepts any number of other parties, so a group conversation is one write\nrather than a create followed by an add.\n\nRooms do not come through here. A room is the named, empty-persisting\nthing and is created by ``POST /api/rooms``; keeping the two endpoints\napart is what stops the server guessing which one the user meant.","operationId":"start_conversation_api_chats_start_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartConversationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartConversationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/matching":{"get":{"tags":["chats"],"summary":"List Conversations With Participants","description":"Conversations that already contain every one of ``participant_ids``.\n\nTOS-4104. Backs the \"you already have\" section of the New chat screen, so\npicking people shows the existing threads with those people instead of the\ncreate action silently reopening one of them.\n\nThe caller's own id is dropped rather than rejected: the UI's selection\nmodel is \"who else\", the caller's seat is already enforced by the query,\nand 400-ing on a harmless duplicate would be a papercut with no upside.","operationId":"list_conversations_with_participants_api_chats_matching_get","parameters":[{"name":"participant_ids","in":"query","required":true,"schema":{"type":"array","items":{"type":"string","format":"uuid"},"title":"Participant Ids"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionConversationPageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/direct":{"post":{"tags":["chats"],"summary":"Create Direct Chat","description":"Compatibility alias for opening the canonical direct chat.\n\nTOS-721 supersedes TOS-262's multiple-DM-per-pair behavior: repeated opens\nreturn/revive the same root direct chat. Separate threads must be explicit\ntopics, not accidental duplicate DMs.","operationId":"create_direct_chat_api_chats_direct_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDirectChatRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/topics":{"post":{"tags":["chats"],"summary":"Create Topic","description":"Compatibility alias for creating an explicit topic under a conversation.","operationId":"create_topic_api_chats__chat_id__topics_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTopicRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/unread-total":{"get":{"tags":["chats"],"summary":"Get Unread Total","description":"Aggregate unread-message counts for the nav and Dock badges (TOS-2508).\n\nReplaces the app shell's full ``GET /api/chats`` fetch-and-sum: the badge\nneeds one integer, and computing it here rides the derived\n``chat_has_unread_expr()`` comparison (TOS-3616), ``chats.last_message_at``\nagainst ``chat_participants.read_watermark_at``, so only currently-unread\nchats are aggregated. Mute resolution matches the list endpoint (muted\nchats do not count toward the badge).\n\n``self_unread`` (TOS-3144) is the self chat's share of ``total_unread``, not\na separate population - the Dock's Subconscious tab is the only surface that\ncan show it, since the self chat is excluded from the chat-list rows.","operationId":"get_unread_total_api_chats_unread_total_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"integer"},"title":"Response Get Unread Total Api Chats Unread Total Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/task-runtimes":{"get":{"tags":["chats"],"summary":"List Chat Task Runtimes","operationId":"list_chat_task_runtimes_api_chats_task_runtimes_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatTaskRuntimeListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/search-messages":{"get":{"tags":["chats"],"summary":"Search Chat Messages","description":"Search the CONTENT of the caller's own conversations (TOS-2330).\n\n``GET /api/chats?q=`` only substring-matches chat titles and participant\ndisplay names, so a word the user remembers from inside a conversation\nfinds nothing there no matter how far they page. This exposes the corpus\nsearch that already backs the agent-facing ``conversation_search`` MCP tool\n(TOS-477) to the user's own UI.\n\nScope is ``agent = person = caller``, exactly as ``conversation_search``'s\nself-recall path does (TOS-844 P1): ``_scope_chat_ids`` then resolves to\nchats where the CALLER is an active participant. Nothing outside the\ncaller's own participated chats is reachable and no new privacy SQL is\nintroduced. ``include_excluded=True`` keeps ``extraction_excluded``\nmessages, which govern Mind-extraction subject scope rather than the user's\nown visibility - without it the user could not search their own captured\nClaude Code / Codex sessions.\n\n**Lexical only (TOS-3138).** The semantic leg is deliberately off for this\nsurface. Measured on prod over a 16,885-chat corpus, it returns a full page\nof unrelated segments for a query that matches nothing, at cosine scores\nABOVE those of genuine matches for real queries - so no threshold separates\nthem and the \"No message matches\" empty state was unreachable. The lexical\nlegs fired 4x for each real query and 0-1x for each nonsense one. A search\nbox wants that precision; agent recall keeps the full hybrid, where a loose\nhit is cheaper than a miss. Consequence: no query embedding is computed, so\nthis endpoint makes no AI call at all.","operationId":"search_chat_messages_api_chats_search_messages_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":200,"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/messages/{message_id}":{"get":{"tags":["chats"],"summary":"Get Message By Id","description":"Resolve a bare message id to the message and its chat (TOS-7450).\n\nEvery other message route is ``/{chat_id}/messages/{message_id}/...``, so a\nmessage id alone could not be turned into a chat. Access is the same as\nreading the chat: 404 unless the caller is an active participant, and a\nmessage the caller hid or a deleted message also 404s, so a foreign or\nhidden id is indistinguishable from an id that does not exist.","operationId":"get_message_by_id_api_chats_messages__message_id__get","parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageLookupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/search":{"get":{"tags":["chats"],"summary":"Search Chats Tiered","description":"Ranked, tiered search over the caller's conversations (TOS-3459).\n\n``GET /api/chats?q=`` remains the BROWSE surface: a boolean substring filter\nover a recency-ordered keyset page, still used for infinite scroll and the\n\"Show all\" fallback. This endpoint is the SEARCH surface, and differs in\nthree ways that the old one could not express:\n\n- **Ranked by match quality**, not recency. An exact title match outranks a\n  newer partial one; recency is only the tiebreak.\n- **People and agents are their own tier**, grouped one row per identity\n  with a conversation count, rather than scattered across title-less rows.\n- **Near-misses are reachable.** ``council`` finds ``AI4O General Counsel``\n  via trigram similarity, in a tier explicitly labelled as a suggestion and\n  returned only when the exact tiers are thin.\n\nArchived conversations are included and flagged ``archived`` rather than\nexcluded - a search is an explicit retrieval intent, so \"it exists but is\nfiled away\" beats \"no matches\". This does not change the archived/unarchived\ntabs, which still scope browsing.\n\nMakes no AI call: ``pg_trgm`` similarity and SQL ordering only.","operationId":"search_chats_tiered_api_chats_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tier":"extended"}},"/api/chats/{chat_id}":{"get":{"tags":["chats"],"summary":"Get Chat","description":"Get chat detail. Returns 404 if the caller is not a participant.\n\nDoes NOT include message content - that always comes from the paginated\n``GET /api/chats/{chat_id}/messages`` (``chat_messages_list``) instead.\n\nTOS-3478: this route always called ``get_chat_detail(...,\ninclude_messages=False)``, but ``ChatDetail.messages`` still serialized\nas an empty list either way - indistinguishable from \"this chat has no\nmessages\". A caller comparing this response against\n``chat_messages_list`` for the SAME chat (which has real messages) saw a\ndirect contradiction and concluded a write had been lost.\n``response_model_exclude`` drops the field from the wire response\nentirely instead of emitting a value that lies about chat state.","operationId":"get_chat_api_chats__chat_id__get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["chats"],"summary":"Delete Chat","description":"Soft-delete a chat (sets status='deleted'). Caller must be a participant.\n\nTOS-8016: anything else only when nobody else would lose it - every other\nactive participant is an agent the caller owns.\n\nTOS-3753: for a ROOM, only the owner may do this. Everything below - the\nretrieval purge, the cognitive-event tombstone, the reproject - is\ndestructive for EVERY participant, not just the caller, which is why the\ngate lives before it. A non-owner member leaves the room instead.","operationId":"delete_chat_api_chats__chat_id__delete","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/context-usage":{"get":{"tags":["chats"],"summary":"Get Context Usage","description":"The logged-in viewer's OWN context-window usage for this chat (TOS-761).\n\nPer-viewer: you never see another participant's context window. 404 if the\ncaller is not an active participant.","operationId":"get_context_usage_api_chats__chat_id__context_usage_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContextUsageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/context-usage/compact":{"post":{"tags":["chats"],"summary":"Compact Context Now","description":"\"Summarize now\": manually roll the summary that backs this viewer's gauge.\n\nTOS-1086 converged the meter onto the chat's audience-gated summary of\nrecord, normally owned by the responding agent. Manual compaction must target\nthat same owner so the button reduces the context the next prompt actually\nuses, instead of updating a stale per-viewer auxiliary summary. No-ops\n(returns current usage) when summaries are disabled or there is nothing new\nto fold. 404 if the caller is not an active participant.","operationId":"compact_context_now_api_chats__chat_id__context_usage_compact_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContextUsageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/title":{"patch":{"tags":["chats"],"summary":"Update Title","operationId":"update_title_api_chats__chat_id__title_patch","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTitleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/connection-selection":{"patch":{"tags":["chats"],"summary":"Select Task Connection","operationId":"select_task_connection_api_chats__chat_id__connection_selection_patch","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionTaskSelectionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/facilitation":{"patch":{"tags":["chats"],"summary":"Update Facilitation","description":"Update conversation-level facilitation mode.","operationId":"update_facilitation_api_chats__chat_id__facilitation_patch","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFacilitationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/runtime-policy":{"patch":{"tags":["chats"],"summary":"Update Runtime Policy","description":"Update conversation-level runtime fan-out policy.\n\nTOS-2393: this can no longer set the per-chat/per-payer spend figure -\nsee ``UpdateRuntimePolicyRequest``'s docstring. Use\n``PUT/DELETE /api/chats/{chat_id}/my-spend-limit`` for your own cap.\nIt CAN set ``max_root_container_spend_usd`` (a different, tree-wide\nfigure - finding #3), but only overwrites it when the request body\nactually included that key, never by the field's Python default.","operationId":"update_runtime_policy_api_chats__chat_id__runtime_policy_patch","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRuntimePolicyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/my-spend-limit":{"put":{"tags":["chats"],"summary":"Set My Chat Spend Limit","description":"Set the CALLER's own per-chat spend cap - or, with a `null` body\nvalue, set it to EXPLICIT \"no cap\" (TOS-2393; review finding #2).\n\nA `null` value does NOT clear the caller's entry - it is a durable\nstatement that this payer has opted out of any cap, and it beats the\nlegacy room-wide scalar fallback (unlike an absent entry). To remove the\nentry entirely and revert to \"no preference stated\" (falls back to\nwhatever the room's legacy scalar says), use\n`DELETE .../my-spend-limit` instead - the two routes are deliberately\nNOT equivalent any more. See `ChatService.set_my_chat_spend_limit`'s\ndocstring for the full rationale.\n\nThe payer is always `identity.id` - the request's resolved principal,\nwhich `get_identity` (not `get_real_identity`) allows to be an\nAUTHORIZED IMPERSONATION target via `X-Impersonate-Identity-Id`, not only\nthe human at the keyboard. There is no field on this route through which\na caller could freely NAME a payer (see\n`ChatService.set_my_chat_spend_limit`'s docstring for why that is an\nauthorization guarantee, not an impossibility one). Requires ACTIVE\nparticipation (``ChatService.get_chat``'s gate), not the relaxed\nany-status membership check ``get_chat_detail`` uses, so a removed\nparticipant cannot set a budget in a room they no longer belong to.","operationId":"set_my_chat_spend_limit_api_chats__chat_id__my_spend_limit_put","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMySpendLimitRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"my-spend-limit_set"},"delete":{"tags":["chats"],"summary":"Clear My Chat Spend Limit","description":"Remove the CALLER's own per-chat spend cap entry entirely (TOS-2393).\n\nStores something different from `PUT .../my-spend-limit` with\n`{\"max_chat_spend_usd\": null}`: that PUT writes an explicit, durable \"no\ncap\" decision, while this DELETE removes the entry so the caller reads as\n\"no preference stated\".\n\nTOS-2394: the two now RESOLVE identically (both uncapped) because the\nlegacy room-wide scalar that \"no preference\" used to inherit is gone.\nThey are still stored differently on purpose - see\n`ChatService.set_my_chat_spend_limit`'s docstring for why, and\n`clear_my_chat_spend_limit`'s for this route specifically. Clients that\nwant to record \"I looked at this and chose no cap\" should keep using the\n`null` PUT rather than switching to DELETE now that the observable\nbehaviour matches.","operationId":"clear_my_chat_spend_limit_api_chats__chat_id__my_spend_limit_delete","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"my-spend-limit_delete"}},"/api/chats/{chat_id}/restore":{"post":{"tags":["chats"],"summary":"Restore Chat","description":"Restore a soft-deleted chat and re-index conversation memory.","operationId":"restore_chat_api_chats__chat_id__restore_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/extraction":{"post":{"tags":["chats"],"summary":"Set Chat Extraction Excluded","description":"Suppress (or re-admit) a chat from cognitive extraction. TOS-44.\n\nGoverns future extraction. PR-D1: real flip transitions also fire the\nreconciliation worker so already-extracted beliefs retract (false → true)\nor come back (true → false). A no-op POST (same value re-submitted) does\nNOT fire reconciliation - that wiring keys on ``ExtractionExcludedResult``\nbeing a real transition.","operationId":"set_chat_extraction_excluded_api_chats__chat_id__extraction_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractionExcludedRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/mind-context":{"post":{"tags":["chats"],"summary":"Set Chat Mind Context Disabled","description":"Suppress (or re-admit) Mind-derived context from this chat's prompts.\n\nTOS-1988 Phase 1: the with-vs-without-Mind benchmark's arm-B switch, and\nthe write-path sibling of ``POST /{chat_id}/extraction`` above. Unlike\nthat endpoint, this is read-side only - it never orphans or re-admits any\ndurable Mind projection, so there is no reconciliation worker to fire on a\nreal transition.","operationId":"set_chat_mind_context_disabled_api_chats__chat_id__mind_context_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MindContextDisabledRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/company-knowledge-audience":{"post":{"tags":["chats"],"summary":"Set Chat Company Knowledge Audience","description":"Choose who may read what this conversation teaches the company. TOS-4811.\n\n``members`` discloses to the organization at large, so any member reaches\nit. ``speaker`` does not, so a colleague at ``member`` role cannot read the\ncontribution; the speaker can, and so can the organization's owners and\nadmins, who read the whole company Mind because they are its authors.\n\nA real change re-derives the company's coverage of this chat, because the\naudience is written onto the evaluations at extraction time and past writes\ncarry the audience that was in force when they landed.","operationId":"set_chat_company_knowledge_audience_api_chats__chat_id__company_knowledge_audience_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyKnowledgeAudienceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"company-knowledge-audience_set"}},"/api/chats/{chat_id}/learning":{"get":{"tags":["chats"],"summary":"Get Chat Learning","description":"What this conversation is teaching, and to whom. TOS-4811.\n\nOne entry per destination: the caller's own Mind, and every organization\nthis chat teaches. ``status`` is the destination's latest episode status, so\na company entry that reads ``failed`` is telling the truth about a company\nthat has not learned yet rather than showing a tidy count.\n\nThree things are scoped to the CALLER rather than to the chat, because\nparticipation in a conversation is not permission to read a company's Mind\nor to see how a colleague's contribution was admitted.\n\n* People only. An agent in the room does not get an account of what the\n  people in it are teaching their employer.\n* ``admission_rule`` and ``audience`` describe the CALLER's own admission,\n  and are null when the caller is not one of the episode's admitted\n  speakers. Reporting the first speaker's admission to everybody was a small\n  disclosure of somebody else's role and choice.\n* ``evaluation_count`` counts only what the caller may actually read, under\n  the same org disclosure filter the Mind reads use: unfiltered for an\n  owner or admin, the org sentinel plus the caller's own id for a member,\n  and nothing at all for a participant who is not a member.","operationId":"get_chat_learning_api_chats__chat_id__learning_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatLearningResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"learning_get"}},"/api/chats/{chat_id}/archive":{"patch":{"tags":["chats"],"summary":"Archive Chat","description":"Archive a chat for the calling participant only.","operationId":"archive_chat_api_chats__chat_id__archive_patch","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/unarchive":{"patch":{"tags":["chats"],"summary":"Unarchive Chat","description":"Restore an archived chat to active for the calling participant.","operationId":"unarchive_chat_api_chats__chat_id__unarchive_patch","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/capture-disposition/reset":{"post":{"tags":["chats"],"summary":"Reset Capture Disposition","description":"TOS-3758: hand this capture back to its connection's archive/read policy.\n\nThe undo half of \"Using connection default\". Manually archiving or\nrestoring ONE capture stamps\n``chat_participants.capture_archive_manually_changed_at``, after which every\nCAS-guarded automated pass in ``services/capture_disposition.py`` refuses to\ntouch the row. That contract is correct - automation must not undo a\nperson's decision - but before this endpoint it was invisible AND permanent:\nthe user could change the connection setting, watch it not apply to this\nconversation, and have no way back.\n\nScoped to the calling participant, like archive and unarchive: capture\nmailbox state is per-participant, never chat-wide.","operationId":"reset_capture_disposition_api_chats__chat_id__capture_disposition_reset_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureDispositionResetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/conclude":{"post":{"tags":["chats"],"summary":"Conclude Chat","description":"Manually conclude a chat (TOS-1850 D3). Caller must be an active\nparticipant; reversible via ``POST /{chat_id}/reopen``.","operationId":"conclude_chat_api_chats__chat_id__conclude_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/reopen":{"post":{"tags":["chats"],"summary":"Reopen Chat","description":"Reopen a concluded chat back to live (TOS-1850 D3). Caller must be an\nactive participant.","operationId":"reopen_chat_api_chats__chat_id__reopen_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/pin":{"patch":{"tags":["chats"],"summary":"Pin Chat","description":"Pin a chat. Caller must be an active participant.","operationId":"pin_chat_api_chats__chat_id__pin_patch","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/unpin":{"patch":{"tags":["chats"],"summary":"Unpin Chat","description":"Unpin a chat. Caller must be an active participant.","operationId":"unpin_chat_api_chats__chat_id__unpin_patch","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/mute":{"put":{"tags":["chats"],"summary":"Set Chat Mute","description":"Set (or clear with ``override=null``) the caller's per-conversation mute.\n\nReturns the resulting effective muted state. 404 if the caller is not an\nactive participant.","operationId":"set_chat_mute_api_chats__chat_id__mute_put","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MuteOverrideRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"boolean"},"title":"Response Set Chat Mute Api Chats  Chat Id  Mute Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/pins/order":{"put":{"tags":["chats"],"summary":"Reorder Pins","description":"Persist the caller's chosen order for their pinned chats.\n\nWrites ``pin_rank = index`` for each supplied chat id the caller pins;\nids the caller does not pin are ignored. Authorization is implicit —\nonly the caller's own ``chat_participants`` rows are touched (the service\nfilters by ``identity.id``).","operationId":"reorder_pins_api_chats_pins_order_put","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReorderPinsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/participants":{"get":{"tags":["chats"],"summary":"List Chat Participants","description":"List all participants of a chat (active + historical).\n\nCaller must have at least one participant row for this chat (any status).\nReturns rows joined with identity info so the frontend can render the\nheader avatar stack and membership history directly. Keyset-paginated,\noldest first (TOS-3280); pass the previous response's ``next_cursor`` to\nload more. 400 on a malformed cursor.","operationId":"list_chat_participants_api_chats__chat_id__participants_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":200,"minimum":1},{"type":"null"}],"default":200,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParticipantListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"participants_get"},"post":{"tags":["chats"],"summary":"Add Chat Participant","description":"Add a participant to a chat.\n\nCaller must be an active participant. Caller must also be connected\nto the target identity. Returns 409 if target already has an active row,\nor ``participants_fixed`` for a kind that keeps its people (direct and\ngroup chats, TOS-8003).","operationId":"add_chat_participant_api_chats__chat_id__participants_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddParticipantBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParticipantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"participants_create"}},"/api/chats/{chat_id}/convert-to-room":{"post":{"tags":["chats"],"summary":"Convert Chat To Room","description":"Turn a direct or group chat into a named room, keeping its people, messages and tenant.\n\nTOS-8003: a group chat keeps the people it started with, so this is how it\ngrows. The caller must be an active participant (404 otherwise) and becomes\nthe room owner; everyone else stays a participant. Returns 409 for a\nSubconscious chat, a topic, or a room. Repeating it with the same title is\na no-op.","operationId":"convert_chat_to_room_api_chats__chat_id__convert_to_room_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConvertToRoomRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/participants/batch":{"post":{"tags":["chats"],"summary":"Add Chat Participants Batch","description":"Add several participants in one action.\n\nTOS-2938: a multi-select \"add people\" action used to call the singular\nadd endpoint once per person, which produced one ``participant_added``\npill per person. This endpoint emits exactly one combined system pill for\nthe whole batch.\n\nSame caller-active + per-target connection gate as the singular endpoint,\nchecked for every target before any participant is added.\n\nTOS-XXXX: a target that is already an active participant is now SKIPPED\nrather than failing the whole batch. The \"Add people\" modal filters only\non the client-side participant list it last loaded, so two callers opening\nit concurrently can both select someone the other just added; the previous\nbehavior raised a bare, nameless 409 mid-loop and discarded the earlier\nadds in the same batch via session rollback. Already-active targets are\nreturned in ``skipped_already_active`` so the UI can say \"already in the\nroom\" per person.","operationId":"add_chat_participants_batch_api_chats__chat_id__participants_batch_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddParticipantsBatchBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddParticipantsBatchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/participants/{target_identity_id}":{"delete":{"tags":["chats"],"summary":"Remove Chat Participant","description":"Remove a participant from a chat.\n\nAllowed when:\n  - Caller is removing themselves (self-leave, any kind)\n  - Caller is an active participant AND target is an agent (tool removal)\n  - Caller manages a room and the target's role is within their authority\n\nDirect chats never permit removing the other person; they remain a stable\n1:1 until explicitly converted to a room.\n\nTOS-3754: nor do they permit removing YOURSELF. For a 1:1 the thread is the\nrelationship, and self-leaving one bricked it - see ``leave_permitted``.\nArchive, the hide-earlier cutoff, block, and delete cover what people\nactually wanted from it. Rooms and topics are unaffected.","operationId":"remove_chat_participant_api_chats__chat_id__participants__target_identity_id__delete","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"target_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Target Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/participants/{identity_id}/mode":{"patch":{"tags":["chats"],"summary":"Set Participant Mode","description":"Update mode_override for a chat participant (TOS-246 Phase D).\n\nAuthorization:\n  - Caller may update the mode of the identity they are currently acting as\n    — i.e., the identity resolved by ``get_identity`` (self, or the\n    ``X-Impersonate-Identity-Id`` target). Plain ownership via\n    ``identity_controllers`` does NOT grant this right; the owner must\n    be impersonating the agent. (TOS-305)\n\nRaises:\n  - 404 if the chat does not exist or the target is not an active participant.\n  - 403 if the caller is not acting as the target identity.\n  - 422 if mode_override is an invalid enum value (FastAPI/Pydantic auto-rejects).","operationId":"set_participant_mode_api_chats__chat_id__participants__identity_id__mode_patch","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParticipantModeUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParticipantModeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/messages":{"get":{"tags":["chats"],"summary":"Get Messages","description":"Keyset-paginated chat messages, newest window first (TOS-464).\n\nWithout ``before`` returns the most recent ``limit`` messages; pass the\nprevious response's ``next_cursor`` as ``before`` to load older history.\nReturns 404 if the caller is not a participant, 400 on a malformed cursor.","operationId":"get_messages_api_chats__chat_id__messages_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"before","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Before"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"client_capabilities","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Client Capabilities"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"messages_list"},"post":{"tags":["chats"],"summary":"Send Message","description":"Send a message and get a non-streaming AI response.","operationId":"send_message_api_chats__chat_id__messages_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"X-Request-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Request-Id"}},{"name":"X-Thinqos-Client","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Thinqos-Client"}},{"name":"X-Timezone","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Timezone"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendMessageRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendMessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"messages_send"}},"/api/chats/{chat_id}/export":{"get":{"tags":["chats"],"summary":"Get Conversation Export","description":"Return the caller's full visible conversation timeline for export.\n\nThe normal message endpoint is paginated for UI performance. Export reads\nthe full authorized timeline so generated files are not limited to the\ncurrent viewport. Message serialization is shared with ``GET /messages`` so\nmembership gates, per-owner summary visibility, attachment metadata, and\nartifact parsing stay aligned.","operationId":"get_conversation_export_api_chats__chat_id__export_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationExportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{source_chat_id}/subconscious-asides":{"get":{"tags":["chats"],"summary":"Get Subconscious Asides","description":"TOS-581: the caller's own private Subconscious asides about ``source_chat_id``.\n\nLeak-proof by construction: this reads ONLY the caller's single-participant\nself-chat and filters to ask-rows whose ``subconscious_source.chat_id`` equals\n``source_chat_id``. It can never return another identity's asides, so it needs\nno participation check on the shared chat — a non-participant simply has no\nmatching rows of their own.","operationId":"get_subconscious_asides_api_chats__source_chat_id__subconscious_asides_get","parameters":[{"name":"source_chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Source Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubconsciousAsidesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/messages/{message_id}/provenance":{"get":{"tags":["chats"],"summary":"Get Message Provenance Lookup","description":"Return scoped provenance edges for a visible chat message.","operationId":"get_message_provenance_lookup_api_chats__chat_id__messages__message_id__provenance_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageProvenanceLookupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/messages/{message_id}/cost":{"get":{"tags":["chats"],"summary":"Get Message Cost","description":"Return per-model-run cost breakdown for an assistant message.","operationId":"get_message_cost_api_chats__chat_id__messages__message_id__cost_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageCostBreakdown"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/messages/{message_id}/explainability":{"get":{"tags":["chats"],"summary":"Get Message Explainability","description":"Return the unified 'Explain this response' envelope for an assistant message.","operationId":"get_message_explainability_api_chats__chat_id__messages__message_id__explainability_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplainabilityEnvelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/messages/{message_id}/response-timing":{"post":{"tags":["chats"],"summary":"Record Response Timing","description":"Record a viewer's browser timing and displayed estimate observations for a\nretained assistant response. This requires existing chat access, is private\nto the effective viewer and cannot establish authoritative server timing or\ntrain estimate cohorts. Reusing an observation ID returns its first receipt.","operationId":"record_response_timing_api_chats__chat_id__messages__message_id__response_timing_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseTimingObservation"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserTiming"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/messages/{message_id}/request-analysis":{"get":{"tags":["chats"],"summary":"Get Message Request Analysis","description":"Read the complete authorized analysis of one assistant response, including\nretained trace trees, billing records, visible conversation and evidence\nlimits. Existing chat and source permissions apply. Credentials, raw\nprovider prompts and hidden reasoning are excluded. This never calls AI.","operationId":"get_message_request_analysis_api_chats__chat_id__messages__message_id__request_analysis_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Message Request Analysis Api Chats  Chat Id  Messages  Message Id  Request Analysis Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/tasks":{"post":{"tags":["chats"],"summary":"Start Chat Task","description":"Start an immediate durable agent task for this chat.\n\nThis is intentionally separate from schedules: it enqueues an ad-hoc\n``agent_task_runs`` row and hands execution to FastAPI background work now.","operationId":"start_chat_task_api_chats__chat_id__tasks_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartChatTaskRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatTaskResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"tasks_create"},"get":{"tags":["chats"],"summary":"List Chat Tasks","operationId":"list_chat_tasks_api_chats__chat_id__tasks_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatTaskListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"tasks_get"}},"/api/chats/{chat_id}/work":{"get":{"tags":["chats"],"summary":"List Chat Work","description":"Read the compact work status of every active participant's tasks in this chat, read-only.\n\nCompact status only (no instruction, acceptance, evidence or artifact content).\nCancel and follow-up stay with the run owner on the task routes.","operationId":"list_chat_work_api_chats__chat_id__work_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Chat Work Api Chats  Chat Id  Work Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/tasks/{run_id}/events":{"get":{"tags":["chats"],"summary":"List Chat Task Events","operationId":"list_chat_task_events_api_chats__chat_id__tasks__run_id__events_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Run Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":100,"title":"Limit"}},{"name":"before_seq","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Before Seq"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatTaskEventListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/tasks/{run_id}/artifacts":{"get":{"tags":["chats"],"summary":"List Chat Task Artifacts","operationId":"list_chat_task_artifacts_api_chats__chat_id__tasks__run_id__artifacts_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Run Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":100,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatTaskArtifactListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/tasks/{run_id}/approvals":{"get":{"tags":["chats"],"summary":"List Chat Task Approvals","operationId":"list_chat_task_approvals_api_chats__chat_id__tasks__run_id__approvals_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Run Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":100,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatTaskApprovalListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/tasks/{run_id}/approvals/{approval_id}/resolve":{"post":{"tags":["chats"],"summary":"Resolve Chat Task Approval","operationId":"resolve_chat_task_approval_api_chats__chat_id__tasks__run_id__approvals__approval_id__resolve_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Run Id"}},{"name":"approval_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Approval Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveChatTaskApprovalRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatTaskApprovalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/tasks/{run_id}/follow-up":{"post":{"tags":["chats"],"summary":"Send Chat Task Follow Up","operationId":"send_chat_task_follow_up_api_chats__chat_id__tasks__run_id__follow_up_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Run Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendChatTaskFollowUpRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatTaskResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/tasks/{run_id}":{"get":{"tags":["chats"],"summary":"Get Chat Task","operationId":"get_chat_task_api_chats__chat_id__tasks__run_id__get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Run Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatTaskResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/tasks/{run_id}/contract":{"get":{"tags":["chats"],"summary":"Get Chat Task Contract","operationId":"get_chat_task_contract_api_chats__chat_id__tasks__run_id__contract_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Run Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Chat Task Contract Api Chats  Chat Id  Tasks  Run Id  Contract Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/tasks/{run_id}/cancel":{"post":{"tags":["chats"],"summary":"Cancel Chat Task","operationId":"cancel_chat_task_api_chats__chat_id__tasks__run_id__cancel_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Run Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatTaskResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/messages/{failed_message_id}/retry":{"post":{"tags":["chats"],"summary":"Retry Failed Contribution","description":"Retry exactly one failed response, preserving the original conversation.","operationId":"retry_failed_contribution_api_chats__chat_id__messages__failed_message_id__retry_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"failed_message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Failed Message Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetryContributionRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetryContributionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/messages/{user_message_id}/contributions/{agent_identity_id}/retry":{"post":{"tags":["chats"],"summary":"Retry Failed Envelope Contribution","description":"Retry exactly one failed response, preserving the original conversation.","operationId":"retry_failed_envelope_contribution_api_chats__chat_id__messages__user_message_id__contributions__agent_identity_id__retry_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"user_message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Message Id"}},{"name":"agent_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetryEnvelopeContributionRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetryContributionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/messages/submit":{"post":{"tags":["chats"],"summary":"Submit Message","description":"Persist a user message and durable agent run without awaiting model output.","operationId":"submit_message_api_chats__chat_id__messages_submit_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"X-Request-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Request-Id"}},{"name":"X-Thinqos-Client","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Thinqos-Client"}},{"name":"X-Timezone","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Timezone"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendMessageRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableMessageSubmissionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/messages/stream":{"post":{"tags":["chats"],"summary":"Stream Message","description":"Send a message and stream the AI response via SSE.","operationId":"stream_message_api_chats__chat_id__messages_stream_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"X-Request-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Request-Id"}},{"name":"X-Thinqos-Client","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Thinqos-Client"}},{"name":"X-Timezone","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Timezone"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendMessageRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/auto-continue/stop":{"post":{"tags":["chats"],"summary":"Stop Auto Continue Chain","description":"Stop the chat's automatic follow-up chain (TOS-2134).\n\nCancels any pending follow-up outright, asks a running one to stop at its\nnext checkpoint, and records the chain as ended by the user. Idempotent:\nwith nothing to stop it returns ``{\"stopped\": false}``.","operationId":"stop_auto_continue_chain_api_chats__chat_id__auto_continue_stop_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Stop Auto Continue Chain Api Chats  Chat Id  Auto Continue Stop Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/auto-continue/choice":{"post":{"tags":["chats"],"summary":"Choose Auto Continue Chain","description":"Answer a paused automatic follow-up chain: Keep going or Stop here (TOS-442).\n\nA chain pauses at its follow-up limit with work left and nothing running.\n``keep_going`` resumes the same job with a fresh budget; ``stop`` records\nthat the person ended it. Idempotent: with no paused chain of the caller's\nto answer it returns ``{\"applied\": false}``.","operationId":"choose_auto_continue_chain_api_chats__chat_id__auto_continue_choice_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_choose_auto_continue_chain_api_chats__chat_id__auto_continue_choice_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Choose Auto Continue Chain Api Chats  Chat Id  Auto Continue Choice Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/turn-stream/cancel":{"post":{"tags":["chats"],"summary":"Cancel Turn Stream","description":"Cancel (or steer) the chat's currently-running turn (TOS-2269).\n\nA deliberate Stop or steer is distinguishable from an ambient disconnect\nonly because the frontend calls this endpoint before aborting the fetch.\nThe endpoint writes ``cancel_requested = true`` (plus ``redirect_text``\nwhen present) onto every live ``chat_stream_progress`` row for this chat\n(kept for ``_should_detach_stream_on_cancel``'s end-of-stream check, and\nas the ``{\"canceled\": bool}`` liveness signal below) AND, as of TOS-3574,\nonto ``chat_turn_state`` stamped with the chat's CURRENT turn generation.\nThe running turn's ``TurnCancelWatcher`` only honors the latter: it\npolls for a signal matching the exact generation it was started with, so\na signal that arrives after this turn has already ended (and a new one\nhas begun) can never be mistaken for a cancel aimed at the new turn -\nthe race TOS-3568 narrowed but could not fully close on\n``chat_stream_progress`` alone, because that row's identity depends on\nwhich agent ends up responding, not known until routing completes.\n\nReturns ``{\"canceled\": bool}`` - ``True`` if a live turn was found and\nflagged, ``False`` if nothing was running (idempotent: a double-click on\nStop, or a steer after the turn already finished, is a safe no-op).","operationId":"cancel_turn_stream_api_chats__chat_id__turn_stream_cancel_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelTurnStreamRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Cancel Turn Stream Api Chats  Chat Id  Turn Stream Cancel Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/turn-inbox":{"post":{"tags":["chats"],"summary":"Post Turn Inbox","description":"Send a message into the turn that is running in this chat (TOS-7144).\n\nThe web client calls this instead of steering when it sends while a turn\nis running. The message is classified against the running turn's request\nand, depending on what it is and who sent it, joins that turn as a live\nupdate, is recorded without interrupting it, or (for the turn's owner\nonly) hands back ``replace`` so the client steers as before. See\n``services/turn_pipeline/turn_inbox.py``.","operationId":"post_turn_inbox_api_chats__chat_id__turn_inbox_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"X-Request-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Request-Id"}},{"name":"X-Thinqos-Client","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Thinqos-Client"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TurnInboxRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TurnInboxResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/turn-stream":{"get":{"tags":["chats"],"summary":"Turn Reattach Stream","description":"Re-attach to a turn that is already running (TOS-2090).\n\n``POST /messages/stream`` hands the reply to exactly one caller: the SSE\nstream IS that request's response body. Anyone who does not hold it - a pane\nReact remounted when focus mode moved it, a reloaded page, a second tab, a\nsecond device - had no way to watch a turn in progress and saw the reply\nonly once it finished and the assistant message landed.\n\nThis endpoint closes that gap by reading ``chat_stream_progress``, which the\nrunning turn updates on a coalesced flush. It emits:\n\n* ``snapshot`` - the accumulated text so far, so a late joiner catches up in\n  one frame rather than starting from blank;\n* ``progress`` - whenever any agent's ``seq`` advances or the visible agent\n  row set changes. The payload carries the FULL current set rather than a\n  delta, so a dropped or duplicated frame cannot desynchronise the bubbles;\n* ``idle`` - the turn is over (or there was never one). The client closes and\n  reconciles from ``/messages``, where the outcome now lives.\n\nPolling Postgres rather than subscribing in-process is deliberate: awen-api\nruns several Cloud Run pods and the re-attaching client rarely lands on the\npod running the turn.","operationId":"turn_reattach_stream_api_chats__chat_id__turn_stream_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/interact":{"post":{"tags":["chats"],"summary":"Interact","description":"Respond to an interaction prompt (choice button click) and stream the agent reply.\n\nThe ``interaction_id`` must reference a prompt on a message in this chat.\n``option_value`` is the value of the chosen option.\n\nCurrently this behaves identically to ``stream_message`` using the option\nvalue as the user message content.  When skill execution is added, this\nendpoint will check the interaction's ``interaction_source`` and route to\nthe appropriate skill handler instead of re-entering the AI loop.","operationId":"interact_api_chats__chat_id__interact_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"X-Request-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Request-Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InteractRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/messages/{message_id}":{"delete":{"tags":["chats"],"summary":"Delete Message","description":"Soft-delete a message.","operationId":"delete_message_api_chats__chat_id__messages__message_id__delete","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"messages_delete"},"patch":{"tags":["chats"],"summary":"Edit Message","description":"Edit a message's content. Saves original content on first edit.","operationId":"edit_message_api_chats__chat_id__messages__message_id__patch","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditMessageRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"messages_update"}},"/api/chats/{chat_id}/messages/{message_id}/reactions":{"get":{"tags":["chats"],"summary":"List Reactions","description":"List reactions on a message. Caller must be an active participant.","operationId":"list_reactions_api_chats__chat_id__messages__message_id__reactions_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReactionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"messages_reactions_get"},"post":{"tags":["chats"],"summary":"Add Reaction","description":"Add an emoji reaction to a message (idempotent).","operationId":"add_reaction_api_chats__chat_id__messages__message_id__reactions_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddReactionRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"messages_reactions_create"}},"/api/chats/{chat_id}/messages/{message_id}/ui-state":{"post":{"tags":["chats"],"summary":"Set Message Ui State","description":"Tick or untick an interactive checklist item on a panel, for everyone.\n\nAny active participant may, the same people who may react to the message.\nThe state is stored on the panel message and every other viewer is told to\nreload, so a room sees one shared checklist.","operationId":"set_message_ui_state_api_chats__chat_id__messages__message_id__ui_state_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UiStateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UiStateEntry"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/messages/{message_id}/reactions/{emoji}":{"delete":{"tags":["chats"],"summary":"Remove Reaction","description":"Remove a reaction from a message. No-op if not present.","operationId":"remove_reaction_api_chats__chat_id__messages__message_id__reactions__emoji__delete","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}},{"name":"emoji","in":"path","required":true,"schema":{"type":"string","title":"Emoji"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/messages/{message_id}/feedback":{"post":{"tags":["chats"],"summary":"Set Feedback","description":"Upsert a thumbs-up/down vote. Sending the same vote again removes it.\n\nTOS-2165: a downvote carrying a ``reason`` also schedules an immediate\nrefactor evaluation for the answering agent instead of waiting on the batch\ngate. It runs as a background task so the model call never sits inside the\nuser's click, and on its own session so a failure cannot roll back the vote.","operationId":"set_feedback_api_chats__chat_id__messages__message_id__feedback_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/read":{"patch":{"tags":["chats"],"summary":"Mark Chat Read","description":"Mark a chat as fully read for the current user.\n\nUpserts read_states watermark to now().\n\nTOS-4678: no-ops entirely while impersonating, for the same reason\n``POST /me/presence`` does. A read receipt asserts that this person saw\nthis conversation, so an admin/owner browsing an identity's screen via\nact-as must not write one under that identity. Without the guard the web\nclient - whose shared fetch attaches ``X-Impersonate-Identity-Id`` to\nevery request - marks each chat read as it is opened, which (a) moves the\nreal person's ``read_states`` watermark and silently clears their unread\nbadges, unrecoverably, since the watermark is one timestamp with no\nhistory, and (b) writes an ``event_log`` ``chat.read`` row and broadcasts\na read receipt to the other participants under the target's name, with no\nfield recording that an impersonator did it. ``ChatsPage``'s \"mark all\nvisible read\" fans out over every unread chat at concurrency 8, so one\nclick wiped a whole inbox. Measured on production 2026-09-08: 5,152 of\n41,684 ``chat.read`` events (12.4%) across 36 identities were written\ninside an act-as window.\n\nThe access check still runs first, so an impersonated call to a chat the\ntarget cannot see still 404s - only the write is skipped.","operationId":"mark_chat_read_api_chats__chat_id__read_patch","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/unread":{"patch":{"tags":["chats"],"summary":"Mark Chat Unread","description":"Mark a chat explicitly unread for the current user.\n\nTOS-4678: no-ops while impersonating, same rule as ``mark_chat_read``\nabove - an impersonator may not rewrite the target's unread state in\neither direction.","operationId":"mark_chat_unread_api_chats__chat_id__unread_patch","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/typing":{"post":{"tags":["chats"],"summary":"Send Typing Indicator","description":"Publish a short-lived typing indicator to visible chat participants.","operationId":"send_typing_indicator_api_chats__chat_id__typing_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/help-questions":{"post":{"tags":["chats"],"summary":"Ask Help","description":"Ask thinqOS Help a question about this conversation without adding Help as a participant.\n\nOptionally quotes one selected message (checked against its hash) or replies to an earlier\nHelp answer; the answer is produced in the background and read with the status route.","operationId":"ask_help_api_chats__chat_id__help_questions_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HelpQuestionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HelpQuestionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/help-questions/{question_id}":{"get":{"tags":["chats"],"summary":"Help Question Status","description":"Read the status and, once finished, the answer of a Help question you asked in this chat.\n\nPoll this after asking Help; it projects the finished background run onto the question.","operationId":"help_question_status_api_chats__chat_id__help_questions__question_id__get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"question_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Question Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HelpQuestionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"help-questions_get"}},"/api/chats/{chat_id}/help-questions/{question_id}/continue":{"post":{"tags":["chats"],"summary":"Continue Help","description":"Continue a finished Help answer privately in your own consultation with thinqOS Help.\n\nReturns the id of that private conversation; it stays out of learning and ambient recall.","operationId":"continue_help_api_chats__chat_id__help_questions__question_id__continue_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"question_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Question Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Continue Help Api Chats  Chat Id  Help Questions  Question Id  Continue Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/draft":{"post":{"tags":["chats"],"summary":"Create Draft","description":"Start a draft and return its poll handle.\n\nReturns 202 with ``status='pending'``: the pipeline has NOT run yet. The\ncommitted suggestion row is the durability boundary - dispatch after it is\nbest-effort, so a client holding an id can always poll for an outcome even\nif the process that accepted this request disappears.\n\nReuse (TOS-6979): unless ``force_new`` is set, a draft for the same chat,\nresponder and asker created after the chat's latest message change is\nreturned instead of starting a new run. See\n``draft_jobs.find_reusable_draft`` for exactly which rows qualify.\n\nAuthorization:\n- Caller must be an active participant in the chat (404 otherwise, to\n  avoid leaking chat existence to non-participants).\n- When ``responder_identity_id`` differs from the caller, the responder\n  must also be an active participant (422 otherwise).\n- A ``kind='person'`` responder other than the caller is rejected (422):\n  a draft is grounded in the responder's own Mind (TOS-4716's async\n  pipeline runs it identity-keyed, and the result is readable via\n  `GET .../draft/{id}` by any chat participant), so allowing a caller to\n  draft as a co-participant person would ground the response in that\n  person's private Mind and hand the text to someone else. TOS-269\n  (2026-05-28) deliberately allowed a person responder for the\n  draft-my-own-reply case (`responder_id == identity.id`); this only\n  closes the gap for a THIRD PARTY person (TOS-5036).","operationId":"create_draft_api_chats__chat_id__draft_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DraftRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DraftResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/draft/{suggestion_id}":{"get":{"tags":["chats"],"summary":"Get Draft","description":"Read a draft's current state.\n\nCheap by design - one row read, no pipeline work - because the client polls\nthis for the whole life of the draft.","operationId":"get_draft_api_chats__chat_id__draft__suggestion_id__get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"suggestion_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Suggestion Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DraftResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/mcp-apps/resource":{"post":{"tags":["chats"],"summary":"Read Mcp App Resource","description":"Read a widget's HTML through the same path as calling its tool.","operationId":"read_mcp_app_resource_api_chats__chat_id__mcp_apps_resource_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpAppRef"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpAppWidget"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/mcp-apps/tools-call":{"post":{"tags":["chats"],"summary":"Call Mcp App Tool","description":"Run a tool a widget asked for (MCP Apps ``tools/call``); returns a CallToolResult.","operationId":"call_mcp_app_tool_api_chats__chat_id__mcp_apps_tools_call_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpAppToolCall"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Call Mcp App Tool Api Chats  Chat Id  Mcp Apps Tools Call Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/embeds/open":{"post":{"tags":["chats"],"summary":"Open Chat Embed","description":"Mint a player URL using this viewer's own connection, without saving it.","operationId":"open_chat_embed_api_chats__chat_id__embeds_open_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmbedRef"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmbedAuthorization"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/response-proposals":{"get":{"tags":["response-proposals"],"summary":"List Response Proposals","description":"List reply proposals awaiting the caller's review.\n\nKeyset-paginated, newest first (TOS-3280). Without ``cursor`` returns the\nmost recent page; pass the previous response's ``next_cursor`` to load\nolder ones. 400 on a malformed cursor.","operationId":"list_response_proposals_api_response_proposals_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"enum":["pending","approved","rejected","expired","canceled"],"type":"string","default":"pending","title":"Status"}},{"name":"chat_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Chat Id"}},{"name":"responder_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Responder Identity Id"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":200,"minimum":1},{"type":"null"}],"default":100,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseProposalListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/response-proposals/{proposal_id}/resolve":{"post":{"tags":["response-proposals"],"summary":"Resolve Response Proposal","operationId":"resolve_response_proposal_api_response_proposals__proposal_id__resolve_post","parameters":[{"name":"proposal_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Proposal Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveResponseProposalRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseProposalView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/autopilot-eligibility":{"get":{"tags":["chats"],"summary":"Get Autopilot Eligibility","description":"Return Autonomous eligibility for the chat (computed against history).","operationId":"get_autopilot_eligibility_api_chats__chat_id__autopilot_eligibility_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutopilotEligibilityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chats/{chat_id}/autopilot-resume":{"post":{"tags":["chats"],"summary":"Resume Autopilot","description":"Reset the caller's Autonomous streak in this chat and re-arm the reply.\n\nSetting ``autopilot_resumed_at`` is what makes one click reset BOTH bounds:\neligibility ignores every message at or before that instant, so the turn\ncount restarts at zero and the time budget restarts from the next reply.\n\nClearing the guard is not enough on its own. Nothing else would fire until\na brand-new inbound message arrived, so the user would click \"keep going\"\nand watch the conversation stay exactly as stopped as it was - the same\ndead end, one click later. The resume therefore re-enqueues the auto-reply\nfor the conversation's current tail.","operationId":"resume_autopilot_api_chats__chat_id__autopilot_resume_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutopilotResumeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutopilotResumeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identities/search":{"get":{"tags":["identities"],"summary":"Search Identities","description":"Search for thinqOS identities (people or agents) by display name or email to discover\nconnectable users or agents across thinqOS. Pass kind='agent' or kind='person'.","operationId":"search_identities_api_identities_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":100,"title":"Q"}},{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"enum":["person","agent"],"type":"string"},{"type":"null"}],"title":"Kind"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/IdentitySearchResult"},"title":"Response Search Identities Api Identities Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/directory/identities":{"get":{"tags":["directory"],"summary":"Get Directory Identities","description":"The AI4O tenant's assignable identity directory.\n\nReturns only active, non-deleted ``person``/``agent`` identities that are\nactive members of ``tenant``. The caller must itself be an active member\nof that tenant (403 otherwise; a nonexistent tenant is also 403, so this\nnever confirms or denies a slug's existence to a caller without access).","operationId":"get_directory_identities_api_directory_identities_get","parameters":[{"name":"tenant","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":63,"title":"Tenant"}},{"name":"if-none-match","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"If-None-Match"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/models/registry/bundle-state":{"get":{"tags":["admin-models"],"summary":"Registry Bundle State","operationId":"registry_bundle_state_api_admin_models_registry_bundle_state_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistryBundleStateResponse"}}}}}}},"/api/admin/models/registry":{"get":{"tags":["admin-models"],"summary":"List Models","operationId":"list_models_api_admin_models_registry_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ModelResponse"},"title":"Response List Models Api Admin Models Registry Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/models/registry/{model_id}/pricing":{"get":{"tags":["admin-models"],"summary":"Get Pricing History","operationId":"get_pricing_history_api_admin_models_registry__model_id__pricing_get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Model Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PricingHistoryResponse"},"title":"Response Get Pricing History Api Admin Models Registry  Model Id  Pricing Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/models/registry/{model_id}/contract":{"get":{"tags":["admin-models"],"summary":"Get Model Contract","description":"Get the active contract for a model.","operationId":"get_model_contract_api_admin_models_registry__model_id__contract_get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Model Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Model Contract Api Admin Models Registry  Model Id  Contract Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-models"],"summary":"Set Model Contract","description":"Create or replace the active contract for a model.","operationId":"set_model_contract_api_admin_models_registry__model_id__contract_put","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Model Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Set Model Contract Api Admin Models Registry  Model Id  Contract Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/models/registry/{model_id}/usable":{"get":{"tags":["admin-models"],"summary":"Check Model Usable","description":"Check if a model is usable (active + has contract).","operationId":"check_model_usable_api_admin_models_registry__model_id__usable_get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Model Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"boolean"},"title":"Response Check Model Usable Api Admin Models Registry  Model Id  Usable Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/models/bundles":{"get":{"tags":["admin-models"],"summary":"List Model Bundles","description":"List governed complete bundles. This is admin-only, never identity setup.","operationId":"list_model_bundles_api_admin_models_bundles_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Model Bundles Api Admin Models Bundles Get"}}}}}},"post":{"tags":["admin-models"],"summary":"Create Model Bundle","operationId":"create_model_bundle_api_admin_models_bundles_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BundleCreateRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Model Bundle Api Admin Models Bundles Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/models/bundles/operation-registry":{"get":{"tags":["admin-models"],"summary":"Bundle Operation Registry","description":"Expose only customer-configurable operations; embeddings stay internal.","operationId":"bundle_operation_registry_api_admin_models_bundles_operation_registry_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Bundle Operation Registry Api Admin Models Bundles Operation Registry Get"}}}}}}},"/api/admin/models/bundles/{template_id}":{"get":{"tags":["admin-models"],"summary":"Get Model Bundle","operationId":"get_model_bundle_api_admin_models_bundles__template_id__get","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Model Bundle Api Admin Models Bundles  Template Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["admin-models"],"summary":"Update Model Bundle","operationId":"update_model_bundle_api_admin_models_bundles__template_id__patch","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BundleUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Model Bundle Api Admin Models Bundles  Template Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/models/bundles/{template_id}/versions":{"post":{"tags":["admin-models"],"summary":"Create Model Bundle Version","operationId":"create_model_bundle_version_api_admin_models_bundles__template_id__versions_post","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BundleVersionCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Model Bundle Version Api Admin Models Bundles  Template Id  Versions Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/models/bundles/{template_id}/rollback":{"post":{"tags":["admin-models"],"summary":"Rollback Model Bundle","operationId":"rollback_model_bundle_api_admin_models_bundles__template_id__rollback_post","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BundleRollbackRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rollback Model Bundle Api Admin Models Bundles  Template Id  Rollback Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/models/bundles/{template_id}/diff":{"get":{"tags":["admin-models"],"summary":"Diff Model Bundle Versions","operationId":"diff_model_bundle_versions_api_admin_models_bundles__template_id__diff_get","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"from_version_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"From Version Id"}},{"name":"to_version_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"To Version Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Diff Model Bundle Versions Api Admin Models Bundles  Template Id  Diff Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/models/sync":{"post":{"tags":["admin-models"],"summary":"Sync Models","description":"Compatibility wrapper for the tracked refresh-model-bundle scheduler job.\n\nTOS-2017: repoints the old LiteLLM-sync-triggering route at the Commons\nbundle cloud refresh (TOS-2019). The route path is kept for existing\ncallers; the job it triggers is the new one.","operationId":"sync_models_api_admin_models_sync_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Sync Models Api Admin Models Sync Post"}}}}}}},"/api/admin/models/registry/{model_id}/status":{"patch":{"tags":["admin-models"],"summary":"Update Model Status","description":"Enable or disable a model in the registry.","operationId":"update_model_status_api_admin_models_registry__model_id__status_patch","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Model Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateModelStatusRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/models/usage":{"get":{"tags":["admin-models"],"summary":"Get Usage","operationId":"get_usage_api_admin_models_usage_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get Usage Api Admin Models Usage Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/wallet-sharing/options":{"get":{"tags":["billing"],"summary":"Wallet Sharing Options","operationId":"wallet_sharing_options_api_billing_wallet_sharing_options_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Wallet Sharing Options Api Billing Wallet Sharing Options Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/wallet-sharing":{"get":{"tags":["billing"],"summary":"Wallet Sharing Consumers","operationId":"wallet_sharing_consumers_api_billing_wallet_sharing_get","parameters":[{"name":"wallet_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Wallet Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Wallet Sharing Consumers Api Billing Wallet Sharing Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/wallet-sharing/{consumer_id}":{"get":{"tags":["billing"],"summary":"Wallet Sharing Selection","operationId":"wallet_sharing_selection_api_billing_wallet_sharing__consumer_id__get","parameters":[{"name":"consumer_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Consumer Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Wallet Sharing Selection Api Billing Wallet Sharing  Consumer Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["billing"],"summary":"Update Wallet Sharing Selection","operationId":"update_wallet_sharing_selection_api_billing_wallet_sharing__consumer_id__put","parameters":[{"name":"consumer_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Consumer Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletSharingSelectionBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Wallet Sharing Selection Api Billing Wallet Sharing  Consumer Id  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["billing"],"summary":"Revoke Wallet Sharing Selection","operationId":"revoke_wallet_sharing_selection_api_billing_wallet_sharing__consumer_id__delete","parameters":[{"name":"consumer_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Consumer Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletSharingStopBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Revoke Wallet Sharing Selection Api Billing Wallet Sharing  Consumer Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/usage/summary":{"get":{"tags":["billing"],"summary":"Get Summary","operationId":"get_summary_api_billing_usage_summary_get","parameters":[{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Provider"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"capability","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Capability"}},{"name":"operation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operation"}},{"name":"funding_source","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Funding Source"}},{"name":"cost_status","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Cost Status"}},{"name":"provider_key_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Provider Key Id"}},{"name":"request_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"}},{"name":"chat_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Chat Id"}},{"name":"message_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Message Id"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}},{"name":"target_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Summary Api Billing Usage Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/balance":{"get":{"tags":["billing"],"summary":"Get Balance","description":"Funding/balance snapshot for the calling identity - or, for an owner\npassing ``target_identity_id``, for an identity they control (grant status,\nwhether they have a BYOK key, and whether enforcement is currently live).","operationId":"get_balance_api_billing_balance_get","parameters":[{"name":"target_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Balance Api Billing Balance Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/agents/spend":{"get":{"tags":["billing"],"summary":"Get Agent Spend","description":"Per-agent AI spend for agents the caller owns, over a trailing window\n(TOS-1069 Phase 1).","operationId":"get_agent_spend_api_billing_agents_spend_get","parameters":[{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":7,"title":"Window Days"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Agent Spend Api Billing Agents Spend Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/agents/balance":{"get":{"tags":["billing"],"summary":"Get Agent Balances","description":"The balance that actually pays for each owned agent + burn/runway.\n\nTOS-7302: ``balance_usd`` is the balance of whoever is charged for the\nagent's turns (its primary owner under the default ``owner_pays``), not the\nagent's own wallet, so the card's funding state matches the charge.\n``caller_pays`` agents are omitted: their callers pay. ``paid_by_you`` says\nwhether that payer is the viewer; when it is not, the row carries only the\nfunding state, never another person's amounts (see\n:func:`agent_balance_payload`).","operationId":"get_agent_balances_api_billing_agents_balance_get","parameters":[{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":7,"title":"Window Days"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Agent Balances Api Billing Agents Balance Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/ledger":{"get":{"tags":["billing"],"summary":"Get Ledger","description":"Merged money ledger (credits, adjustments, debits, optional own-key\nactivity) for the calling identity - or, for an owner passing\n``target_identity_id``, for an identity they control.\nSee services/billing/ledger.py.","operationId":"get_ledger_api_billing_ledger_get","parameters":[{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"entry_type","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Entry Type"}},{"name":"credit_source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Credit Source"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Provider"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"capability","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Capability"}},{"name":"actor_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Actor Identity Id"}},{"name":"spender_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Spender Identity Id"}},{"name":"agent_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Identity Id"}},{"name":"provider_key_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Provider Key Id"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}},{"name":"include_byok","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Byok"}},{"name":"target_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Ledger Api Billing Ledger Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/credits/topup":{"post":{"tags":["billing"],"summary":"Post Topup","description":"Mint a perpetual ``source='topup'`` credit bucket for the CALLER (TOS-604).\n\nFree-credit accounts only: no payment is collected. The account funding\nmode is checked by ``perform_topup``; Stripe-backed accounts use checkout.\n\nSelf-funding only. ``target_identity_id`` (TOS-2511) let an owner MINT fresh\ncredit straight into another identity's bucket, which is how \"funding an\nidentity\" grew total credit supply instead of moving it - so it is gone\n(TOS-2640 Phase 1). Funding another identity is now\n``POST /api/billing/credits/transfer``, which moves credit out of a wallet\nyou control. Minting stays where minting belongs: the trial grant, the admin\ngrant, and this rail (eventually Stripe), each of which represents value\ngenuinely entering the system.","operationId":"post_topup_api_billing_credits_topup_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Post Topup Api Billing Credits Topup Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/billing/credits/checkout-session":{"post":{"tags":["billing"],"summary":"Post Checkout Session","description":"Open a Stripe Checkout Session for a real-money top-up (TOS-3810 D2).\n\nOnly for identities the admin has switched to ``funding_mode='test'`` or\n``funding_mode='real_money'``. Bypass identities stay on the free\n``POST /api/billing/credits/topup`` rail.\nNo credit is granted here; the wallet is credited by the webhook once\nStripe confirms the payment actually happened.","operationId":"post_checkout_session_api_billing_credits_checkout_session_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutSessionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Post Checkout Session Api Billing Credits Checkout Session Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/billing/credits/embedded-checkout-session":{"post":{"tags":["billing"],"summary":"Post Embedded Checkout Session","description":"Open an embedded Stripe Checkout Session for a real-money top-up (TOS-4730).\n\nSame gating as ``post_checkout_session``: only ``funding_mode`` 'test' or\n'real_money'. No credit is granted here; the wallet is credited by the\nwebhook once Stripe confirms the payment actually happened, exactly as\nwith the hosted flow.","operationId":"post_embedded_checkout_session_api_billing_credits_embedded_checkout_session_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutSessionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Post Embedded Checkout Session Api Billing Credits Embedded Checkout Session Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/webhooks/stripe/test":{"post":{"tags":["billing"],"summary":"Stripe Test Webhook","description":"Receive Stripe sandbox events using the test webhook secret.","operationId":"stripe_test_webhook_api_webhooks_stripe_test_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stripe Test Webhook Api Webhooks Stripe Test Post"}}}}},"x-mcp-exclude":true}},"/api/webhooks/stripe/live":{"post":{"tags":["billing"],"summary":"Stripe Live Webhook","description":"Receive Stripe production events using the live webhook secret.","operationId":"stripe_live_webhook_api_webhooks_stripe_live_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stripe Live Webhook Api Webhooks Stripe Live Post"}}}}},"x-mcp-exclude":true}},"/api/webhooks/stripe":{"post":{"tags":["billing"],"summary":"Stripe Test Webhook Compatibility Alias","description":"Temporary compatibility alias for the existing Stripe test endpoint.","operationId":"stripe_test_webhook_compatibility_alias_api_webhooks_stripe_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stripe Test Webhook Compatibility Alias Api Webhooks Stripe Post"}}}}},"x-mcp-exclude":true}},"/api/admin/billing/grants/{grant_id}/refund":{"post":{"tags":["billing"],"summary":"Admin Refund Grant","description":"Refund a real-money bucket's unspent remainder through Stripe.\n\nCapped at the bucket's own remainder, never at the wallet's total balance\n- a bucket that has been partially spent refunds only what is left.","operationId":"admin_refund_grant_api_admin_billing_grants__grant_id__refund_post","parameters":[{"name":"grant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Grant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Refund Grant Api Admin Billing Grants  Grant Id  Refund Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/credits/transfer-options":{"get":{"tags":["billing"],"summary":"Get Transfer Options","description":"Where the caller may move credit from and to, and how much can go out.\n\nSources: the caller and every identity they own (never a connection).\nDestinations: the same, plus their connections (``my_connections``) that\nare not blocked either way. Built from the functions\n``POST /api/billing/credits/transfer`` enforces\n(``transfer_policy.transfer_options``), and the Move credit card renders\nonly this.","operationId":"get_transfer_options_api_billing_credits_transfer_options_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Transfer Options Api Billing Credits Transfer Options Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/billing/credits/transfer":{"post":{"tags":["billing"],"summary":"Post Transfer","description":"Move credit between two identities' wallets (TOS-2640 Phase 1).\n\nAuthority over BOTH sides is enforced in the service (TOS-6959 R1), and an\nindependent validator re-checks it at settlement, so a crafted request\ncannot bypass the owned-wallet selector and send money to an arbitrary UUID.\n\nReturns the transfer plus BOTH wallets' balances - the whole point is that\none went down by exactly what the other went up by, and a caller should not\nhave to make two more round trips to see it.","operationId":"post_transfer_api_billing_credits_transfer_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Post Transfer Api Billing Credits Transfer Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/billing/credits/transfers/{transfer_id}/report":{"post":{"tags":["billing"],"summary":"Post Report Transfer","description":"\"This wasn't me\": freeze the caller's outbound sending, alert admins.\n\nOnly the transfer's initiator may report it (404 otherwise). Idempotent:\nreporting again returns the open freeze.","operationId":"post_report_transfer_api_billing_credits_transfers__transfer_id__report_post","parameters":[{"name":"transfer_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Transfer Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Post Report Transfer Api Billing Credits Transfers  Transfer Id  Report Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/admin/billing/transfer-settings":{"get":{"tags":["billing"],"summary":"Admin Get Transfer Settings","description":"Every person-to-person sending limit, its value in force and default,\nplus recent changes (who, when, old, new).","operationId":"admin_get_transfer_settings_api_admin_billing_transfer_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Admin Get Transfer Settings Api Admin Billing Transfer Settings Get"}}}}}},"patch":{"tags":["billing"],"summary":"Admin Patch Transfer Settings","description":"Change one or more sending limits, and/or the outbound country\nallowlist. Every change is audited; the new value applies to the next\ntransfer, no deploy. All-or-nothing: one bad value refuses the whole\npatch.","operationId":"admin_patch_transfer_settings_api_admin_billing_transfer_settings_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferSettingsPatch"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Admin Patch Transfer Settings Api Admin Billing Transfer Settings Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/billing/billing-locations":{"get":{"tags":["billing"],"summary":"Admin Get Billing Locations","description":"Where paying users are (TOS-6986): count of distinct paying identities\nby billing country and region, from each identity's current\n``last_billing_country`` / ``last_billing_region``.","operationId":"admin_get_billing_locations_api_admin_billing_billing_locations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Admin Get Billing Locations Api Admin Billing Billing Locations Get"}}}}}}},"/api/admin/billing/transfer-freezes":{"get":{"tags":["billing"],"summary":"Admin List Transfer Freezes","description":"Outbound-sending freezes, open first, newest first.","operationId":"admin_list_transfer_freezes_api_admin_billing_transfer_freezes_get","parameters":[{"name":"include_cleared","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Cleared"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Admin List Transfer Freezes Api Admin Billing Transfer Freezes Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/billing/transfer-freezes/{freeze_id}/clear":{"post":{"tags":["billing"],"summary":"Admin Clear Transfer Freeze","description":"Lift a freeze. Recorded against the admin who did it; the row stays.","operationId":"admin_clear_transfer_freeze_api_admin_billing_transfer_freezes__freeze_id__clear_post","parameters":[{"name":"freeze_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Freeze Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Clear Transfer Freeze Api Admin Billing Transfer Freezes  Freeze Id  Clear Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/billing/transfer-monitor-settings":{"get":{"tags":["billing"],"summary":"Admin Get Transfer Monitor Settings","description":"Every transfer-pattern-monitor threshold (TOS-6985), its value in force\nand default, plus recent changes (who, when, old, new).","operationId":"admin_get_transfer_monitor_settings_api_admin_billing_transfer_monitor_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Admin Get Transfer Monitor Settings Api Admin Billing Transfer Monitor Settings Get"}}}}}},"patch":{"tags":["billing"],"summary":"Admin Patch Transfer Monitor Settings","description":"Change one or more pattern-monitor thresholds. Every change is audited;\nthe new value applies to the monitor's next scheduled run, no deploy.\nAll-or-nothing: one bad value refuses the whole patch.","operationId":"admin_patch_transfer_monitor_settings_api_admin_billing_transfer_monitor_settings_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferMonitorSettingsPatch"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Admin Patch Transfer Monitor Settings Api Admin Billing Transfer Monitor Settings Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/billing/transfer-pattern-flags":{"get":{"tags":["billing"],"summary":"Admin List Transfer Pattern Flags","description":"Circular-transfer / structuring / fan-in-cashout flags (TOS-6985), open\nones first, newest first, each with the sender/recipient names and\ntransfers involved.","operationId":"admin_list_transfer_pattern_flags_api_admin_billing_transfer_pattern_flags_get","parameters":[{"name":"include_reviewed","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Reviewed"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Admin List Transfer Pattern Flags Api Admin Billing Transfer Pattern Flags Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/billing/transfer-pattern-flags/{flag_id}/review":{"post":{"tags":["billing"],"summary":"Admin Review Transfer Pattern Flag","description":"Mark a flag reviewed, with an optional note. Recorded against the\nadmin who did it; the row stays either way.","operationId":"admin_review_transfer_pattern_flag_api_admin_billing_transfer_pattern_flags__flag_id__review_post","parameters":[{"name":"flag_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Flag Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatternFlagReviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Review Transfer Pattern Flag Api Admin Billing Transfer Pattern Flags  Flag Id  Review Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/billing/transfer-pattern-flags/{flag_id}/pause-sending":{"post":{"tags":["billing"],"summary":"Admin Pause Sending For Pattern Flag","description":"One-click \"pause sending\": freeze the flag's subject identity using the\nsame outbound-sending freeze TOS-6960 already has (idempotent if it is\nalready frozen). This is the only mutating action this ticket adds, and it\nonly ever pauses future sending; it never moves, reverses, or touches an\nexisting transfer.","operationId":"admin_pause_sending_for_pattern_flag_api_admin_billing_transfer_pattern_flags__flag_id__pause_sending_post","parameters":[{"name":"flag_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Flag Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Pause Sending For Pattern Flag Api Admin Billing Transfer Pattern Flags  Flag Id  Pause Sending Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/billing/transfers":{"get":{"tags":["billing"],"summary":"Admin List Transfers","description":"Settled wallet transfers for the admin reversal console (TOS-6959 R5).","operationId":"admin_list_transfers_api_admin_billing_transfers_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Admin List Transfers Api Admin Billing Transfers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/billing/transfers/{transfer_id}/reverse":{"post":{"tags":["billing"],"summary":"Admin Reverse Transfer","description":"Reverse a settled transfer as far as its destination still holds it.\n\n``require_admin`` resolves the REAL identity, so an impersonating admin is\nrefused here and the reversal is recorded against the admin who did it.","operationId":"admin_reverse_transfer_api_admin_billing_transfers__transfer_id__reverse_post","parameters":[{"name":"transfer_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Transfer Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferReversalRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Reverse Transfer Api Admin Billing Transfers  Transfer Id  Reverse Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/reload-rules/{target_identity_id}":{"get":{"tags":["billing"],"summary":"Get Reload Rule","description":"The identity's auto-reload rule, or ``null`` if none is configured (TOS-2511).","operationId":"get_reload_rule_api_billing_reload_rules__target_identity_id__get","parameters":[{"name":"target_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Target Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Response Get Reload Rule Api Billing Reload Rules  Target Identity Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["billing"],"summary":"Put Reload Rule","description":"Create or update the identity's single auto-reload rule (TOS-2511).","operationId":"put_reload_rule_api_billing_reload_rules__target_identity_id__put","parameters":[{"name":"target_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Target Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReloadRuleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Put Reload Rule Api Billing Reload Rules  Target Identity Id  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true},"delete":{"tags":["billing"],"summary":"Delete Reload Rule","description":"Remove the identity's auto-reload rule (TOS-2511).","operationId":"delete_reload_rule_api_billing_reload_rules__target_identity_id__delete","parameters":[{"name":"target_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Target Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Reload Rule Api Billing Reload Rules  Target Identity Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/billing/usage/keys":{"get":{"tags":["billing"],"summary":"Get Keys","description":"Per-provider-key spend rollup for the calling identity (BYOK keys), or\nfor an owned identity when an owner passes ``target_identity_id``.","operationId":"get_keys_api_billing_usage_keys_get","parameters":[{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Provider"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"capability","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Capability"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}},{"name":"target_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get Keys Api Billing Usage Keys Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/usage/buckets":{"get":{"tags":["billing"],"summary":"Get Buckets","description":"Daily spend buckets for the calling identity (TOS-3280).\n\n``date_from`` is caller-overridable with no cursor equivalent - this is a\ncontinuous daily time series feeding a chart, not a row list with a\n\"next page\" affordance. The genuine unbounded-response risk (a multi-year\nrequest returning one row per day for years) is closed by clamping the\nwindow to :data:`MAX_BUCKET_RANGE_DAYS` server-side, silently narrowing\nrather than erroring, matching this contract's other ceiling\n(``bounded_limit``).","operationId":"get_buckets_api_billing_usage_buckets_get","parameters":[{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Provider"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"capability","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Capability"}},{"name":"operation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operation"}},{"name":"funding_source","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Funding Source"}},{"name":"cost_status","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Cost Status"}},{"name":"provider_key_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Provider Key Id"}},{"name":"request_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"}},{"name":"chat_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Chat Id"}},{"name":"message_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Message Id"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"}},{"name":"target_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get Buckets Api Billing Usage Buckets Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/usage/invocations":{"get":{"tags":["billing"],"summary":"Get Invocations","operationId":"get_invocations_api_billing_usage_invocations_get","parameters":[{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Provider"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"capability","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Capability"}},{"name":"operation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operation"}},{"name":"funding_source","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Funding Source"}},{"name":"cost_status","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Cost Status"}},{"name":"provider_key_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Provider Key Id"}},{"name":"request_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"}},{"name":"chat_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Chat Id"}},{"name":"message_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Message Id"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}},{"name":"order_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order By"}},{"name":"order_dir","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order Dir"}},{"name":"target_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Invocations Api Billing Usage Invocations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/usage/invocations.csv":{"get":{"tags":["billing"],"summary":"Get Invocations Csv","operationId":"get_invocations_csv_api_billing_usage_invocations_csv_get","parameters":[{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Provider"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"capability","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Capability"}},{"name":"operation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operation"}},{"name":"funding_source","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Funding Source"}},{"name":"cost_status","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Cost Status"}},{"name":"provider_key_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Provider Key Id"}},{"name":"request_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"}},{"name":"chat_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Chat Id"}},{"name":"message_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Message Id"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}},{"name":"order_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order By"}},{"name":"order_dir","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order Dir"}},{"name":"target_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/billing/usage/summary":{"get":{"tags":["billing"],"summary":"Admin Get Summary","operationId":"admin_get_summary_api_admin_billing_usage_summary_get","parameters":[{"name":"identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Identity Id"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Provider"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"capability","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Capability"}},{"name":"operation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operation"}},{"name":"funding_source","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Funding Source"}},{"name":"cost_status","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Cost Status"}},{"name":"provider_key_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Provider Key Id"}},{"name":"request_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"}},{"name":"chat_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Chat Id"}},{"name":"message_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Message Id"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}},{"name":"owner_tenant_id","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Owner Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Get Summary Api Admin Billing Usage Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/billing/usage/buckets":{"get":{"tags":["billing"],"summary":"Admin Get Buckets","operationId":"admin_get_buckets_api_admin_billing_usage_buckets_get","parameters":[{"name":"identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Identity Id"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Provider"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"capability","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Capability"}},{"name":"operation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operation"}},{"name":"funding_source","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Funding Source"}},{"name":"cost_status","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Cost Status"}},{"name":"provider_key_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Provider Key Id"}},{"name":"request_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"}},{"name":"chat_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Chat Id"}},{"name":"message_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Message Id"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"}},{"name":"owner_tenant_id","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Owner Tenant Id"}},{"name":"breakdown","in":"query","required":false,"schema":{"enum":["capability","organization"],"type":"string","default":"capability","title":"Breakdown"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Admin Get Buckets Api Admin Billing Usage Buckets Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/billing/usage/by-identity":{"get":{"tags":["billing"],"summary":"Admin By Identity","operationId":"admin_by_identity_api_admin_billing_usage_by_identity_get","parameters":[{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Provider"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"capability","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Capability"}},{"name":"operation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operation"}},{"name":"funding_source","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Funding Source"}},{"name":"cost_status","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Cost Status"}},{"name":"provider_key_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Provider Key Id"}},{"name":"request_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"}},{"name":"chat_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Chat Id"}},{"name":"message_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Message Id"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}},{"name":"owner_tenant_id","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Owner Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Admin By Identity Api Admin Billing Usage By Identity Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/billing/usage/grouped":{"get":{"tags":["billing"],"summary":"Admin Grouped Usage","operationId":"admin_grouped_usage_api_admin_billing_usage_grouped_get","parameters":[{"name":"group_by","in":"query","required":false,"schema":{"enum":["organization","identity","provider","model"],"type":"string","default":"organization","title":"Group By"}},{"name":"identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Identity Id"}},{"name":"owner_tenant_id","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Owner Tenant Id"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Provider"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"capability","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Capability"}},{"name":"operation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operation"}},{"name":"funding_source","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Funding Source"}},{"name":"cost_status","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Cost Status"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Admin Grouped Usage Api Admin Billing Usage Grouped Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/billing/usage/pivot/catalog":{"get":{"tags":["billing"],"summary":"Admin Pivot Catalog","description":"Which dimensions and measures a pivot may use (TOS-4234).\n\nServed rather than hardcoded in the UI so a new dimension is one registry\nentry, not a coordinated frontend release.","operationId":"admin_pivot_catalog_api_admin_billing_usage_pivot_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Admin Pivot Catalog Api Admin Billing Usage Pivot Catalog Get"}}}}}}},"/api/admin/billing/usage/pivot":{"get":{"tags":["billing"],"summary":"Admin Pivot","description":"Cross-tabulate the AI execution log by two dimensions (TOS-4234).","operationId":"admin_pivot_api_admin_billing_usage_pivot_get","parameters":[{"name":"rows","in":"query","required":false,"schema":{"type":"string","default":"organization","title":"Rows"}},{"name":"cols","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cols"}},{"name":"measure","in":"query","required":false,"schema":{"type":"string","default":"provider_cost_usd","title":"Measure"}},{"name":"identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Identity Id"}},{"name":"owner_tenant_id","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Owner Tenant Id"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Provider"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"capability","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Capability"}},{"name":"operation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operation"}},{"name":"funding_source","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Funding Source"}},{"name":"cost_status","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Cost Status"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Pivot Api Admin Billing Usage Pivot Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/billing/usage/invocations":{"get":{"tags":["billing"],"summary":"Admin Get Invocations","operationId":"admin_get_invocations_api_admin_billing_usage_invocations_get","parameters":[{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}},{"name":"identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Identity Id"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Provider"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"capability","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Capability"}},{"name":"operation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operation"}},{"name":"funding_source","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Funding Source"}},{"name":"cost_status","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Cost Status"}},{"name":"provider_key_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Provider Key Id"}},{"name":"request_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"}},{"name":"chat_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Chat Id"}},{"name":"message_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Message Id"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}},{"name":"order_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order By"}},{"name":"order_dir","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order Dir"}},{"name":"owner_tenant_id","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Owner Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Get Invocations Api Admin Billing Usage Invocations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/billing/usage/invocations.csv":{"get":{"tags":["billing"],"summary":"Admin Get Invocations Csv","operationId":"admin_get_invocations_csv_api_admin_billing_usage_invocations_csv_get","parameters":[{"name":"identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Identity Id"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Provider"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"capability","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Capability"}},{"name":"operation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operation"}},{"name":"funding_source","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Funding Source"}},{"name":"cost_status","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Cost Status"}},{"name":"provider_key_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Provider Key Id"}},{"name":"request_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"}},{"name":"chat_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Chat Id"}},{"name":"message_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Message Id"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}},{"name":"order_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order By"}},{"name":"order_dir","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order Dir"}},{"name":"owner_tenant_id","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Owner Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/billing/trial-config":{"get":{"tags":["billing"],"summary":"Admin Get Trial Config","operationId":"admin_get_trial_config_api_admin_billing_trial_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Admin Get Trial Config Api Admin Billing Trial Config Get"}}}}}},"patch":{"tags":["billing"],"summary":"Admin Patch Trial Config","operationId":"admin_patch_trial_config_api_admin_billing_trial_config_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrialConfigPatch"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Admin Patch Trial Config Api Admin Billing Trial Config Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/billing/markup-rates":{"get":{"tags":["billing"],"summary":"Admin List Markup Rates","operationId":"admin_list_markup_rates_api_admin_billing_markup_rates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response Admin List Markup Rates Api Admin Billing Markup Rates Get"}}}}}},"post":{"tags":["billing"],"summary":"Admin Create Markup Rate","operationId":"admin_create_markup_rate_api_admin_billing_markup_rates_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarkupRateCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Admin Create Markup Rate Api Admin Billing Markup Rates Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/billing/grants":{"get":{"tags":["billing"],"summary":"Admin List Grants","operationId":"admin_list_grants_api_admin_billing_grants_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Identity Id"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Admin List Grants Api Admin Billing Grants Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["billing"],"summary":"Admin Create Grant","operationId":"admin_create_grant_api_admin_billing_grants_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GrantCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Create Grant Api Admin Billing Grants Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/billing/grants/{grant_id}/revoke":{"post":{"tags":["billing"],"summary":"Admin Revoke Grant","operationId":"admin_revoke_grant_api_admin_billing_grants__grant_id__revoke_post","parameters":[{"name":"grant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Grant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Revoke Grant Api Admin Billing Grants  Grant Id  Revoke Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/billing/organizations":{"get":{"tags":["billing"],"summary":"Admin Reporting Organizations","operationId":"admin_reporting_organizations_api_admin_billing_organizations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response Admin Reporting Organizations Api Admin Billing Organizations Get"}}}}}}},"/api/admin/billing/financials":{"get":{"tags":["billing"],"summary":"Admin Financials","operationId":"admin_financials_api_admin_billing_financials_get","parameters":[{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}},{"name":"owner_tenant_id","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Owner Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Financials Api Admin Billing Financials Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscriptions/{target_identity_id}":{"get":{"tags":["subscriptions"],"summary":"Get Subscription For Identity","description":"The target identity's current subscription, or ``null`` if none has\nbeen provisioned. ``null`` is the expected state for a preview account,\nnot an error (TOS-4557 D10). Excludes the admin-only ``provision_note``\nfield - that's internal context an admin typed while provisioning, not\nsomething the payer should see on their own Wallet.","operationId":"get_subscription_for_identity_api_subscriptions__target_identity_id__get","parameters":[{"name":"target_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Target Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Response Get Subscription For Identity Api Subscriptions  Target Identity Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/plans":{"get":{"tags":["subscriptions"],"summary":"Get Published Plans","description":"The four published plans, read from the same vendored copy of\n``pricing-model.json`` the marketing site is built from (TOS-4557 R8).","operationId":"get_published_plans_api_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response Get Published Plans Api Plans Get"}}}}}}},"/api/admin/subscriptions":{"post":{"tags":["subscriptions"],"summary":"Admin Provision Subscription","description":"Provision a subscription for a payer who does not already have one.","operationId":"admin_provision_subscription_api_admin_subscriptions_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProvisionSubscriptionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Admin Provision Subscription Api Admin Subscriptions Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/subscriptions/{target_identity_id}":{"get":{"tags":["subscriptions"],"summary":"Admin Get Subscription","description":"An identity's current subscription, for the admin drill-down view.","operationId":"admin_get_subscription_api_admin_subscriptions__target_identity_id__get","parameters":[{"name":"target_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Target Identity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Response Admin Get Subscription Api Admin Subscriptions  Target Identity Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/subscriptions/{subscription_id}/extend":{"post":{"tags":["subscriptions"],"summary":"Admin Extend Subscription","operationId":"admin_extend_subscription_api_admin_subscriptions__subscription_id__extend_post","parameters":[{"name":"subscription_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Subscription Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtendPeriodRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Extend Subscription Api Admin Subscriptions  Subscription Id  Extend Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/subscriptions/{subscription_id}/cancel":{"post":{"tags":["subscriptions"],"summary":"Admin Cancel Subscription","operationId":"admin_cancel_subscription_api_admin_subscriptions__subscription_id__cancel_post","parameters":[{"name":"subscription_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Subscription Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelSubscriptionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Cancel Subscription Api Admin Subscriptions  Subscription Id  Cancel Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/browser-sessions":{"post":{"tags":["browser-supervision"],"summary":"Start Browser Session","operationId":"start_browser_session_api_agents__agent_id__browser_sessions_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserSessionStart"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/agents/{agent_id}/browser-sessions/{session_id}/snapshot":{"get":{"tags":["browser-supervision"],"summary":"Agent Browser Session Snapshot","operationId":"agent_browser_session_snapshot_api_agents__agent_id__browser_sessions__session_id__snapshot_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/agents/{agent_id}/browser-sessions/{session_id}/tabs":{"get":{"tags":["browser-supervision"],"summary":"Agent Browser Session Tabs","operationId":"agent_browser_session_tabs_api_agents__agent_id__browser_sessions__session_id__tabs_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserTabListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/agents/{agent_id}/browser-sessions/{session_id}/form-fields":{"get":{"tags":["browser-supervision"],"summary":"Agent Browser Session Form Fields","operationId":"agent_browser_session_form_fields_api_agents__agent_id__browser_sessions__session_id__form_fields_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserFormFieldListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/agents/{agent_id}/browser-sessions/{session_id}/take-control":{"post":{"tags":["browser-supervision"],"summary":"Take Agent Browser Control","operationId":"take_agent_browser_control_api_agents__agent_id__browser_sessions__session_id__take_control_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserControlRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/agents/{agent_id}/browser-sessions/{session_id}/return-control":{"post":{"tags":["browser-supervision"],"summary":"Return Agent Browser Control","operationId":"return_agent_browser_control_api_agents__agent_id__browser_sessions__session_id__return_control_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/agents/{agent_id}/browser-sessions/{session_id}/input":{"post":{"tags":["browser-supervision"],"summary":"Agent Browser Human Input","operationId":"agent_browser_human_input_api_agents__agent_id__browser_sessions__session_id__input_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/BrowserClickInput"},{"$ref":"#/components/schemas/BrowserTextInput"},{"$ref":"#/components/schemas/BrowserKeyInput"},{"$ref":"#/components/schemas/BrowserScrollInput"},{"$ref":"#/components/schemas/BrowserDragInput"},{"$ref":"#/components/schemas/BrowserSwitchTabInput"},{"$ref":"#/components/schemas/BrowserFormFillInput"},{"$ref":"#/components/schemas/BrowserFormSubmitInput"}],"discriminator":{"propertyName":"type","mapping":{"click":"#/components/schemas/BrowserClickInput","text":"#/components/schemas/BrowserTextInput","key":"#/components/schemas/BrowserKeyInput","scroll":"#/components/schemas/BrowserScrollInput","drag":"#/components/schemas/BrowserDragInput","switch_tab":"#/components/schemas/BrowserSwitchTabInput","form_fill":"#/components/schemas/BrowserFormFillInput","form_submit":"#/components/schemas/BrowserFormSubmitInput"}},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserInputResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/agents/{agent_id}/browser-sessions/{session_id}/save-auth-profile":{"post":{"tags":["browser-supervision"],"summary":"Save Agent Browser Auth Profile","operationId":"save_agent_browser_auth_profile_api_agents__agent_id__browser_sessions__session_id__save_auth_profile_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserAuthProfileSave"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserAuthProfileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/agents/{agent_id}/browser-sessions/{session_id}/end":{"post":{"tags":["browser-supervision"],"summary":"End Agent Browser Session","operationId":"end_agent_browser_session_api_agents__agent_id__browser_sessions__session_id__end_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/chats/{chat_id}/browser-sessions":{"get":{"tags":["browser-supervision"],"summary":"List Browser Sessions","operationId":"list_browser_sessions_api_chats__chat_id__browser_sessions_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserSessionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/chats/{chat_id}/browser-sessions/{session_id}/snapshot":{"get":{"tags":["browser-supervision"],"summary":"Browser Session Snapshot","operationId":"browser_session_snapshot_api_chats__chat_id__browser_sessions__session_id__snapshot_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/chats/{chat_id}/browser-sessions/{session_id}/tabs":{"get":{"tags":["browser-supervision"],"summary":"Browser Session Tabs","operationId":"browser_session_tabs_api_chats__chat_id__browser_sessions__session_id__tabs_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserTabListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/chats/{chat_id}/browser-sessions/{session_id}/form-fields":{"get":{"tags":["browser-supervision"],"summary":"Browser Session Form Fields","operationId":"browser_session_form_fields_api_chats__chat_id__browser_sessions__session_id__form_fields_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserFormFieldListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/chats/{chat_id}/browser-sessions/{session_id}/take-control":{"post":{"tags":["browser-supervision"],"summary":"Take Browser Control","operationId":"take_browser_control_api_chats__chat_id__browser_sessions__session_id__take_control_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserControlRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/chats/{chat_id}/browser-sessions/{session_id}/return-control":{"post":{"tags":["browser-supervision"],"summary":"Return Browser Control","operationId":"return_browser_control_api_chats__chat_id__browser_sessions__session_id__return_control_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/chats/{chat_id}/browser-sessions/{session_id}/input":{"post":{"tags":["browser-supervision"],"summary":"Browser Human Input","operationId":"browser_human_input_api_chats__chat_id__browser_sessions__session_id__input_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/BrowserClickInput"},{"$ref":"#/components/schemas/BrowserTextInput"},{"$ref":"#/components/schemas/BrowserKeyInput"},{"$ref":"#/components/schemas/BrowserScrollInput"},{"$ref":"#/components/schemas/BrowserDragInput"},{"$ref":"#/components/schemas/BrowserSwitchTabInput"},{"$ref":"#/components/schemas/BrowserFormFillInput"},{"$ref":"#/components/schemas/BrowserFormSubmitInput"}],"discriminator":{"propertyName":"type","mapping":{"click":"#/components/schemas/BrowserClickInput","text":"#/components/schemas/BrowserTextInput","key":"#/components/schemas/BrowserKeyInput","scroll":"#/components/schemas/BrowserScrollInput","drag":"#/components/schemas/BrowserDragInput","switch_tab":"#/components/schemas/BrowserSwitchTabInput","form_fill":"#/components/schemas/BrowserFormFillInput","form_submit":"#/components/schemas/BrowserFormSubmitInput"}},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserInputResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/chats/{chat_id}/browser-sessions/{session_id}/save-auth-profile":{"post":{"tags":["browser-supervision"],"summary":"Save Browser Auth Profile","operationId":"save_browser_auth_profile_api_chats__chat_id__browser_sessions__session_id__save_auth_profile_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserAuthProfileSave"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserAuthProfileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/chats/{chat_id}/browser-sessions/{session_id}/end":{"post":{"tags":["browser-supervision"],"summary":"End Browser Session","operationId":"end_browser_session_api_chats__chat_id__browser_sessions__session_id__end_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/chats/{chat_id}/browser-action-proposals":{"get":{"tags":["browser-supervision"],"summary":"List Browser Action Proposals","operationId":"list_browser_action_proposals_api_chats__chat_id__browser_action_proposals_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserActionProposalListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/chats/{chat_id}/browser-action-proposals/{proposal_id}/approve":{"post":{"tags":["browser-supervision"],"summary":"Approve Browser Action","operationId":"approve_browser_action_api_chats__chat_id__browser_action_proposals__proposal_id__approve_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"proposal_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Proposal Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserApprovalRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserApprovalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/chats/{chat_id}/browser-action-proposals/{proposal_id}/complete-authentication":{"post":{"tags":["browser-supervision"],"summary":"Complete Browser Authentication","operationId":"complete_browser_authentication_api_chats__chat_id__browser_action_proposals__proposal_id__complete_authentication_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"proposal_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Proposal Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserAuthenticationCompletionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/chats/{chat_id}/browser-action-proposals/{proposal_id}/deny":{"post":{"tags":["browser-supervision"],"summary":"Deny Browser Action","operationId":"deny_browser_action_api_chats__chat_id__browser_action_proposals__proposal_id__deny_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"proposal_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Proposal Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserDenialResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/approvals":{"get":{"tags":["tool-approvals"],"summary":"List Tool Approvals","description":"Tool calls waiting for, or already given, this person's decision.","operationId":"list_tool_approvals_api_approvals_get","parameters":[{"name":"chat_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Chat Id"}},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Id"}},{"name":"pending","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Pending"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolApprovalListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/approvals/{approval_id}":{"get":{"tags":["tool-approvals"],"summary":"Get Tool Approval","operationId":"get_tool_approval_api_approvals__approval_id__get","parameters":[{"name":"approval_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Approval Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolApprovalView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/approvals/{approval_id}/decide":{"post":{"tags":["tool-approvals"],"summary":"Decide Tool Approval","description":"Approve (runs the call exactly once), deny, or cancel a held tool call.","operationId":"decide_tool_approval_api_approvals__approval_id__decide_post","parameters":[{"name":"approval_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Approval Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecideToolApprovalRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecideToolApprovalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/agents/{agent_id}/tool-approval-policy":{"get":{"tags":["tool-approvals"],"summary":"Get Tool Approval Policy","operationId":"get_tool_approval_policy_api_agents__agent_id__tool_approval_policy_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolApprovalPolicy"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true},"put":{"tags":["tool-approvals"],"summary":"Put Tool Approval Policy","description":"Owner-only. An agent can never change the policy that governs it.","operationId":"put_tool_approval_policy_api_agents__agent_id__tool_approval_policy_put","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolApprovalPolicy"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolApprovalPolicy"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/folders/{folder_id}/boundaries":{"get":{"tags":["folder-boundaries"],"summary":"List Folder Boundaries","description":"The boundaries set on this folder. Folder administrators only.","operationId":"list_folder_boundaries_api_folders__folder_id__boundaries_get","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Folder Id"}},{"name":"include_retired","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Retired"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderBoundaryListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true},"post":{"tags":["folder-boundaries"],"summary":"Set Folder Boundary","description":"Set a boundary that binds every agent in this folder and below.","operationId":"set_folder_boundary_api_folders__folder_id__boundaries_post","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Folder Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetFolderBoundaryRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderBoundaryView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/folders/{folder_id}/boundaries/{boundary_id}":{"delete":{"tags":["folder-boundaries"],"summary":"Retire Folder Boundary","description":"Retire one of this folder's boundaries. It stops binding at once and\nstays on record. An attempt by anyone who does not administer the folder\nis refused and recorded against the boundary.","operationId":"retire_folder_boundary_api_folders__folder_id__boundaries__boundary_id__delete","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Folder Id"}},{"name":"boundary_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Boundary Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/folders/resolve":{"get":{"tags":["domains"],"summary":"Resolve Address","description":"Resolve a domain address to the row it names, for the calling identity.","operationId":"resolve_address_api_folders_resolve_get","parameters":[{"name":"address","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"title":"Address"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolvedAddressResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/documents":{"get":{"tags":["domains"],"summary":"List Documents","description":"List documents: personal + all folders the caller belongs to.\n\nPass ``deleted=true`` to list the recycle-bin contents instead of live\ndocuments (TOS-1488), matching ``GET /api/skills?deleted=true``.\n\nKeyset-paginated, newest first (TOS-3280): a caller's whole set of documents\nused to come back in one unbounded response. 400 on a malformed cursor.","operationId":"list_documents_api_folders_documents_get","parameters":[{"name":"deleted","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Deleted"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":200,"minimum":1},{"type":"null"}],"default":200,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/documents/{document_id}":{"get":{"tags":["domains"],"summary":"Get Document","description":"Get a document including its full text content.","operationId":"get_document_api_folders_documents__document_id__get","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["domains"],"summary":"Patch Document","description":"Update document title and/or tags. Identity-scoped; contributor+ on the\ndoc's folder if shared.","operationId":"patch_document_api_folders_documents__document_id__patch","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchDocumentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["domains"],"summary":"Delete Document","description":"Soft-delete a document into the recycle bin (TOS-1488).\n\nPersonal docs (library_id IS NULL): only the owner may delete.\nShared docs: caller needs edit+ on the doc's folder. Segments stay\nattached to the document row until it is purged (``POST .../purge``,\nadmin rung). Restore via ``POST .../restore`` (edit+ rung).","operationId":"delete_document_api_folders_documents__document_id__delete","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/documents/{document_id}/original":{"get":{"tags":["domains"],"summary":"Download Document Original","description":"Download the ORIGINAL uploaded file for a folder document (TOS-847 P2).\n\nSame visibility filter as the detail GET. Returns 409 ``original_not_retained``\nfor legacy documents uploaded before retention shipped (no stored original).","operationId":"download_document_original_api_folders_documents__document_id__original_get","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/documents/{document_id}/fit":{"get":{"tags":["domains"],"summary":"Download Document Fit","description":"Return the fitted inline variant for an image folder document.","operationId":"download_document_fit_api_folders_documents__document_id__fit_get","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/documents/bulk/delete":{"post":{"tags":["domains"],"summary":"Bulk Delete Documents","description":"Soft-delete (recycle bin) one or more documents (TOS-1488).\n\nPersonal docs (library_id IS NULL): only the owner may delete (enforced by\n``_load_authorized_docs``'s visibility filter). Shared docs: caller needs\nedit+ on the doc's folder. Segments stay attached until purge.","operationId":"bulk_delete_documents_api_folders_documents_bulk_delete_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDocumentIdsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDeleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/documents/bulk/move":{"post":{"tags":["domains"],"summary":"Bulk Move Documents","operationId":"bulk_move_documents_api_folders_documents_bulk_move_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkMoveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkMoveResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/documents/{document_id}/restore":{"post":{"tags":["domains"],"summary":"Restore Document","description":"Restore a recycle-binned document (TOS-1488).\n\nClears ``deleted_at``/``deleted_by_identity_id``. Idempotent on an\nalready-live document (mirrors ``SkillService.restore_skill``). Same\nvisibility + rung rule as delete: personal docs need ownership, shared\ndocs need edit+.","operationId":"restore_document_api_folders_documents__document_id__restore_post","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/documents/{document_id}/purge":{"post":{"tags":["domains"],"summary":"Purge Document","description":"Permanently delete a recycle-binned document (TOS-1488: admin rung -\nirreversible, unlike soft-delete/restore which stay edit+). Segments\ncascade-delete from the document relationship.","operationId":"purge_document_api_folders_documents__document_id__purge_post","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/documents/bulk/reindex":{"post":{"tags":["domains"],"summary":"Bulk Reindex Documents","operationId":"bulk_reindex_documents_api_folders_documents_bulk_reindex_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDocumentIdsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkReindexResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/documents/bulk/tag":{"post":{"tags":["domains"],"summary":"Bulk Tag Documents","operationId":"bulk_tag_documents_api_folders_documents_bulk_tag_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkTagRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkTagResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/documents/{document_id}/reindex":{"post":{"tags":["domains"],"summary":"Reindex Document","description":"Re-chunk and re-embed a document from its stored full_text.\n\nPersonal docs: only the owner may reindex.\nShared docs: caller must be contributor or admin of the folder.","operationId":"reindex_document_api_folders_documents__document_id__reindex_post","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Reindex Document Api Folders Documents  Document Id  Reindex Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/media":{"post":{"tags":["domains"],"summary":"Upload Folder Media","description":"Upload an image into a folder, or the caller's personal scope\n(TOS-2452) - the visual editor's paste-to-upload target.\n\n``library_id=None`` uploads into personal scope (identity-owned; no rung\ncheck needed). Otherwise the caller needs edit+ on the folder\n(``_check_kb_write_permission``). Image MIME-type and pixel-budget rules\nare enforced by ``put_library_media_document`` itself; any ``ValueError``\nit raises (unsupported type, too many pixels) maps to 400 with its message.","operationId":"upload_library_media_api_folders_media_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadLibraryMediaRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryMediaUploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/documents/{document_id}/content":{"put":{"tags":["domains"],"summary":"Update Document Content","description":"Save edited document text - the Documents editor's write path (TOS-2415).\n\nSee ``services/document_content.py`` for the full fan-out (history, persist,\nre-vectorize, Mind refresh).\n\nPersonal docs: only the owner may edit. Shared docs: edit/admin rung.\nOnly ``document_kind='text'`` documents whose original (if any) is itself\ntext are editable; binary-derived documents 409.","operationId":"update_document_content_api_folders_documents__document_id__content_put","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDocumentContentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentContentSaveResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/documents/{document_id}/draft":{"patch":{"tags":["domains"],"summary":"Save Document Draft","description":"Autosave a draft (TOS-6957): a crash/power-loss safety net, NOT a save.\n\nUnlike ``PUT .../content``, this never appends a version row, never\nre-indexes, and never touches ``full_text``/``content_hash`` - it is one\ncheap UPDATE of three columns. It exists so the editor can debounce-save\non every pause in typing without paying the real save's cost, while still\nletting a reopened document offer to restore work that was never\nexplicitly saved. A real save (``save_document_content``, any entry\npoint) clears the draft, since it has just been captured as a version.","operationId":"save_document_draft_api_folders_documents__document_id__draft_patch","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaveDocumentDraftRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaveDocumentDraftResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"draft_update"},"delete":{"tags":["domains"],"summary":"Discard Document Draft","description":"Explicitly discard a pending draft (TOS-6957) without restoring it.","operationId":"discard_document_draft_api_folders_documents__document_id__draft_delete","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"draft_delete"}},"/api/folders/documents/{document_id}/replace-original":{"post":{"tags":["domains"],"summary":"Replace Document Original","description":"Upload a NEW version of a document's retained original file (TOS-2452).\n\nUnlike ``PUT .../content`` (which edits the TEXT and keeps a text\noriginal in sync), this replaces the ORIGINAL FILE itself - the \"upload a\nnew version\" flow for a document that retains an original, including a\nbinary one (pdf/docx). The uploaded bytes become the new original; text is\nre-extracted from them with the same extractor the bulk-ingest job uses\n(``services.file_extractors.extract_text_for_filename``), and that\nextracted text becomes the document's ``full_text`` via the normal save\nfan-out. Media documents (``document_kind == 'media'``) are out of scope -\nthose are replaced by re-uploading via ``POST /api/folders/media`` instead.\n\nGuard order: visibility (404) -> edit rung on shared docs (403) ->\n``document_kind`` must be ``'text'`` (409 ``not_editable_kind``) -> an\noriginal must already be retained (409 ``original_not_retained``) ->\nbase64/size (400/413) -> extraction must yield non-empty text (422\n\"could not extract text\").\n\nOrdering/transaction note: the object-store PUT and the ``doc.original_*``\nmetadata updates happen BEFORE ``save_document_content`` runs, in that\norder, so the metadata update lands on the SAME ``doc`` object\n``save_document_content`` commits - if its own transaction later fails and\nrolls back, the metadata rolls back with it. The object-store PUT itself\nis NOT part of that transaction (object stores aren't transactional), so\nthe OLD bytes are snapshotted first and restored best-effort when the\nsave core fails - the desync window shrinks to \"the compensating restore\nalso failed\", which is reported to Sentry (adversarial review on #3964,\nP3; a binary original is higher-stakes than the text-resync path this was\nmodeled on). ``save_document_content`` is called with\n``sync_original_bytes=False`` so it does not overwrite the just-written\nbinary with the extracted text.","operationId":"replace_document_original_api_folders_documents__document_id__replace_original_post","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceDocumentOriginalRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentContentSaveResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/documents/{document_id}/versions":{"get":{"tags":["domains"],"summary":"List Document Versions","description":"Newest-first edit history for a document (metadata only).\n\nRead permission mirrors reading the document itself: anyone who can see\nthe document can see its history - versions carry no content here.","operationId":"list_document_versions_api_folders_documents__document_id__versions_get","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentVersionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/documents/{document_id}/learners":{"get":{"tags":["domains"],"summary":"List Document Learners","description":"Which Minds have learned this document (TOS-6954 design point 5).\n\nAnyone who can see the document can see this, the same as its version\nhistory and as a folder's member list, which already shows each\nmember's \"learns from this folder\" switch.","operationId":"list_document_learners_api_folders_documents__document_id__learners_get","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentLearnersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/documents/{document_id}/versions/{version_number}":{"get":{"tags":["domains"],"summary":"Get Document Version","description":"One version WITH its full content - the diff/preview fetch.","operationId":"get_document_version_api_folders_documents__document_id__versions__version_number__get","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}},{"name":"version_number","in":"path","required":true,"schema":{"type":"integer","title":"Version Number"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentVersionContentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/documents/{document_id}/versions/{version_number}/restore":{"post":{"tags":["domains"],"summary":"Restore Document Version","description":"Roll the document back to an earlier version's content.\n\nA restore is a full save with that version's text (``edit_source=\n'restore'``): file, embeddings, and Mind all update, and history grows\nforward - the restore appends a NEW version rather than rewriting rows,\nso a restore can itself be undone. Same permission bar as editing.","operationId":"restore_document_version_api_folders_documents__document_id__versions__version_number__restore_post","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}},{"name":"version_number","in":"path","required":true,"schema":{"type":"integer","title":"Version Number"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentContentSaveResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/documents/{document_id}/segments":{"get":{"tags":["domains"],"summary":"List Segments","description":"List a document's chunks, in document order.\n\nKeyset-paginated over ``(segment_index, id)`` (TOS-3280): ``segment_index``\nalone is this document's natural order but is not declared unique at the\nORM level, so ``id`` breaks ties to keep the ordering total. 400 on a\nmalformed cursor.","operationId":"list_segments_api_folders_documents__document_id__segments_get","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":200,"minimum":1},{"type":"null"}],"default":200,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SegmentListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/index":{"post":{"tags":["domains"],"summary":"Index Text","description":"Index raw text content into a folder.\n\nIf library_id is set, the caller must be a contributor or admin.\nIf omitted, the content is indexed as personal content for the\ncaller.","operationId":"index_text_api_folders_index_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexTextRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexResultResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/search":{"get":{"tags":["domains"],"summary":"Search Knowledge","description":"Search the folders - personal + all folders the caller belongs to.","operationId":"search_knowledge_api_folders_search_get","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","title":"Query"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":5,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SearchResultResponse"},"title":"Response Search Knowledge Api Folders Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders":{"get":{"tags":["domains"],"summary":"List Folders","description":"List folders the caller REACHES, directly or by inheritance.\n\nAugmented with derived counts and a member preview so the sidebar can\nrender avatar stacks and stat cards without N+1 calls.\n\nTOS-2131: this used to query ``library_members`` directly for the caller's\nactive rows, which demanded a grant on the exact folder. Since TOS-2049 a\ngrant on a folder also grants on every descendant (TOS-1824 §1.5), so an\ninheritance-only folder resolved through ``/api/folders/resolve`` but was\nabsent from this list - and the SPA matches address deep links against this\nlist, so the deep link 404'd on a folder the API said the caller reached.\n``services/access/domain_reach`` is THE definition of that rule; this\nsurface now reads it instead of re-implementing membership.\n\nNot keyset-paginated (TOS-3280 audit): unlike documents/segments/members,\nthe folders one identity reaches is bounded by admin-granted membership\nand tree depth, not by content volume, and the preview-fetch below already\ndocuments the expected scale as \"<200 folders per user\". Paginating it would\nalso mean restructuring ``reachable_domains_subquery``/\n``administered_library_ids`` (services/access/), which this endpoint only\nreads.","operationId":"list_bases_api_folders_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LibraryResponse"},"title":"Response List Bases Api Folders Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["domains"],"summary":"Create Folder","description":"Create a shared folder; the caller becomes admin.\n\nWith ``organization_id`` the folder belongs to that organization (TOS-6927):\nits owner and tenant are the organization, so its address sits under the\norganization's zone. The caller still gets a direct admin row.","operationId":"create_base_api_folders_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKBRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tool-name":"folder_create"}},"/api/folders/recycle-bin":{"get":{"tags":["domains"],"summary":"List Recycle Bin","description":"List binned folders the caller may restore or purge (TOS-7370).\n\nEvery other recycle bin in this repo has a listing surface (agents'\ntrash, documents' ``?deleted=true``, skills' ``deleted_only``,\norganizations' own recycle-bin endpoint) - without one here, restoring a\nbinned folder needs its id kept out of band (adversarial review P3).\n\nScoped to the same authority ``_require_delete_authority`` checks per\nobject: direct admin membership (unaffected by the folder's own\n``deleted_at`` - membership rows are untouched by binning, by design), or\nowner/admin of the organization that owns the folder. Not reachability\n-inherited: a binned folder, by definition, no longer participates in\ninherited reach, and an org-owned folder's own membership can be empty\n(TOS-7159), so this is a distinct authority query rather than a filter on\n``reachable_library_ids_select``.","operationId":"list_recycle_bin_api_folders_recycle_bin_get","parameters":[{"name":"scope","in":"query","required":false,"schema":{"anyOf":[{"const":"mine","type":"string"},{"type":"null"}],"description":"mine: only folders the caller has direct authority over, even for a platform admin. Omitted: a platform admin sees every binned folder.","title":"Scope"},"description":"mine: only folders the caller has direct authority over, even for a platform admin. Omitted: a platform admin sees every binned folder."},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LibraryResponse"},"title":"Response List Recycle Bin Api Folders Recycle Bin Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/{domain_ref}":{"patch":{"tags":["domains"],"summary":"Rename Folder","description":"Rename a folder. Admin-only. A home folder cannot be renamed.","operationId":"rename_base_api_folders__domain_ref__patch","parameters":[{"name":"domain_ref","in":"path","required":true,"schema":{"type":"string","title":"Domain Ref"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenameKBRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tool-name":"folder_rename"},"delete":{"tags":["domains"],"summary":"Delete Folder","description":"Move a folder and everything in it into the recycle bin (TOS-3390).\n\nBins the folder, every folder under it, and every object in them\n(documents, connections, connectors, databases, web sources, syncs,\nprovider keys, environments, skills that live only here). A skill also\nplaced in another folder loses only its placement here; a shortcut\nelsewhere pointing at something in the tree is removed. All of it comes\nback with ``POST .../restore``, and nothing binned by an earlier, separate\ndelete does. Refused with a 409 listing ``blockers`` when something outside\nthe tree depends on something inside it, for example an agent whose home\nfolder is here. Run ``folder_delete_plan`` first to see exactly what will happen.\n\nAuthority: a platform admin, a folder admin, or an owner/admin of the\norganization that owns the folder (TOS-7159). Idempotent on a binned folder.","operationId":"delete_base_api_folders__domain_ref__delete","parameters":[{"name":"domain_ref","in":"path","required":true,"schema":{"type":"string","title":"Domain Ref"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tool-name":"folder_delete"}},"/api/folders/{domain_ref}/subfolders":{"post":{"tags":["domains"],"summary":"Create Subfolder","description":"Create a subfolder under ``domain_id``. Admin-only on the parent.\n\nTOS-2002 (Domains P2). Membership is snapshotted from the parent at\ncreation; permission *inheritance* is P3.","operationId":"create_subdomain_endpoint_api_folders__domain_ref__subfolders_post","parameters":[{"name":"domain_ref","in":"path","required":true,"schema":{"type":"string","title":"Domain Ref"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSubdomainRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tool-name":"folder_create_subfolder"}},"/api/folders/{domain_ref}/move":{"post":{"tags":["domains"],"summary":"Move Folder","description":"Re-parent a folder; its whole subtree is re-pathed in one transaction.\n\nTOS-2002 (Domains P2). Admin on the folder AND on the target parent - a\nmove rewrites addresses on both sides of the tree.","operationId":"move_domain_endpoint_api_folders__domain_ref__move_post","parameters":[{"name":"domain_ref","in":"path","required":true,"schema":{"type":"string","title":"Domain Ref"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoveDomainRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tool-name":"folder_move"}},"/api/folders/{domain_ref}/transfer":{"post":{"tags":["domains"],"summary":"Transfer Folder","description":"Transfer a top-level folder, with all its subfolders, to an organization.\n\nTOS-6927. The folder and every subfolder change owner and tenant in one\ntransaction and take an address under the organization; everyone's existing\naccess is kept. Requires direct admin on the folder and owner or admin on\nthe organization. A folder that already belongs to an organization also\nneeds owner or admin there, since this takes it away from that organization.","operationId":"transfer_domain_endpoint_api_folders__domain_ref__transfer_post","parameters":[{"name":"domain_ref","in":"path","required":true,"schema":{"type":"string","title":"Domain Ref"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferDomainRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tool-name":"folder_transfer"}},"/api/folders/{domain_ref}/delete-plan":{"get":{"tags":["domains"],"summary":"Folder Delete Plan","description":"Dry run of deleting a folder (TOS-3390). Changes nothing.\n\nLists every folder in the tree, how many of each kind of object would go\nto the recycle bin with it, and anything outside the tree that depends on\nsomething inside it. When ``can_delete`` is false, ``blockers`` says what\ndepends on what and what to do first. Same authority as delete.","operationId":"folder_delete_plan_api_folders__domain_ref__delete_plan_get","parameters":[{"name":"domain_ref","in":"path","required":true,"schema":{"type":"string","title":"Domain Ref"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Folder Delete Plan Api Folders  Domain Ref  Delete Plan Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tool-name":"folder_delete_plan","x-mcp-action":"read"}},"/api/folders/{domain_ref}/restore":{"post":{"tags":["domains"],"summary":"Restore Folder","description":"Restore a binned folder and exactly what its delete binned (TOS-3390).\n\nUndoes one delete: everything that delete put in the bin comes back,\nincluding removed skill placements and shortcuts. Anything binned by an\nearlier, separate delete stays in the bin. A folder deleted as part of a\nbigger folder, or with its owner, is restored by restoring that instead.\nIdempotent on a live folder. Same authority as delete.","operationId":"restore_base_api_folders__domain_ref__restore_post","parameters":[{"name":"domain_ref","in":"path","required":true,"schema":{"type":"string","title":"Domain Ref"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tool-name":"folder_restore"}},"/api/folders/{domain_ref}/purge":{"post":{"tags":["domains"],"summary":"Purge Folder","description":"Permanently delete a binned folder and its tree (TOS-3390). Irreversible.\n\nActs only on what is already in the recycle bin: the folder must be binned\n(``DELETE /{domain_ref}`` first), and so must every folder and object under\nit. Deepest folder first, it retracts documents from every Mind, drops\nagent databases, removes connections and connectors, purges skills binned\nwith the folder, then deletes each folder row. Refused with a 409 listing\n``blockers`` when anything in the tree is live or something outside still\ndepends on it. Same authority as delete.","operationId":"purge_base_api_folders__domain_ref__purge_post","parameters":[{"name":"domain_ref","in":"path","required":true,"schema":{"type":"string","title":"Domain Ref"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tool-name":"folder_purge"}},"/api/folders/{domain_ref}/members":{"get":{"tags":["domains"],"summary":"List Members","description":"List active members of a folder. Any member may call this.\n\nKeyset-paginated, oldest membership first (TOS-3280): an org-wide folder\ncan carry hundreds of members and this endpoint had no LIMIT at all.\n400 on a malformed cursor.","operationId":"list_members_api_folders__domain_ref__members_get","parameters":[{"name":"domain_ref","in":"path","required":true,"schema":{"type":"string","title":"Domain Ref"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":200,"minimum":1},{"type":"null"}],"default":200,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tool-name":"folder_member_list","x-mcp-action":"members_list"},"post":{"tags":["domains"],"summary":"Add Member","description":"Add a person, an agent or an organization to a folder. Admin-only.\n\nThe principal may be an ORGANIZATION (TOS-4113 Lane C). An organization is\nan identity whose id is its tenant id, so the row this writes needs no new\nshape, and ``services/access/domain_reach`` carries every active member of\nthat organization into this folder at the granted role.\n\nTwo conditions, and the second is the new one:\n\n* the caller is a direct ``admin`` of this folder, exactly as for a person;\n* when the principal is an organization, the caller either belongs to it or\n  it has opted into the directory. See :func:`_may_grant_to_organization`.\n\nThe second condition exists because an organization identity is\ndeliberately unfindable by ordinary means (migration 1066 mints it with\n``discoverable_by_username`` and ``discoverable_by_email`` both false), so\n\"anyone active\" (the rule for a person) would authorize handing a company\nthe contents of a folder by pasting a UUID, with no surface that could have\nshown the admin whose company it was. The two conditions are exactly the two\nways an organization can legitimately be on a caller's screen:\n``GET /api/me/organizations`` and the directory.","operationId":"add_member_api_folders__domain_ref__members_post","parameters":[{"name":"domain_ref","in":"path","required":true,"schema":{"type":"string","title":"Domain Ref"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddMemberRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tool-name":"folder_member_add","x-mcp-action":"members_add"}},"/api/folders/{domain_ref}/members/{member_id}":{"patch":{"tags":["domains"],"summary":"Change Member Role","description":"Change a member's role. Admin-only.","operationId":"change_member_role_api_folders__domain_ref__members__member_id__patch","parameters":[{"name":"domain_ref","in":"path","required":true,"schema":{"type":"string","title":"Domain Ref"}},{"name":"member_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Member Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeMemberRoleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tool-name":"folder_member_set_role","x-mcp-action":"members_set_role"},"delete":{"tags":["domains"],"summary":"Remove Member","description":"Remove a member. Admin-only, or self-remove.","operationId":"remove_member_api_folders__domain_ref__members__member_id__delete","parameters":[{"name":"domain_ref","in":"path","required":true,"schema":{"type":"string","title":"Domain Ref"}},{"name":"member_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Member Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tool-name":"folder_member_remove","x-mcp-action":"members_remove"}},"/api/folders/{domain_ref}/members/{member_id}/removal-impact":{"get":{"tags":["domains"],"summary":"Member Removal Impact","description":"Read only: what removing this member would leave in place (TOS-3760).\n\nSame authority as ``remove_member``: an admin, or the member leaving. 404\nunless the caller can open the folder, so a preview never reveals who holds\na folder the caller cannot see. Mutates nothing and revokes nothing: the\nresponse states what survives (other reach, credential and connection\ngrants) and what is pending (open runs, approvals), computed from existing\nrows with the membership excluded.","operationId":"member_removal_impact_api_folders__domain_ref__members__member_id__removal_impact_get","parameters":[{"name":"domain_ref","in":"path","required":true,"schema":{"type":"string","title":"Domain Ref"}},{"name":"member_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Member Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemovalImpactResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/folders/{domain_ref}/members/{member_id}/learning":{"patch":{"tags":["domains"],"summary":"Set Member Learning","description":"Flip a member's \"learns from this folder\" switch (TOS-6954).\n\nAdmin-only, or self - the design's explicit requirement that a member can\nturn their own learning on or off without needing an admin, mirroring\n``remove_member``'s self-or-admin rule. Applies to this folder and every\nsubfolder the member reaches through it; the reconciler runs synchronously\nso the response reflects the post-reconcile membership row.","operationId":"set_member_learning_api_folders__domain_ref__members__member_id__learning_patch","parameters":[{"name":"domain_ref","in":"path","required":true,"schema":{"type":"string","title":"Domain Ref"}},{"name":"member_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Member Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetMemberLearningRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-tool-name":"folder_member_set_learning","x-mcp-action":"members_set_learning"}},"/api/folders/items":{"get":{"tags":["folders","mcp_excluded"],"summary":"List Top Level Items","description":"The top level: every folder you can open whose parent you cannot.\n\nWith ``include_subfolders`` it lists every item of every kind in every\nfolder you can open.","operationId":"list_top_level_items_api_folders_items_get","parameters":[{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"enum":["folder","document","agent","skill","connection","license","environment","database"],"type":"string"}},{"type":"null"}],"title":"Kind"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Q"}},{"name":"tag","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tag"}},{"name":"include_subfolders","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Subfolders"}},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Sort"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderItemsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/{folder_id}/items":{"get":{"tags":["folders","mcp_excluded"],"summary":"List Folder Items Route","description":"One page of a folder's contents across every kind, folders first.\n\n``kind`` (repeatable) narrows to those kinds, ``q`` matches names and\ndocument tags (case-insensitive), ``tag`` (repeatable) keeps only\ndocuments carrying every given tag, ``include_subfolders`` widens to the folder's whole\nsubtree you can open. ``sort`` (repeatable, most significant first) is\n``field`` or ``field:asc|desc`` over name, type, modified, size and tags. ``total`` counts every match, not just this page;\npass ``next_cursor`` back as ``cursor`` for the next page.","operationId":"list_folder_items_route_api_folders__folder_id__items_get","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Folder Id"}},{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"enum":["folder","document","agent","skill","connection","license","environment","database"],"type":"string"}},{"type":"null"}],"title":"Kind"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Q"}},{"name":"tag","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tag"}},{"name":"include_subfolders","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Subfolders"}},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Sort"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderItemsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/{folder_id}/export.zip":{"get":{"tags":["folders","mcp_excluded"],"summary":"Export Folder Zip","description":"Download a folder, complete and re-importable (TOS-7350, TOS-7356).\n\nThe zip holds every document in the folder and its subfolders (its\nuploaded original, or its text when no original was kept; subfolders\nbecome directories) and ``thinqos-folder.json``, the manifest carrying the\nfolder's address, members and each document's metadata, plus the folder's\nskills, connections, agents and databases. Only what the folder listing\nwould show you is included, and a connection or database only when you\ncould download it on its own; the manifest names anything left out. 413\nwhen it all adds up to more than 200 MB.","operationId":"export_folder_zip_api_folders__folder_id__export_zip_get","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Folder Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/{folder_id}/shortcuts":{"post":{"tags":["folders","mcp_excluded"],"summary":"Add Shortcut Route","description":"Place an item that lives in another folder here, as a shortcut.\n\nNever a copy and never a grant: only people who can already see the\noriginal see the shortcut. You must be able to see the item and to add to\nthis folder. 201 when created, 200 when it was already here.","operationId":"add_shortcut_route_api_folders__folder_id__shortcuts_post","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Folder Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShortcutIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShortcutOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/{folder_id}/shortcuts/{kind}/{item_id}":{"delete":{"tags":["folders","mcp_excluded"],"summary":"Remove Shortcut Route","description":"Remove a shortcut from this folder. The original is not touched.","operationId":"remove_shortcut_route_api_folders__folder_id__shortcuts__kind___item_id__delete","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Folder Id"}},{"name":"kind","in":"path","required":true,"schema":{"enum":["document","agent","skill","connection","environment","database"],"type":"string","title":"Kind"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/{folder_id}/audience-change":{"get":{"tags":["folders","mcp_excluded"],"summary":"Item Move Audience Route","description":"Read only: who gains and who loses access if an item moves from here to ``to_folder_id``.\n\nNames people, organizations and agents whose own grants reach one folder\nand not the other. 404 unless you can open both folders.","operationId":"item_move_audience_route_api_folders__folder_id__audience_change_get","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Folder Id"}},{"name":"to_folder_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"To Folder Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudienceChangeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/{folder_id}/move-audience-change":{"get":{"tags":["folders","mcp_excluded"],"summary":"Folder Move Audience Route","description":"Read only: who gains and who loses access if this folder moves under ``parent_id``.\n\nOmit ``parent_id`` for the top level. 404 unless you can open both folders.","operationId":"folder_move_audience_route_api_folders__folder_id__move_audience_change_get","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Folder Id"}},{"name":"parent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudienceChangeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/import":{"post":{"tags":["folders","mcp_excluded"],"summary":"Import Folder","description":"Import a folder from a zip, a folder download or any zip of files (TOS-7356).\n\nCreates a new folder (inside ``parent_id`` when given, which needs admin\nthere) with the zip's subfolders, and uploads each document through the\nnormal upload pipeline; with a ``thinqos-folder.json`` manifest it restores\neach document's metadata, the members you are allowed to add, and the\nskills, connections and agents. Nothing it does widens anyone's access to\nanything that already existed. 413 for a zip over 200 MB (packed or\nunpacked) or with too many entries; 400 for a path that leaves the folder.","operationId":"import_folder_api_folders_import_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_import_folder_api_folders_import_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderImportOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/chat/completions":{"post":{"tags":["gateway"],"summary":"Chat Completions","description":"OpenAI-compatible chat completion (streaming + non-streaming).","operationId":"chat_completions_v1_chat_completions_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatCompletionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/{library_id_ref}/governance":{"get":{"tags":["governance"],"summary":"Get Folder Governance","description":"Return the full governance matrix for a folder.\n\nCaller must be an active member. Admins see all members; non-admins see\nonly their own access row in each capability's members list.","operationId":"get_library_governance_api_folders__library_id_ref__governance_get","parameters":[{"name":"library_id_ref","in":"path","required":true,"schema":{"type":"string","title":"Library Id Ref"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GovernanceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/{library_id_ref}/approvals":{"put":{"tags":["governance"],"summary":"Set Approval","description":"Set or clear an explicit approval decision for a (consuming_identity, artifact) pair.\n\nstate='pending' means DELETE the existing row (revert to trust_mode default).\nOtherwise UPSERT the artifact_approvals row with the given state.\n\nAuthorization (any of):\n- Caller is an active admin of the folder.\n- Caller is a human owner of the consuming identity.\n- Caller IS the consuming identity (human identities only -- agents cannot self-approve).","operationId":"set_approval_api_folders__library_id_ref__approvals_put","parameters":[{"name":"library_id_ref","in":"path","required":true,"schema":{"type":"string","title":"Library Id Ref"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetApprovalRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetApprovalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/a2a/{agent_id}/agent-card.json":{"get":{"tags":["a2a"],"summary":"Get Agent Card","description":"Public discovery document. No authentication - an Agent Card is a menu.","operationId":"get_agent_card_a2a__agent_id__agent_card_json_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Agent Card A2A  Agent Id  Agent Card Json Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/a2a/{agent_id}":{"post":{"tags":["a2a"],"summary":"Post Task","description":"The A2A JSON-RPC entry point for one agent.","operationId":"post_task_a2a__agent_id__post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"A2A-Version","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"A2A-Version"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/a2a/{agent_id}/mcp":{"post":{"tags":["agent-mcp"],"summary":"Agent Mcp","description":"Serve modern per-request MCP and the existing handshake revisions.","operationId":"agent_mcp_a2a__agent_id__mcp_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["agent-mcp"],"summary":"Agent Mcp Get","description":"No server-push stream is offered; the transport spec says answer 405.","operationId":"agent_mcp_get_a2a__agent_id__mcp_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["agent-mcp"],"summary":"Agent Mcp Delete","description":"Stateless transport: there is no session to delete.","operationId":"agent_mcp_delete_a2a__agent_id__mcp_delete","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/agents/{agent_id}/mcp":{"post":{"tags":["agent-mcp"],"summary":"Agent Mcp","description":"Serve modern per-request MCP and the existing handshake revisions.","operationId":"agent_mcp_agents__agent_id__mcp_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["agent-mcp"],"summary":"Agent Mcp Get","description":"No server-push stream is offered; the transport spec says answer 405.","operationId":"agent_mcp_get_agents__agent_id__mcp_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["agent-mcp"],"summary":"Agent Mcp Delete","description":"Stateless transport: there is no session to delete.","operationId":"agent_mcp_delete_agents__agent_id__mcp_delete","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/knowledge/{target_identity_id}":{"get":{"tags":["knowledge-dossier"],"summary":"Get Knowledge","description":"Assemble and return the knowledge dossier for *target_identity_id*.\n\nThe viewer is the authenticated identity.  Synthesis (LLM summary) runs\nonly when an Anthropic key is configured; the ``summary`` field may be\n``null`` in dev/test environments.","operationId":"get_knowledge_api_me_knowledge__target_identity_id__get","parameters":[{"name":"target_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Target Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DossierOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/knowledge/{target_identity_id}/facts/{record_id}/forget":{"post":{"tags":["knowledge-dossier"],"summary":"Forget Fact","description":"Archive a single user_facts record so it no longer appears in the dossier.\n\nAuthorization: the record's KB must belong to one of the viewer's owned\nagents.  Returns 404 for missing, already-archived, or unowned records\n(no information leak about records the viewer cannot access).","operationId":"forget_fact_api_me_knowledge__target_identity_id__facts__record_id__forget_post","parameters":[{"name":"target_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Target Identity Id"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Record Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/record-of-me":{"get":{"tags":["subject-access"],"summary":"Get Record Of Me","description":"What thinqOS holds about the caller.","operationId":"get_record_of_me_api_me_record_of_me_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordOfMeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/record-of-me/{record_id}/dispute":{"post":{"tags":["subject-access"],"summary":"Dispute Record","description":"Contest a record about the caller.\n\n404 for a record that does not exist AND for one the caller is not the\nsubject of: the two must be indistinguishable, or this becomes a way to ask\nwhether a given record exists.","operationId":"dispute_record_api_me_record_of_me__record_id__dispute_post","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Record Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DisputeIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DisputeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/record-of-me/disputes/{dispute_id}/resolve":{"post":{"tags":["subject-access"],"summary":"Resolve Record Dispute","description":"Resolve a dispute against a record held in one of the caller's agents' stores.","operationId":"resolve_record_dispute_api_me_record_of_me_disputes__dispute_id__resolve_post","parameters":[{"name":"dispute_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Dispute Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/thinqos__api__record_of_me__ResolveIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DisputeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/uploads/bulk-init":{"post":{"tags":["domains"],"summary":"Bulk Init","description":"Create a bulk-upload job and return per-file PUT URLs.","operationId":"bulk_init_api_folders_uploads_bulk_init_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkInitRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkInitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/uploads/bulk/{job_id}/files/{file_id}":{"put":{"tags":["domains"],"summary":"Upload Bulk File","description":"Stash bytes for a single file row, marking the row `uploaded`.\n\nStreams the body, refusing anything larger than `MAX_BULK_FILE_BYTES`.\nReturns 404 if the row doesn't belong to the caller, 409 if the job\nis terminal, or the row is past `pending`.","operationId":"upload_bulk_file_api_folders_uploads_bulk__job_id__files__file_id__put","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Job Id"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"File Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Upload Bulk File Api Folders Uploads Bulk  Job Id  Files  File Id  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/uploads/bulk/{job_id}":{"get":{"tags":["domains"],"summary":"Get Bulk Status","description":"Poll status for a bulk-upload job.","operationId":"get_bulk_status_api_folders_uploads_bulk__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Job Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkJobStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/uploads/bulk/{job_id}/cancel":{"post":{"tags":["domains"],"summary":"Cancel Bulk Job","description":"Mark a job cancelled. The drain skips any not-yet-claimed rows.","operationId":"cancel_bulk_job_api_folders_uploads_bulk__job_id__cancel_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Job Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ns/context.jsonld":{"get":{"tags":["linked-data"],"summary":"Get Context","description":"Serve the published thinqOS ``@context`` as ``application/ld+json``.\n\nThe document is immutable per version: consumers pin\n``/ns/context.jsonld?v={version}`` and the long-lived public cache is safe\nbecause any shape change bumps ``TQO_CONTEXT_VERSION``.","operationId":"get_context_ns_context_jsonld_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/jobs":{"get":{"tags":["admin-scheduler"],"summary":"Get Jobs Status","description":"Every scheduled job and sweep, with health, placement, overrides and a\n7-day found-work rate - the R8 console reads this one payload.","operationId":"get_jobs_status_api_admin_jobs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobsStatusResponse"}}}}}}},"/api/admin/jobs/{job_id}/runs":{"get":{"tags":["admin-scheduler"],"summary":"Get Job Runs","description":"Return recent runs for a specific job.","operationId":"get_job_runs_api_admin_jobs__job_id__runs_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobRunsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/jobs/{job_id}/run-now":{"post":{"tags":["admin-scheduler"],"summary":"Run Job Now","description":"Manually trigger a job. Returns 202 immediately; job runs in background thread.","operationId":"run_job_now_api_admin_jobs__job_id__run_now_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunNowResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/jobs/{job_id}/settings":{"get":{"tags":["admin-scheduler"],"summary":"Get Job Settings","description":"The current override row for one job or sweep, or all-NULL columns if\nnone has ever been set - never 404 for a known job/sweep with no row.","operationId":"get_job_settings_api_admin_jobs__job_id__settings_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["admin-scheduler"],"summary":"Patch Job Settings","description":"Apply a partial override to one job's or sweep's schedule (TOS-5088 R7).\n\nOnly fields present in the request body are touched (see\n``JobSettingsPatch``); every one of those is validated against\n``assert_field_is_overridable`` before anything is written, so a request\nthat patches an un-overridable field for this job id fails as a whole,\nnever partially.","operationId":"patch_job_settings_api_admin_jobs__job_id__settings_patch","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobSettingsPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-scheduler"],"summary":"Reset Job Settings","description":"Remove every override for one job or sweep - full revert to the\nregistry default, the \"reset\" half of R7.","operationId":"reset_job_settings_api_admin_jobs__job_id__settings_delete","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingest/external/v1":{"post":{"tags":["ingest"],"summary":"Ingest External V1","description":"Ingest a batch of external sessions.\n\nThe outer envelope is validated strictly but each session inside\n``sessions[]`` is validated independently inside the service so a\nsingle malformed session does not abort the whole batch.\n\nPass ``?bulk=true`` for a historical-import (TOS-262): each newly-\ncreated chat is auto-archived for the owner so the import doesn't\nflood the live sidebar. Default ``False`` is live capture.\n\nReturns 410 Gone if the source has been disabled for this identity.","operationId":"ingest_external_v1_api_ingest_external_v1_post","parameters":[{"name":"bulk","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Bulk"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"x-client-version","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Client-Version"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload Raw"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestResultV1"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingest/external/v2":{"post":{"tags":["ingest"],"summary":"Ingest External V2","description":"Apply conditional capture-v2 session updates with partial receipts.","operationId":"ingest_external_v2_api_ingest_external_v2_post","parameters":[{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"x-client-version","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Client-Version"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureResultV2"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingest/contract":{"get":{"tags":["ingest"],"summary":"Get Contract","operationId":"get_contract_api_ingest_contract_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContractInfo"}}}}}}},"/api/ingest/external/v1/sessions":{"get":{"tags":["ingest"],"summary":"List External Sessions","operationId":"list_external_sessions_api_ingest_external_v1_sessions_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Before"}},{"name":"before_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Before Id"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},{"name":"order","in":"query","required":false,"schema":{"enum":["started_at","captured_at"],"type":"string","default":"started_at","title":"Order"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestSessionListV1"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["ingest"],"summary":"Bulk Delete External Sessions","description":"Delete sessions for a given source.\n\n``source`` query param is required - a bulk delete without a source\nfilter is not permitted (returns 400). When ``older_than_days`` is set,\nonly sessions whose ``started_at`` is older than that many days are\ndeleted (used by the one-time capture-retention cleanup).","operationId":"bulk_delete_external_sessions_api_ingest_external_v1_sessions_delete","parameters":[{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},{"name":"older_than_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":3650,"minimum":1},{"type":"null"}],"title":"Older Than Days"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDeleteResultV1"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingest/external/v1/test-capture":{"post":{"tags":["ingest"],"summary":"Post Test Capture","description":"Synthesize + ingest a 2-turn session for the caller.\n\nUsed by the *Send Test Capture* button on the Connected Integrations card to\nprove the full ingest -> chat -> extraction pipeline without needing\na real Claude Code session running. Returns the new chat's id so the\nUI can navigate straight to its detail page.","operationId":"post_test_capture_api_ingest_external_v1_test_capture_post","parameters":[{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestCaptureResultV1"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingest/external/v1/sessions/{source}/{source_external_id}":{"get":{"tags":["ingest"],"summary":"Get External Session","description":"Return one captured session + its messages, owner-scoped.\n\nPowers the source/session detail pages added in TOS-256 PR-1 Phase 5.\nAuthorization is by ``started_by == identity_id`` - a session belonging\nto another identity returns 404 (not 403) so existence can't be probed.","operationId":"get_external_session_api_ingest_external_v1_sessions__source___source_external_id__get","parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"source_external_id","in":"path","required":true,"schema":{"type":"string","title":"Source External Id"}},{"name":"instance_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instance Id"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestSessionDetailV1"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["ingest"],"summary":"Delete External Session","operationId":"delete_external_session_api_ingest_external_v1_sessions__source___source_external_id__delete","parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"source_external_id","in":"path","required":true,"schema":{"type":"string","title":"Source External Id"}},{"name":"instance_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instance Id"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingest/external/v1/sessions/{source}/{source_external_id}/reextract":{"post":{"tags":["ingest"],"summary":"Reextract External Session","description":"Re-run cognitive_v2 extraction for one captured session.\n\nSynchronous: resets the chat's ``episodes_v2`` rows + tombstones any\nexisting ``cognitive_events`` for the chat, then replays extraction over\nthe owner's utterances. Returns the count of new ASSERT_PROPOSITION\nevents emitted (some windows may produce zero propositions if the\nextractor finds nothing keyable).","operationId":"reextract_external_session_api_ingest_external_v1_sessions__source___source_external_id__reextract_post","parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"source_external_id","in":"path","required":true,"schema":{"type":"string","title":"Source External Id"}},{"name":"instance_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instance Id"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReextractResultV1"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingest/external/v1/sources":{"get":{"tags":["ingest"],"summary":"Get Source States","description":"List all known ingest sources for this identity with their state.\n\nReturns sources with episode counts and blocked status. Includes sources\nthat have been blocked with zero captures so the UI can show them.","operationId":"get_source_states_api_ingest_external_v1_sources_get","parameters":[{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestSourceStateListV1"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingest/external/v1/sources/{source}/state":{"put":{"tags":["ingest"],"summary":"Put Source State","description":"Enable or disable a source for this identity.\n\nIdempotent - safe to call when already in the target state.\nBody: ``{\"blocked\": bool}``.","operationId":"put_source_state_api_ingest_external_v1_sources__source__state_put","parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceStateUpdateV1"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestSourceStateV1"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/install/brand/mark":{"get":{"tags":["install-brand"],"summary":"Get Install Brand Mark","operationId":"get_install_brand_mark_api_install_brand_mark_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/install/brand/favicon":{"get":{"tags":["install-brand"],"summary":"Get Install Brand Favicon","operationId":"get_install_brand_favicon_api_install_brand_favicon_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/site.webmanifest":{"get":{"tags":["install-brand"],"summary":"Get Site Manifest","operationId":"get_site_manifest_site_webmanifest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/ingest/connections":{"post":{"tags":["capture-connections"],"summary":"Register Connection","operationId":"register_connection_api_ingest_connections_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionRegisterRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/thinqos__api__capture_connections__ConnectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["capture-connections"],"summary":"List Connections","operationId":"list_connections_api_ingest_connections_get","parameters":[{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/thinqos__api__capture_connections__ConnectionResponse"},"title":"Response List Connections Api Ingest Connections Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingest/connections/{connection_id}":{"get":{"tags":["capture-connections"],"summary":"Get Connection","description":"One owned connection by id (TOS-2215: Integrations Capture detail UI).\n\nScoped the same way as the list/patch/delete routes: only the owning\nidentity can read it, and a revoked connection 404s like it never existed.","operationId":"get_connection_api_ingest_connections__connection_id__get","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connection Id"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/thinqos__api__capture_connections__ConnectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["capture-connections"],"summary":"Disconnect","operationId":"disconnect_api_ingest_connections__connection_id__delete","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connection Id"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["capture-connections"],"summary":"Update Disposition","operationId":"update_disposition_api_ingest_connections__connection_id__patch","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connection Id"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionDispositionUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/thinqos__api__capture_connections__ConnectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agency-org-proxies":{"post":{"tags":["agency-org-proxies"],"summary":"Ensure Proxy","description":"Find-or-create the single proxy agent for an Agency org.\n\nTOS-6492 review r2 (P3): the org triple is validated against a REGISTERED\ncapture connection before anything is created. The ticket's \"whoever\nconnects first creates it\" applies to whoever connects - i.e. someone\nwhose identity already holds a capture connection for this\n(source, instance, org) - not to any caller naming an arbitrary triple.\nWithout that check any user could mint a permanent, owner-less, globally\nlisted persona named like a real org, and the link-first prompt would echo\nthe attacker's chosen label as first-party consent text. A typo'd org\ntriple is NOT self-service recoverable: the unique index plus ``ON DELETE\nRESTRICT`` make the row permanent by design, so recovery is an admin\naction (a platform admin deletes the stray ``agency_org_proxy_agents`` row\nand its unowned proxy Identity directly), matching how other\nunowned-identity mistakes are corrected today.","operationId":"ensure_proxy_api_agency_org_proxies_post","parameters":[{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProxyEnsureRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProxyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["agency-org-proxies"],"summary":"List Proxies","description":"The org proxies THIS caller can see, and nobody else's.\n\nTOS-6492 review r2 (P2, blocking): the shared multi-tenant install must\nnot hand one customer's Agency org metadata (client org names, external\norg ids, instance names) to every authenticated caller. Scoped to the two\nrelationships that make a proxy relevant to the caller: orgs under capture\nconnections they hold, and orgs they have personally linked. One query,\nnot 1 + N: join the proxy agent's Identity in the same statement (TOS-4367\nround-trip rule).","operationId":"list_proxies_api_agency_org_proxies_get","parameters":[{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProxyResponse"},"title":"Response List Proxies Api Agency Org Proxies Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agency-org-proxies/for-agent/{agent_id}":{"get":{"tags":["agency-org-proxies"],"summary":"Proxy For Agent","description":"The Agency org behind an agent, for a person who may talk to that agent.\n\nTOS-3371 final phase A: the Slack reply to a person with no Agency link\npoints at the agent's page with ``?connect=agency``, and that page needs\nthe proxy to show the connect card. Only someone who can already reach the\nagent learns which org it speaks for, which they are told in Slack anyway.","operationId":"proxy_for_agent_api_agency_org_proxies_for_agent__agent_id__get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentProxyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agency-org-proxies/{proxy_id}/link":{"post":{"tags":["agency-org-proxies"],"summary":"Link Account","description":"Record the caller's own per-person link to this org's proxy agent.","operationId":"link_account_api_agency_org_proxies__proxy_id__link_post","parameters":[{"name":"proxy_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Proxy Id"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["agency-org-proxies"],"summary":"Revoke Link","description":"Revoke the caller's own link. The outbound bridge stops immediately.","operationId":"revoke_link_api_agency_org_proxies__proxy_id__link_delete","parameters":[{"name":"proxy_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Proxy Id"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agency-org-proxies/{proxy_id}/link-options":{"get":{"tags":["agency-org-proxies"],"summary":"List Link Options","description":"Show only exact Platform OAuth registrations for this Agency environment.\n\nThe option is a selector, not authorization. A connected badge alone is\ninsufficient: ``can_link`` requires the same authenticated person/org\nproof as POST. When one person has bound the agent, everyone else must\nuse that same per-caller registration rather than a second credential.","operationId":"list_link_options_api_agency_org_proxies__proxy_id__link_options_get","parameters":[{"name":"proxy_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Proxy Id"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LinkOption"},"title":"Response List Link Options Api Agency Org Proxies  Proxy Id  Link Options Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agency-org-proxies/links":{"get":{"tags":["agency-org-proxies"],"summary":"List My Links","operationId":"list_my_links_api_agency_org_proxies_links_get","parameters":[{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LinkResponse"},"title":"Response List My Links Api Agency Org Proxies Links Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingest/connect-targets":{"post":{"tags":["capture-connections"],"summary":"Submit Connect Target Registration","operationId":"submit_connect_target_registration_api_ingest_connect_targets_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-ingest-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ingest-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectTargetRegistrationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistrationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/capture-connect-targets":{"get":{"tags":["admin-capture-connect-targets"],"summary":"List Connect Target Registrations","operationId":"list_connect_target_registrations_api_admin_capture_connect_targets_get","parameters":[{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RegistrationResponse"},"title":"Response List Connect Target Registrations Api Admin Capture Connect Targets Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/capture-connect-targets/{registration_id}/approve":{"post":{"tags":["admin-capture-connect-targets"],"summary":"Approve Connect Target Registration","operationId":"approve_connect_target_registration_api_admin_capture_connect_targets__registration_id__approve_post","parameters":[{"name":"registration_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Registration Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistrationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/capture-connect-targets/{registration_id}/reject":{"post":{"tags":["admin-capture-connect-targets"],"summary":"Reject Connect Target Registration","operationId":"reject_connect_target_registration_api_admin_capture_connect_targets__registration_id__reject_post","parameters":[{"name":"registration_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Registration Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistrationRejectRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistrationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingest/connections/{connection_id}/disposition-jobs":{"get":{"tags":["capture-disposition-jobs"],"summary":"List Disposition Jobs","description":"Recover recent job progress after settings-page reloads.","operationId":"list_disposition_jobs_api_ingest_connections__connection_id__disposition_jobs_get","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connection Id"}},{"name":"rule","in":"query","required":false,"schema":{"anyOf":[{"enum":["mark-existing-read","archive-existing"],"type":"string"},{"type":"null"}],"title":"Rule"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureDispositionJobListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingest/connections/{connection_id}/disposition-jobs/preview":{"post":{"tags":["capture-disposition-jobs"],"summary":"Create Disposition Preview","description":"Freeze an exact work-item snapshot without starting the worker.","operationId":"create_disposition_preview_api_ingest_connections__connection_id__disposition_jobs_preview_post","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connection Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureDispositionPreviewRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureDispositionJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingest/connections/{connection_id}/disposition-jobs/{job_id}":{"get":{"tags":["capture-disposition-jobs"],"summary":"Get Disposition Job","operationId":"get_disposition_job_api_ingest_connections__connection_id__disposition_jobs__job_id__get","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connection Id"}},{"name":"job_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Job Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureDispositionJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingest/connections/{connection_id}/disposition-jobs/{job_id}/start":{"post":{"tags":["capture-disposition-jobs"],"summary":"Start Disposition Job","operationId":"start_disposition_job_api_ingest_connections__connection_id__disposition_jobs__job_id__start_post","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connection Id"}},{"name":"job_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Job Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureDispositionJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingest/connections/{connection_id}/disposition-jobs/{job_id}/retry":{"post":{"tags":["capture-disposition-jobs"],"summary":"Retry Disposition Job","operationId":"retry_disposition_job_api_ingest_connections__connection_id__disposition_jobs__job_id__retry_post","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connection Id"}},{"name":"job_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Job Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureDispositionRetryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/capture-disposition-jobs/sources":{"get":{"tags":["capture-disposition-jobs"],"summary":"List Source Disposition Jobs","description":"Recover recent job progress for one owned unbound capture source.","operationId":"list_source_disposition_jobs_api_capture_disposition_jobs_sources_get","parameters":[{"name":"source","in":"query","required":true,"schema":{"type":"string","title":"Source"}},{"name":"rule","in":"query","required":false,"schema":{"anyOf":[{"enum":["mark-existing-read","archive-existing"],"type":"string"},{"type":"null"}],"title":"Rule"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureDispositionJobListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/capture-disposition-jobs/sources/preview":{"post":{"tags":["capture-disposition-jobs"],"summary":"Create Source Disposition Preview","operationId":"create_source_disposition_preview_api_capture_disposition_jobs_sources_preview_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceCaptureDispositionPreviewRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureDispositionJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/capture-disposition-jobs/sources/{job_id}":{"get":{"tags":["capture-disposition-jobs"],"summary":"Get Source Disposition Job","operationId":"get_source_disposition_job_api_capture_disposition_jobs_sources__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Job Id"}},{"name":"source","in":"query","required":true,"schema":{"type":"string","title":"Source"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureDispositionJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/capture-disposition-jobs/sources/{job_id}/start":{"post":{"tags":["capture-disposition-jobs"],"summary":"Start Source Disposition Job","operationId":"start_source_disposition_job_api_capture_disposition_jobs_sources__job_id__start_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Job Id"}},{"name":"source","in":"query","required":true,"schema":{"type":"string","title":"Source"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureDispositionJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/capture-disposition-jobs/sources/{job_id}/retry":{"post":{"tags":["capture-disposition-jobs"],"summary":"Retry Source Disposition Job","operationId":"retry_source_disposition_job_api_capture_disposition_jobs_sources__job_id__retry_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Job Id"}},{"name":"source","in":"query","required":true,"schema":{"type":"string","title":"Source"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureDispositionRetryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/bypass-tokens":{"get":{"tags":["admin-bypass-tokens"],"summary":"List Tokens","operationId":"list_tokens_api_admin_bypass_tokens_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/TokenSummary"},"type":"array","title":"Response List Tokens Api Admin Bypass Tokens Get"}}}}}},"post":{"tags":["admin-bypass-tokens"],"summary":"Issue Token","operationId":"issue_token_api_admin_bypass_tokens_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/bypass-tokens/master-status":{"get":{"tags":["admin-bypass-tokens"],"summary":"Master Status","description":"Whether BYPASS_MASTER_TOKEN + BYPASS_MASTER_EMAIL are set on this env.","operationId":"master_status_api_admin_bypass_tokens_master_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MasterStatus"}}}}}}},"/api/admin/bypass-tokens/{token_id}":{"delete":{"tags":["admin-bypass-tokens"],"summary":"Revoke Token","operationId":"revoke_token_api_admin_bypass_tokens__token_id__delete","parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"integer","title":"Token Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/access-requests":{"get":{"tags":["admin-access-requests"],"summary":"List Access Requests","operationId":"list_access_requests_api_admin_access_requests_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"enum":["pending","approved","declined","invited","accepted"],"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequestPage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/access-requests/{request_id}/note":{"patch":{"tags":["admin-access-requests"],"summary":"Update Internal Note","operationId":"update_internal_note_api_admin_access_requests__request_id__note_patch","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalNoteUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequestOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/access-requests/{request_id}/approve":{"post":{"tags":["admin-access-requests"],"summary":"Approve","operationId":"approve_api_admin_access_requests__request_id__approve_post","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequestOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/access-requests/{request_id}/decline":{"post":{"tags":["admin-access-requests"],"summary":"Decline","operationId":"decline_api_admin_access_requests__request_id__decline_post","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequestOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/access-requests/{request_id}/resend":{"post":{"tags":["admin-access-requests"],"summary":"Resend","operationId":"resend_api_admin_access_requests__request_id__resend_post","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequestOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/access-requests/enforcement":{"get":{"tags":["admin-access-requests"],"summary":"Get Enforcement Status","operationId":"get_enforcement_status_api_admin_access_requests_enforcement_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnforcementOut"}}}}}}},"/api/admin/access-requests/enforcement/enable":{"post":{"tags":["admin-access-requests"],"summary":"Enable Enforcement","operationId":"enable_enforcement_api_admin_access_requests_enforcement_enable_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnforcementOut"}}}}}}},"/api/admin/access-requests/enforcement/disable":{"post":{"tags":["admin-access-requests"],"summary":"Disable Enforcement","operationId":"disable_enforcement_api_admin_access_requests_enforcement_disable_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnforcementOut"}}}}}}},"/api/admin/pending-counts":{"get":{"tags":["admin-pending-counts"],"summary":"Pending Counts","operationId":"pending_counts_api_admin_pending_counts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PendingCountsOut"}}}}}}},"/api/admin/updates":{"get":{"tags":["admin-updates"],"summary":"Get Updates","operationId":"get_updates_api_admin_updates_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatesOverview"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/updates/policy":{"put":{"tags":["admin-updates"],"summary":"Put Update Policy","operationId":"put_update_policy_api_admin_updates_policy_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePolicyUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePolicyView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/updates/check":{"post":{"tags":["admin-updates"],"summary":"Request Update Check","operationId":"request_update_check_api_admin_updates_check_post","responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateActionResult"}}}}}}},"/api/admin/updates/install":{"post":{"tags":["admin-updates"],"summary":"Request Update Install","operationId":"request_update_install_api_admin_updates_install_post","responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateActionResult"}}}}}}},"/api/admin/updates/activation/activate":{"post":{"tags":["admin-updates"],"summary":"Activate Now","description":"Online activation now. Failures land in ``last_error`` and\n``service_state`` on the returned object rather than as an HTTP error, so\nthe page shows the same state it would show on its next load.","operationId":"activate_now_api_admin_updates_activation_activate_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivationView"}}}}}}},"/api/admin/updates/activation/request-file":{"get":{"tags":["admin-updates"],"summary":"Activation Request File","operationId":"activation_request_file_api_admin_updates_activation_request_file_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/updates/activation/certificate":{"post":{"tags":["admin-updates"],"summary":"Import Activation Certificate","description":"Import an offline certificate file. 422 with a plain reason when it is\nnot signed by the pinned activation authority, is bound to another\ninstallation key, or has expired.","operationId":"import_activation_certificate_api_admin_updates_activation_certificate_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Document"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivationView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/appearance":{"get":{"tags":["admin-appearance"],"summary":"Get Admin Appearance","operationId":"get_admin_appearance_api_admin_appearance_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Admin Appearance Api Admin Appearance Get"}}}}}},"patch":{"tags":["admin-appearance"],"summary":"Patch Admin Appearance","operationId":"patch_admin_appearance_api_admin_appearance_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppearanceDefaultUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Patch Admin Appearance Api Admin Appearance Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/decision-digest":{"get":{"tags":["admin-decision-digest"],"summary":"Get Decision Digest Default","operationId":"get_decision_digest_default_api_admin_decision_digest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Decision Digest Default Api Admin Decision Digest Get"}}}}}},"patch":{"tags":["admin-decision-digest"],"summary":"Patch Decision Digest Default","operationId":"patch_decision_digest_default_api_admin_decision_digest_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecisionDigestDefaultUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Patch Decision Digest Default Api Admin Decision Digest Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/branding":{"get":{"tags":["admin-branding"],"summary":"Get Admin Branding","operationId":"get_admin_branding_api_admin_branding_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Admin Branding Api Admin Branding Get"}}}}}},"put":{"tags":["admin-branding"],"summary":"Put Admin Branding","operationId":"put_admin_branding_api_admin_branding_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandingUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Put Admin Branding Api Admin Branding Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-branding"],"summary":"Delete Admin Branding","operationId":"delete_admin_branding_api_admin_branding_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Delete Admin Branding Api Admin Branding Delete"}}}}}}},"/api/admin/branding/mark":{"post":{"tags":["admin-branding"],"summary":"Post Admin Branding Mark","operationId":"post_admin_branding_mark_api_admin_branding_mark_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_post_admin_branding_mark_api_admin_branding_mark_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Post Admin Branding Mark Api Admin Branding Mark Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-branding"],"summary":"Delete Admin Branding Mark","operationId":"delete_admin_branding_mark_api_admin_branding_mark_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Delete Admin Branding Mark Api Admin Branding Mark Delete"}}}}}}},"/api/admin/branding/favicon":{"post":{"tags":["admin-branding"],"summary":"Post Admin Branding Favicon","operationId":"post_admin_branding_favicon_api_admin_branding_favicon_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_post_admin_branding_favicon_api_admin_branding_favicon_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Post Admin Branding Favicon Api Admin Branding Favicon Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-branding"],"summary":"Delete Admin Branding Favicon","operationId":"delete_admin_branding_favicon_api_admin_branding_favicon_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Delete Admin Branding Favicon Api Admin Branding Favicon Delete"}}}}}}},"/api/admin/navigation":{"get":{"tags":["admin-navigation"],"summary":"Get Admin Navigation","operationId":"get_admin_navigation_api_admin_navigation_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Admin Navigation Api Admin Navigation Get"}}}}}},"put":{"tags":["admin-navigation"],"summary":"Put Admin Navigation","operationId":"put_admin_navigation_api_admin_navigation_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NavigationUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Put Admin Navigation Api Admin Navigation Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/navigation/agency/{proxy_id}/setup":{"get":{"tags":["admin-navigation"],"summary":"Get Agency Browser Setup","operationId":"get_agency_browser_setup_api_admin_navigation_agency__proxy_id__setup_get","parameters":[{"name":"proxy_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Proxy Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"integer"},"title":"Response Get Agency Browser Setup Api Admin Navigation Agency  Proxy Id  Setup Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/navigation":{"get":{"tags":["navigation"],"summary":"Get Navigation","operationId":"get_navigation_api_navigation_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Navigation Api Navigation Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/navigation/{item_id}/open":{"post":{"tags":["navigation"],"summary":"Open Pinned Agent","operationId":"open_pinned_agent_api_navigation__item_id__open_post","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Open Pinned Agent Api Navigation  Item Id  Open Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/navigation/{item_id}/launch":{"post":{"tags":["navigation"],"summary":"Launch Web Page","operationId":"launch_web_page_api_navigation__item_id__launch_post","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserLaunchBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Launch Web Page Api Navigation  Item Id  Launch Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/navigation/{item_id}/renew":{"post":{"tags":["navigation"],"summary":"Renew Web Page","operationId":"renew_web_page_api_navigation__item_id__renew_post","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserLifecycleBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Renew Web Page Api Navigation  Item Id  Renew Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/navigation/{item_id}/revoke":{"post":{"tags":["navigation"],"summary":"Revoke Web Page","operationId":"revoke_web_page_api_navigation__item_id__revoke_post","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserLifecycleBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Revoke Web Page Api Navigation  Item Id  Revoke Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/navigation/{item_id}/authorize":{"post":{"tags":["navigation"],"summary":"Authorize Web Page","operationId":"authorize_web_page_api_navigation__item_id__authorize_post","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Authorize Web Page Api Navigation  Item Id  Authorize Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/admin/test-runner-targets":{"get":{"tags":["admin-test-runner-targets"],"summary":"List Targets","operationId":"list_targets_api_admin_test_runner_targets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/TargetView"},"type":"array","title":"Response List Targets Api Admin Test Runner Targets Get"}}}}}},"post":{"tags":["admin-test-runner-targets"],"summary":"Create Target","operationId":"create_target_api_admin_test_runner_targets_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TargetCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TargetView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/test-runner-targets/{target_id}":{"patch":{"tags":["admin-test-runner-targets"],"summary":"Update Target","operationId":"update_target_api_admin_test_runner_targets__target_id__patch","parameters":[{"name":"target_id","in":"path","required":true,"schema":{"type":"string","title":"Target Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TargetUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TargetView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-test-runner-targets"],"summary":"Delete Target","operationId":"delete_target_api_admin_test_runner_targets__target_id__delete","parameters":[{"name":"target_id","in":"path","required":true,"schema":{"type":"string","title":"Target Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/turn-replays/{source_message_id}":{"post":{"tags":["admin","turn-replays"],"summary":"Replay Turn","description":"Replay one visible historical turn through the production interactive path.\n\nThe endpoint intentionally runs exactly one turn. A cohort driver invokes it\nrepeatedly so each sample has its own Cloud Run request and trace root; a\nlong serial batch inside one request would exceed the request deadline and\nwould make per-sample infrastructure overhead impossible to reconcile.","operationId":"replay_turn_api_admin_turn_replays__source_message_id__post","parameters":[{"name":"source_message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Source Message Id"}},{"name":"X-Request-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Request-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplayTurnRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplayTurnResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/routing-hints":{"get":{"tags":["admin-routing-hints"],"summary":"List Routing Hints","description":"List routing hints, optionally filtered by ``source`` ('admin' |\n'learned'), ``state`` ('shadow' | 'published'), or the scoping\n``identity_id``.","operationId":"list_routing_hints_api_admin_routing_hints_get","parameters":[{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Identity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RoutingHintOut"},"title":"Response List Routing Hints Api Admin Routing Hints Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/routing-hints/{hint_id}":{"delete":{"tags":["admin-routing-hints"],"summary":"Delete Routing Hint","operationId":"delete_routing_hint_api_admin_routing_hints__hint_id__delete","parameters":[{"name":"hint_id","in":"path","required":true,"schema":{"type":"string","title":"Hint Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/routing-hints/batches":{"get":{"tags":["admin-routing-hints"],"summary":"List Routing Hint Batches","description":"Every learn-job run with its selection-eval-gate verdict - the\nevidence a publish decision is based on.","operationId":"list_routing_hint_batches_api_admin_routing_hints_batches_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/RoutingHintBatchOut"},"type":"array","title":"Response List Routing Hint Batches Api Admin Routing Hints Batches Get"}}}}}}},"/api/admin/routing-hints/batches/{batch_id}/publish":{"post":{"tags":["admin-routing-hints"],"summary":"Publish Routing Hint Batch","description":"Flip a batch's SHADOW learned hints to PUBLISHED (live routing) -\nrefuses (0 published) if the batch's eval did not pass. The explicit,\nhuman go-live decision TOS-1086 2.4 requires; never called automatically.","operationId":"publish_routing_hint_batch_api_admin_routing_hints_batches__batch_id__publish_post","parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/mind-regression/runs":{"post":{"tags":["admin","mind-regression"],"summary":"Start Runs","operationId":"start_runs_api_admin_mind_regression_runs_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartRunsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartRunsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["admin","mind-regression"],"summary":"List Runs","operationId":"list_runs_api_admin_mind_regression_runs_get","parameters":[{"name":"trigger","in":"query","required":false,"schema":{"anyOf":[{"enum":["scheduled","admin","action"],"type":"string"},{"type":"null"}],"title":"Trigger"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":1,"default":1,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvocationsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/mind-regression/runs/{invocation_id}":{"get":{"tags":["admin","mind-regression"],"summary":"Get Run","operationId":"get_run_api_admin_mind_regression_runs__invocation_id__get","parameters":[{"name":"invocation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Invocation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Run Api Admin Mind Regression Runs  Invocation Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/agents/{agent_id}/global":{"patch":{"tags":["admin-agents"],"summary":"Set Agent Global","description":"Mark an agent global (visible to all users) or revert it. Admin only.\n\nUnsetting does NOT archive chats already started against the agent - it\nonly removes the agent from pickers for users without a controller row.","operationId":"set_agent_global_api_admin_agents__agent_id__global_patch","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetGlobalIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentGlobalOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/clerk/audit":{"get":{"tags":["admin-clerk"],"summary":"Clerk Audit","operationId":"clerk_audit_api_admin_clerk_audit_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Clerk Audit Api Admin Clerk Audit Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/health/sentry/issues":{"get":{"tags":["admin-health"],"summary":"List Sentry Issues","operationId":"list_sentry_issues_api_admin_health_sentry_issues_get","parameters":[{"name":"query","in":"query","required":false,"schema":{"type":"string","default":"is:unresolved","title":"Query"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":25,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SentryIssuesPageOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/health/sentry/alerts":{"get":{"tags":["admin-health"],"summary":"List Sentry Alerts","operationId":"list_sentry_alerts_api_admin_health_sentry_alerts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SentryAlertsResponse"}}}}}}},"/api/admin/health/sentry/issues/{issue_id}":{"post":{"tags":["admin-health"],"summary":"Update Sentry Issue","operationId":"update_sentry_issue_api_admin_health_sentry_issues__issue_id__post","parameters":[{"name":"issue_id","in":"path","required":true,"schema":{"type":"string","title":"Issue Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SentryIssueUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SentryIssueUpdateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/health/mind-context/coverage":{"get":{"tags":["admin-health"],"summary":"List Mind Context Coverage","operationId":"list_mind_context_coverage_api_admin_health_mind_context_coverage_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MindContextCoverageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/health/private-libraries/integrity":{"get":{"tags":["admin-health"],"summary":"Get Home Folder Integrity","description":"Detect the three home folder invariant violations migration 515 (TOS-1757)\nenforces for new writes but never had a detector for pre-existing rows.\n\nTOS-1797: this exact gap - a write-time invariant with no reader-side\ncheck for legacy violators - is why 14 agents silently lost 66 integration\nand 510 skill entitlements for four days before a user noticed a missing\ntool. This endpoint is what should have caught it at deploy time instead.","operationId":"get_private_library_integrity_api_admin_health_private_libraries_integrity_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrivateLibraryIntegrityResponse"}}}}}}},"/api/admin/health/extraction/stale-count":{"get":{"tags":["admin-health"],"summary":"Get Extraction Stale Count","description":"Count chats the sweep would actually pick up on its next run.\n\nSource-of-truth alignment: the sweep keys eligibility off the\n``episodes_v2`` state machine (TOS-39 PR-2), so this banner must\ndo the same. The previous implementation queried only ``chats``\nwith the legacy ``last_extracted_at`` denormalized hint, which\nhas no idea about DEAD_LETTER and reported terminally-retired\nchats as \"awaiting\" forever (regression observed 2026-05-28 for\nchat f9ebb5b1 after an OperationalError(AdminShutdown) burst\ndrove its episode to DEAD_LETTER while ``last_extracted_at``\nstayed NULL).\n\nPredicate mirrors ``scheduler/jobs/extract_conversations.py``:\n\n  - chat is alive (``deleted_at IS NULL``) and not opted out\n    (``extraction_excluded = false``);\n  - LATEST ``episodes_v2`` row (by ``started_at``) is one of:\n      * NULL (never extracted),\n      * ``failed`` (retry-eligible),\n      * ``pending`` (durable worker queue item),\n      * ``integrated`` AND a newer extractable message or dirty marker\n        exists beyond the processed watermark,\n      * ``extracting`` / ``windowing`` whose ``updated_at`` is older than\n        the 1-hour in-flight cutoff (crashed worker);\n  - ``dead_letter`` (terminal, manual triage) and live\n    ``extracting``/``windowing`` (an active worker is on it) are excluded.\n\nThe sweep has separate pending/recent/backlog budgets, but this endpoint is\nonly a count, so it can express the union directly.","operationId":"get_extraction_stale_count_api_admin_health_extraction_stale_count_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractionStaleCountResponse"}}}}}}},"/api/admin/health/extraction/recover-transient-dead-letters":{"post":{"tags":["admin-health"],"summary":"Recover Transient Dead Letters","description":"Demote DEAD_LETTER episodes whose failure was an infra transient.\n\nThe state-machine rule before the ``mark_transient_failure`` fix\nburned an attempt on every OperationalError(AdminShutdown) the\nextractor caught during savepoint release, so a 4-reconnect burst\non a managed Postgres would terminally retire a healthy chat (chat ``f9ebb5b1``\non 2026-05-28 was the prompting incident). The forward fix prevents\nnew occurrences; this endpoint clears the backlog.\n\nBounded to LIMIT 100 per call so a misclassified pattern can't\nstorm the whole table. Demotes status DEAD_LETTER → FAILED and\nzeroes ``attempts`` so the sweep's normal retry budget applies.\nOperates only on rows whose stored ``failure_reason`` matches a\ntransient-class prefix - logical failures stay terminal.","operationId":"recover_transient_dead_letters_api_admin_health_extraction_recover_transient_dead_letters_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractionRecoverResponse"}}}}}}},"/api/admin/health/pulse":{"get":{"tags":["admin-health"],"summary":"Get Health Pulse","description":"Latest health-pulse runs, newest first (TOS-6498).\n\nRead-only view over ``thinqos.health_pulse_results``; the scheduler job\n(or admin Run-now on ``health-pulse``) produces the rows.","operationId":"get_health_pulse_api_admin_health_pulse_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthPulseSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/health/decay/runs":{"get":{"tags":["admin-health"],"summary":"List Decay Stage Runs","description":"Recent decay stage attempts, newest first (TOS-6762).\n\nRead-only view over ``thinqos.mind_sleep_stage_runs`` where\n``stage='decay'``; the sleep-cycle-dispatcher writes the rows. The old\npanel endpoint ``/api/admin/jobs/decay/runs`` 404s because that job no\nlonger exists in the scheduler registry.","operationId":"list_decay_stage_runs_api_admin_health_decay_runs_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecayRunsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/feedback-loop/overview":{"get":{"tags":["admin-feedback-loop"],"summary":"Get Overview","operationId":"get_overview_api_admin_feedback_loop_overview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackLoopOverview"}}}}}}},"/api/admin/feedback-loop/funnel":{"get":{"tags":["admin-feedback-loop"],"summary":"Get Funnel","description":"TOS-6617 (TOS-5064 section 9.4): what feeds the platform loop.\n\nThe lane counts come from the platform-review job's latest ``job_runs``\nresult, so a lane the job could not read says why instead of showing a\nzero. Also carries last night's headline, the five stage lines, the catch\nrate (or that it is not measured) and the open platform findings ranked\nby identities hit, then turns hit. A read only.","operationId":"get_funnel_api_admin_feedback_loop_funnel_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FunnelResponse"}}}}}}},"/api/admin/feedback-loop/identity-loops":{"get":{"tags":["admin-feedback-loop"],"summary":"Get Identity Loops","description":"TOS-6617: one oversight row per reviewed identity, from\n``identity_review_runs`` plus pending self-updates and trials. Rows the\nviewer does not own carry counts only: no failure reason, no link.","operationId":"get_identity_loops_api_admin_feedback_loop_identity_loops_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityLoopsResponse"}}}}}}},"/api/admin/feedback-loop/pending":{"get":{"tags":["admin-feedback-loop"],"summary":"Get Pending","operationId":"get_pending_api_admin_feedback_loop_pending_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"stream","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stream"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PendingDecision"},"title":"Response Get Pending Api Admin Feedback Loop Pending Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/feedback-loop/ledger":{"get":{"tags":["admin-feedback-loop"],"summary":"Get Ledger","description":"TOS-4369: concrete improvements, newest first, naming a real artifact.","operationId":"get_ledger_api_admin_feedback_loop_ledger_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LedgerEntry"},"title":"Response Get Ledger Api Admin Feedback Loop Ledger Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/feedback-loop/score":{"get":{"tags":["admin-feedback-loop"],"summary":"Get Score","description":"TOS-5089: the score hero's data - {platform: {7d, 28d}, agents: [...]},\nagents sorted by failed_rate desc. Backed entirely by the durable\nagent_outcome_scores table; this route never computes a rate itself.","operationId":"get_score_api_admin_feedback_loop_score_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoreOverviewResponse"}}}}}}},"/api/admin/feedback-loop/stories":{"get":{"tags":["admin-feedback-loop"],"summary":"Get Stories","description":"TOS-5081: what the machine changed, one story per applied change or\nplatform finding, newest activity first.","operationId":"get_stories_api_admin_feedback_loop_stories_get","parameters":[{"name":"filter","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Filter"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/StoryView"},"title":"Response Get Stories Api Admin Feedback Loop Stories Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/feedback-loop/trace/{trace_id}":{"get":{"tags":["admin-feedback-loop"],"summary":"Get Trace","description":"TOS-5081: one story's full trace, read ONLY from ``improvement_events``\n(section 7.5) - every step is a row, never synthesized.","operationId":"get_trace_api_admin_feedback_loop_trace__trace_id__get","parameters":[{"name":"trace_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Trace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoryView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/feedback-loop/health":{"get":{"tags":["admin-feedback-loop"],"summary":"Get Loop Health","description":"TOS-5081 (TOS-5064 P6 section 3): the eight Loop Health metrics, each\nfrom its own independent SQL definition in ``health.py``.","operationId":"get_loop_health_api_admin_feedback_loop_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoopHealthResponse"}}}}}}},"/api/admin/feedback-loop/prompt-scorecard":{"get":{"tags":["admin-feedback-loop"],"summary":"Get Prompt Scorecard","description":"The 20-criterion score of the platform prompt this build runs.\n\nA read only. Scoring itself belongs to the ``prompt-scorecard`` scheduler\njob, so this route never makes a model call and never writes a row. A\n``current`` of null means the running build's prompt has not been scored\nyet, which is honest: it is not a zero, and it is not last build's score\npresented as this one's.","operationId":"get_prompt_scorecard_api_admin_feedback_loop_prompt_scorecard_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":28,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptScorecardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform-findings":{"get":{"tags":["platform-findings"],"summary":"List Findings","description":"List aggregated platform findings (open/approved/declined/shipped),\nnewest first. Each finding is one distinct signature across every agent\nthat raised it - never a per-incident row. Filter with state to see only\nfindings awaiting a decision.","operationId":"list_findings_api_platform_findings_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PlatformFindingOut"},"title":"Response List Findings Api Platform Findings Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform-findings/track-record":{"get":{"tags":["platform-findings"],"summary":"Get Track Record","description":"TOS-5080: per risk class, the fixer's own 90-day track record - how\nmany findings verified, how many came back, and whether that class has\nearned unattended merging (5 verified, 0 did_not_hold). Backs both the\nfixer workflow's draft-vs-auto-merge decision and any future admin UI.\nReads ``platform_fix_track_record`` (migration 1342) rather than\nrecomputing the rule here.","operationId":"get_track_record_api_platform_findings_track_record_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/TrackRecordOut"},"type":"array","title":"Response Get Track Record Api Platform Findings Track Record Get"}}}}}}},"/api/platform-findings/{finding_id}":{"get":{"tags":["platform-findings"],"summary":"Get Finding","description":"Read one platform finding by id: its signature, which agents raised\nit, occurrence count, current state, and its Commons delivery reference\nonce shipped.","operationId":"get_finding_api_platform_findings__finding_id__get","parameters":[{"name":"finding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Finding Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformFindingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform-findings/{finding_id}/audit":{"get":{"tags":["platform-findings"],"summary":"Get Finding Audit","description":"Read the append-only decision trail for one platform finding: every\napprove/decline/ship/escalate/reopen, who did it, and when. Nothing\nabout a platform finding is ever applied without a row here.","operationId":"get_finding_audit_api_platform_findings__finding_id__audit_get","parameters":[{"name":"finding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Finding Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PlatformChangeAuditOut"},"title":"Response Get Finding Audit Api Platform Findings  Finding Id  Audit Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform-findings/{finding_id}/approve":{"post":{"tags":["platform-findings"],"summary":"Approve","description":"Explicitly approve one platform finding for delivery to Commons. This\nis the only path that makes a platform finding eligible for delivery -\nnothing ships automatically. Records who approved it and when.","operationId":"approve_api_platform_findings__finding_id__approve_post","parameters":[{"name":"finding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Finding Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformFindingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform-findings/{finding_id}/decline":{"post":{"tags":["platform-findings"],"summary":"Decline","description":"Decline one platform finding with a reason. A declined finding stays\nvisible and reopens automatically if the same signature recurs later,\nrather than being silently dropped.","operationId":"decline_api_platform_findings__finding_id__decline_post","parameters":[{"name":"finding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Finding Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeclineRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformFindingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform-findings/{finding_id}/dismiss":{"post":{"tags":["platform-findings"],"summary":"Dismiss","description":"TOS-7267: one-click dismiss of a quiet finding. Records a decline with\nreason ``no_longer_occurring``; it reopens if the problem comes back.","operationId":"dismiss_api_platform_findings__finding_id__dismiss_post","parameters":[{"name":"finding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Finding Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformFindingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/platform-findings/{finding_id}/events":{"post":{"tags":["admin","platform-findings"],"summary":"Record Finding Event Endpoint","description":"Record one fixer-lifecycle audit action against a platform finding.\n\nThe workflow calls this exactly once per PR it opens, with\n``action: \"pr_opened\"`` and evidence citing the finding's signature,\noccurrence count, agent count, and Commons ref (the same numbers the PR\nbody itself must cite, per the fixer's guard rule 5) plus the PR number\nand URL. A caller may also record ``pr_merged``, ``deployed``,\n``verified``, or ``did_not_hold`` through the same path, though in\npractice only the fixer workflow ever calls this endpoint - the other\nfour actions are written in-process by the ``platform-fix-verify``\nscheduler job. ``fix_failed`` (TOS-6462) is the release path: the\nclaimed run failed before opening a PR, the finding STAYS 'shipped'\n(the state the hourly claim query selects - review round 14, P1-2),\nand the workflow PATCHes the Commons item back to 'backlog' in the same\nfailure step so the next hourly run can re-claim.\n``no_longer_reproduces`` (TOS-7267) is the no-op path: the fixer's first\nstep found the claimed finding no longer occurs, so it moves 'shipped'\nto 'quiet' and no PR opens. Only these seven fixer-lifecycle actions are\naccepted\n(:data:`FIXER_LIFECYCLE_ACTIONS`) - the original approve/decline/ship\nactions go through their own dedicated endpoints, not this one.","operationId":"record_finding_event_endpoint_api_admin_platform_findings__finding_id__events_post","parameters":[{"name":"finding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Finding Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordFindingEventRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordFindingEventResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/platform-requests":{"get":{"tags":["agent-platform-requests"],"summary":"List Platform Requests","description":"List what this agent's own retrospect (dreaming) pass has traced to\nthe platform rather than its own configuration - the other of the two\nself-improvement ledgers, alongside its pending self-update proposals.","operationId":"list_platform_requests_api_agents__agent_id__platform_requests_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PlatformRequestOut"},"title":"Response List Platform Requests Api Agents  Agent Id  Platform Requests Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/platform-requests/{request_id}/escalate":{"post":{"tags":["agent-platform-requests"],"summary":"Escalate Platform Request","description":"Mark one of this agent's open platform requests as escalated -\n\"the platform is holding this agent back\" - raising its priority and\nrecording an audit row against its aggregate finding for Dan to see.","operationId":"escalate_platform_request_api_agents__agent_id__platform_requests__request_id__escalate_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"request_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EscalateRequestBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformRequestOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/data-environments":{"get":{"tags":["agent-data-admin"],"summary":"List Environments","operationId":"list_environments_api_admin_data_environments_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/EnvironmentOut"},"type":"array","title":"Response List Environments Api Admin Data Environments Get"}}}}}},"post":{"tags":["agent-data-admin"],"summary":"Register Environment","operationId":"register_environment_api_admin_data_environments_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterEnvironmentIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/data-environments/{environment_id}":{"patch":{"tags":["agent-data-admin"],"summary":"Update Environment","description":"Replace the admin DSN and re-verify — the recovery path for a bad DSN.","operationId":"update_environment_api_admin_data_environments__environment_id__patch","parameters":[{"name":"environment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Environment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEnvironmentIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["agent-data-admin"],"summary":"Delete Environment","operationId":"delete_environment_api_admin_data_environments__environment_id__delete","parameters":[{"name":"environment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Environment Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/data-environments/{environment_id}/verify":{"post":{"tags":["agent-data-admin"],"summary":"Reverify Environment","description":"Re-run verification against the stored DSN, without changing it.","operationId":"reverify_environment_api_admin_data_environments__environment_id__verify_post","parameters":[{"name":"environment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Environment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/data-environments/cost-report":{"get":{"tags":["agent-data-admin"],"summary":"Cost Truth Report","description":"Per-environment statement volume, split by ownership_kind (TOS-1614).\n\nMakes \"customer BYO statements cost AI4O nothing\" a verifiable per-row fact\ninstead of an assertion — see services/agent_data/cost_report.py.","operationId":"cost_truth_report_api_admin_data_environments_cost_report_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CostReportRowOut"},"type":"array","title":"Response Cost Truth Report Api Admin Data Environments Cost Report Get"}}}}}}},"/api/agent-data/environments":{"get":{"tags":["agent-data"],"summary":"List Environments For Picker","description":"Environments this caller may provision into -- owned by them, or any if admin.\n\nNot every registered environment: seeing an environment you cannot use\nwould only invite a 403 on the next call, and (pre-hardening) this\nendpoint used to hand every authenticated caller the full list.","operationId":"list_environments_for_picker_api_agent_data_environments_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/EnvironmentPickerOut"},"type":"array","title":"Response List Environments For Picker Api Agent Data Environments Get"}}}}}},"post":{"tags":["agent-data"],"summary":"Register Byo Environment","description":"Self-service BYO registration: guided-BYO fallback (TOS-1614, TOS-1617).\n\nAny authenticated identity may register their OWN external Postgres — no\nadmin role required. This is the \"paste a connection string\" path every\nprovider gets uniformly, including a Supabase project a customer already\nhas (deliberately NOT a Supabase-specific browse/pick UI over their\nManagement API — see the ticket for why). The caller becomes the\nenvironment's owner, which is what makes ``_can_use_environment`` work\nfor them afterward with zero additional wiring. Runs the exact same\nfail-closed verification as admin registration (agent_data_admin.py) —\nself-service gets no weaker a check than an internal registration does.\n\nAnti-SSRF (TOS-1614 review round 4): the DSN host must resolve to public\naddresses only — this endpoint makes the server dial caller-supplied\nhosts, and without the guard it is an internal-network probe oracle.","operationId":"register_byo_environment_api_agent_data_environments_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterByoEnvironmentIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-data/environments/{environment_id}/detach":{"post":{"tags":["agent-data"],"summary":"Detach Environment","description":"Detach: cut ongoing agent access. Nothing is deleted (TOS-1614 lifecycle).","operationId":"detach_environment_api_agent_data_environments__environment_id__detach_post","parameters":[{"name":"environment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Environment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-data/environments/{environment_id}/reattach":{"post":{"tags":["agent-data"],"summary":"Reattach Environment","description":"Reverse a detach — re-verifies, since the environment may have drifted.","operationId":"reattach_environment_api_agent_data_environments__environment_id__reattach_post","parameters":[{"name":"environment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Environment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-data/environments/{environment_id}/dsn":{"patch":{"tags":["agent-data"],"summary":"Update Byo Environment Dsn","description":"Correct the admin DSN on an environment you own, then re-verify.\n\nWithout this, a self-service registration that fails verification is\npermanently stuck: the name is burned (globally unique), and every repair\npath was admin-only — the exact dead end TOS-2932 fixed at the admin tier,\nreintroduced at the self-service tier (TOS-1614 review round 4).\nRe-verifies fail-closed via the same service the admin route uses.","operationId":"update_byo_environment_dsn_api_agent_data_environments__environment_id__dsn_patch","parameters":[{"name":"environment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Environment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateByoEnvironmentDsnIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-data/environments/{environment_id}":{"delete":{"tags":["agent-data"],"summary":"Delete Byo Environment","description":"Delete an environment you own (refuses while namespaces reference it).\n\nThe other half of the stuck-registration repair path: a refused\nenvironment with no namespaces can be removed by its owner, freeing the\nglobally-unique name.","operationId":"delete_byo_environment_api_agent_data_environments__environment_id__delete","parameters":[{"name":"environment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Environment Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-data/environments/{environment_id}/export":{"get":{"tags":["agent-data"],"summary":"Export Environment","description":"Export: the lifecycle's final step. Plain SQL, restorable with psql alone.\n\nDeliberately allowed on a detached environment — detach-then-export is the\nintended order (TOS-1614): no further writes land while the export runs.","operationId":"export_environment_api_agent_data_environments__environment_id__export_get","parameters":[{"name":"environment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Environment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-data/namespaces/{namespace_id}/export":{"get":{"tags":["agent-data"],"summary":"Export Namespace","description":"Export one database (namespace) as plain SQL (TOS-7350: Download in Explorer).\n\nSame authority as the environment export: the export reads every\nsubject's rows through the environment's admin DSN, so only the owner of\nthe environment the database lives in (or a platform admin) may take it.","operationId":"export_namespace_api_agent_data_namespaces__namespace_id__export_get","parameters":[{"name":"namespace_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Namespace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-data/namespaces":{"get":{"tags":["agent-data"],"summary":"List Reachable Namespaces","description":"List the data namespaces you are granted, with each one's id, name, environment and owning\nfolder. This list does not report readiness, grant level or which database operations are\navailable; use the namespace-specific tools for that detail. Use this to discover namespace\nnames before reading a namespace's schema. Read-only.","operationId":"list_reachable_namespaces_api_agent_data_namespaces_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/NamespaceOut"},"type":"array","title":"Response List Reachable Namespaces Api Agent Data Namespaces Get"}}}}}},"post":{"tags":["agent-data"],"summary":"Create Namespace","description":"Create a namespace (a schema + three limited non-superuser roles) in an environment. This\nalways creates a new subfolder under the parent_library_id you supply, named with the given\nname, and provisions the namespace into that new subfolder; it never provisions into an\nexisting folder, and parent_library_id is required. Requires the edit or admin rung on\nparent_library_id, AND being the environment's owner or a platform admin.","operationId":"create_namespace_api_agent_data_namespaces_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateNamespaceIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NamespaceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-data/namespaces/import":{"post":{"tags":["agent-data"],"summary":"Import Namespace","description":"Import a database from its SQL export into an environment you own (TOS-7356).\n\nThe file is parsed against the export's own narrow grammar and never run:\nits tables are recreated through schema_apply (so the new database has a\nmigration log, and thinqOS, not the file, sets its row level security and\ngrants), then its COPY data is loaded into those tables only. Anything\nelse in the file (functions, extensions, other schemas, SET, DO blocks,\n...) is refused with a 400 naming the statement. Same authority as the\nexport: the environment's owner or a platform admin.","operationId":"import_namespace_api_agent_data_namespaces_import_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportNamespaceIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportNamespaceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/agent-data/namespaces/{namespace_id}":{"delete":{"tags":["agent-data"],"summary":"Delete Namespace","description":"Delete a database, irreversibly (TOS-7356).\n\nDrops its schema (every table and every row in it) and its three roles in\nthe environment's Postgres, then removes it here with its migration log\nand pending schema change requests. The folder it lived in stays. Only the\nenvironment's owner or a platform admin, the same authority as export.","operationId":"delete_namespace_api_agent_data_namespaces__namespace_id__delete","parameters":[{"name":"namespace_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Namespace Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/agent-data/access/{subject_identity_id}":{"get":{"tags":["agent-data"],"summary":"List Subject Namespace Access","description":"Every namespace the caller can see, with *subject*'s current level on each.\n\nUnlike ``list_reachable_namespaces`` this returns rows at level 'none' too:\nthe editor's whole job is to show a namespace the agent does NOT have yet\nso it can be granted. Filtering those out would render an empty screen in\nexactly the case the screen exists for.","operationId":"list_subject_namespace_access_api_agent_data_access__subject_identity_id__get","parameters":[{"name":"subject_identity_id","in":"path","required":true,"schema":{"type":"string","title":"Subject Identity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/NamespaceAccessOut"},"title":"Response List Subject Namespace Access Api Agent Data Access  Subject Identity Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-data/access":{"put":{"tags":["agent-data"],"summary":"Set Subject Namespace Access","description":"Set *subject*'s database level on one namespace by writing its folder rung.","operationId":"set_subject_namespace_access_api_agent_data_access_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetNamespaceAccessIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NamespaceAccessOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/internet-runtime/rollout":{"get":{"tags":["admin-internet-runtime"],"summary":"Get Rollout Verdict","description":"The canary verdict over the recent run window, plus the kill-switch state.","operationId":"get_rollout_verdict_api_admin_internet_runtime_rollout_get","parameters":[{"name":"window_hours","in":"query","required":false,"schema":{"type":"integer","maximum":720,"minimum":1,"default":24,"title":"Window Hours"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Rollout Verdict Api Admin Internet Runtime Rollout Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/health/providers/{provider}/identity-key/{identity_id}":{"get":{"tags":["admin-provider-health"],"summary":"Preview Identity Provider Key","operationId":"preview_identity_provider_key_api_admin_health_providers__provider__identity_key__identity_id__get","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityKeyPromotionPreview"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/health/providers":{"get":{"tags":["admin-provider-health"],"summary":"List Admin Provider Health","operationId":"list_admin_provider_health_api_admin_health_providers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminProviderHealthResponse"}}}}}}},"/api/admin/health/providers/{provider}/probe":{"post":{"tags":["admin-provider-health"],"summary":"Probe Admin Provider","operationId":"probe_admin_provider_api_admin_health_providers__provider__probe_post","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminProviderHealthItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/health/providers/{provider}/key":{"put":{"tags":["admin-provider-health"],"summary":"Set Admin Provider Key","operationId":"set_admin_provider_key_api_admin_health_providers__provider__key_put","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPlatformProviderKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminProviderHealthItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-provider-health"],"summary":"Delete Admin Provider Key","operationId":"delete_admin_provider_key_api_admin_health_providers__provider__key_delete","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"boolean"},"title":"Response Delete Admin Provider Key Api Admin Health Providers  Provider  Key Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/health/providers/{provider}/promote-identity-key/{identity_id}":{"post":{"tags":["admin-provider-health"],"summary":"Promote Identity Provider Key","description":"Promote an existing encrypted identity key without returning its secret.","operationId":"promote_identity_provider_key_api_admin_health_providers__provider__promote_identity_key__identity_id__post","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminProviderHealthItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/health/providers/{provider}/owner":{"put":{"tags":["admin-provider-health"],"summary":"Set Admin Provider Key Owner","description":"Categorize an existing platform key under an organization (TOS-7385).\n\nChanges the owner only. It never reads, replaces or returns the key itself,\nso it needs no key and no probe.","operationId":"set_admin_provider_key_owner_api_admin_health_providers__provider__owner_put","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPlatformKeyOwnerRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminProviderHealthItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/identities/login-cutover/inventory":{"get":{"tags":["admin-identities","admin-identities"],"summary":"Cutover Inventory","description":"Dedicated-install inventory; no shared database substitutes are used.","operationId":"cutover_inventory_api_admin_identities_login_cutover_inventory_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CutoverPersonOut"},"type":"array","title":"Response Cutover Inventory Api Admin Identities Login Cutover Inventory Get"}}}}}}},"/api/admin/identities/{identity_id}/login-bindings":{"post":{"tags":["admin-identities","admin-identities"],"summary":"Attach Login","description":"Pair a person before cutover; this does not activate the new provider.","operationId":"attach_login_api_admin_identities__identity_id__login_bindings_post","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BindLoginRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginBindingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["admin-identities","admin-identities"],"summary":"List Logins","operationId":"list_logins_api_admin_identities__identity_id__login_bindings_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LoginBindingOut"},"title":"Response List Logins Api Admin Identities  Identity Id  Login Bindings Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/identities/{identity_id}/login-bindings/{binding_id}":{"delete":{"tags":["admin-identities","admin-identities"],"summary":"Revoke Login","operationId":"revoke_login_api_admin_identities__identity_id__login_bindings__binding_id__delete","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"binding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Binding Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginBindingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/identities":{"get":{"tags":["admin-identities"],"summary":"List Identities","description":"List all person identities (admin only).","operationId":"list_identities_api_admin_identities_get","parameters":[{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Inactive"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/IdentityOut"},"title":"Response List Identities Api Admin Identities Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/identities/platform-privileges/audit":{"get":{"tags":["admin-identities"],"summary":"Platform Privilege Audit","description":"The grant/revoke audit trail, newest first (TOS-3571).\n\nDeclared BEFORE the ``/{identity_id}`` routes so ``platform-privileges`` is\nnever swallowed as an identity id.","operationId":"platform_privilege_audit_api_admin_identities_platform_privileges_audit_get","parameters":[{"name":"target_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Identity Id"}},{"name":"actor_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Actor Identity Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PlatformPrivilegeEventOut"},"title":"Response Platform Privilege Audit Api Admin Identities Platform Privileges Audit Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/identities/{identity_id}/managed-claim":{"post":{"tags":["admin-identities"],"summary":"Issue Managed Claim","description":"Authorize a future human claim without sending an email.","operationId":"issue_managed_claim_api_admin_identities__identity_id__managed_claim_post","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagedIdentityClaimRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagedIdentityClaimOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-identities"],"summary":"Cancel Managed Claim","description":"Cancel a pending claim while leaving outbound email blocked.","operationId":"cancel_managed_claim_api_admin_identities__identity_id__managed_claim_delete","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagedIdentityClaimOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/identities/{identity_id}/platform-privileges":{"get":{"tags":["admin-identities"],"summary":"Get Platform Privileges","description":"Current platform privilege tiers for one identity (TOS-3571).","operationId":"get_platform_privileges_api_admin_identities__identity_id__platform_privileges_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformPrivilegeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-identities"],"summary":"Set Platform Privileges","description":"Grant or revoke platform privilege tiers (TOS-3571).\n\nReplaces the SQL-only promote path: before this route the flag had no\napplication-code writer at all, and the only zero-admin check that ever ran\nwas inside migration 093 at apply time.\n\n``require_admin`` is Tier-1-only (``role`` derives from\n``is_platform_admin``), which is what makes Tier 2 non-self-service: a\nread-only holder cannot reach this route, and neither can an agent's owner.","operationId":"set_platform_privileges_api_admin_identities__identity_id__platform_privileges_put","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPlatformPrivilegesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformPrivilegeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/identities/{identity_id}/outbound-email-policy":{"put":{"tags":["admin-identities"],"summary":"Set Outbound Email Policy","description":"Change delivery policy without changing identity kind or ownership.\n\nEmail addresses remain useful for contact and login while the delivery\ngate in ``email_delivery`` enforces ``blocked`` for every send path.","operationId":"set_outbound_email_policy_api_admin_identities__identity_id__outbound_email_policy_put","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOutboundEmailPolicyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutboundEmailPolicyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/identities/{identity_id}/managed-by":{"put":{"tags":["admin-identities"],"summary":"Set Managed By","description":"Grant or end a folder's authority to act as this identity (TOS-4159).\n\nThis is the ONLY way delegated act-as is conferred. Before TOS-4159 the\nauthority was inferred from folder membership, so it attached silently to\nevery colleague filed alongside an administrator; naming the folder makes\nthe grant a decision somebody made rather than a side effect of where a\nperson was filed.\n\nPlatform-admin gated on purpose, matching the outbound-email policy beside\nit. Both say what an organization may do TO an identity rather than what\nthat identity may do, so neither belongs to the folder's own administrators\nwhile TOS-3921's consent-bearing claim flow is still deferred: a folder\nadmin who could grant themselves authority over a member has the membership\nrule back, under a new name.\n\nPassing ``None`` ends the relationship, which is the revocation half\nTOS-3921's claim flow needs.","operationId":"set_managed_by_api_admin_identities__identity_id__managed_by_put","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetManagedByRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagedByOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/identities/overview":{"get":{"tags":["admin-identities"],"summary":"Identities Overview","description":"Every non-deleted identity (people + agents) with oversight columns.","operationId":"identities_overview_api_admin_identities_overview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/IdentityOverviewOut"},"type":"array","title":"Response Identities Overview Api Admin Identities Overview Get"}}}}}}},"/api/admin/identities/overview/core":{"get":{"tags":["admin-identities"],"summary":"Identities Overview Core","description":"Core directory rows that paint independently from secondary metrics.","operationId":"identities_overview_core_api_admin_identities_overview_core_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/IdentityOverviewCoreOut"},"type":"array","title":"Response Identities Overview Core Api Admin Identities Overview Core Get"}}}}}}},"/api/admin/identities/overview/metrics":{"get":{"tags":["admin-identities"],"summary":"Identities Overview Metrics","description":"Secondary directory metrics with independent recovery from core rows.\n\nTOS-2838 reference implementation for user-initiated cancellation. This is\nthe route the ticket opened on - the slowest authenticated read in the\nproduct, and the one where a user is most likely to give up waiting.\n\nThe caller chooses the operation id and sends it up front, because a\nnon-streaming response cannot hand one back while the request it would\ncancel is still running. Sending no header simply means no Cancel is\noffered, so every existing caller keeps working unchanged.\n\nRegistration and release both use their own short-lived session rather than\n``db``: after a cancel lands, ``db``'s transaction is aborted and cannot be\nwritten to, so bookkeeping on it would fail exactly when it matters.","operationId":"identities_overview_metrics_api_admin_identities_overview_metrics_get","parameters":[{"name":"x-operation-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"X-Operation-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityOverviewMetricsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/identities/{identity_id}":{"patch":{"tags":["admin-identities"],"summary":"Update Identity","description":"Update an identity's is_active status and/or funding_mode (admin only).\n\nTOS-5187: for a Clerk-authenticated person, `is_active` is no longer a\nbare local flag - it is projected from an explicit Clerk ban/unban\ncommand (`services.clerk_account_sync.admin_set_account_enabled`), so\nthis route and the account webhook always agree on where authority for\nthat value lives. Every payload field is validated BEFORE any mutation\n(local or external): a bad `is_active` type or an unknown `funding_mode`\nmust never be discovered only after a Clerk command already ran.","operationId":"update_identity_api_admin_identities__identity_id__patch","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-identities"],"summary":"Delete Identity","description":"Permanently delete a person (and their Clerk user) or an agent (admin only).\n\nTOS-3390: runs the tree delete end to end (bin, then purge), so the\nidentity's home folder and personal folders go with it instead of being\nleft ownerless, and its organization folders pass to the organization.","operationId":"delete_identity_api_admin_identities__identity_id__delete","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/identities/retire":{"post":{"tags":["admin-identities"],"summary":"Retire People Endpoint","description":"Retire disabled people for good and make every Mind forget what they taught (TOS-7357).\n\nSoft deletes only, so every step is reversible: their agents, the private homes of\nthe people and those agents (TOS-7618), their chats that no\nremaining person shares, their documents, and the person, with access tokens turned\noff. The forgetting is queued in the same transaction. ``dry_run`` (the default)\nreturns the counts and changes nothing. Each person must already be disabled through\n``PATCH /api/admin/identities/{id}`` so the Clerk account is banned first.","operationId":"retire_people_endpoint_api_admin_identities_retire_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetirePeopleIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetirePeopleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/identities/{identity_id}/delete-preflight":{"get":{"tags":["admin-identities"],"summary":"Identity Delete Preflight","description":"Report the consequences of deleting this person or agent (admin only).","operationId":"identity_delete_preflight_api_admin_identities__identity_id__delete_preflight_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeletePreflightOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/identities/{identity_id}/delete-plan":{"get":{"tags":["admin-identities"],"summary":"Identity Delete Plan","description":"Dry run of deleting an identity and everything it owns (TOS-3390, admin only).","operationId":"identity_delete_plan_api_admin_identities__identity_id__delete_plan_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Identity Delete Plan Api Admin Identities  Identity Id  Delete Plan Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/identities/{identity_id}/bin":{"post":{"tags":["admin-identities"],"summary":"Bin Identity","description":"Move an identity, the folders it owns and their contents to the bin (TOS-3390).\n\nA person's folders inside an organization pass to the organization; the\nrest (home folder, personal folders) goes with the person. Restorable\nexactly with ``POST .../restore``. Admin only.","operationId":"bin_identity_api_admin_identities__identity_id__bin_post","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Bin Identity Api Admin Identities  Identity Id  Bin Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/identities/{identity_id}/restore":{"post":{"tags":["admin-identities"],"summary":"Restore Identity Tree","description":"Restore a binned identity and exactly what its delete binned (TOS-3390, admin only).","operationId":"restore_identity_tree_api_admin_identities__identity_id__restore_post","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Restore Identity Tree Api Admin Identities  Identity Id  Restore Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/identities/{identity_id}/purge":{"post":{"tags":["admin-identities"],"summary":"Purge Identity Tree","description":"Permanently delete a binned identity and its binned folders (TOS-3390, admin only).\n\nIrreversible, and only for an identity already in the bin (``POST .../bin``).","operationId":"purge_identity_tree_api_admin_identities__identity_id__purge_post","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/identities/{identity_id}/rebuild-status":{"get":{"tags":["admin-identities"],"summary":"Rebuild Identity Mind Status","description":"Return Mind rebuild status for any identity (admin only).","operationId":"rebuild_identity_mind_status_api_admin_identities__identity_id__rebuild_status_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rebuild Identity Mind Status Api Admin Identities  Identity Id  Rebuild Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/identities/{identity_id}/rebuild-mind":{"post":{"tags":["admin-identities"],"summary":"Rebuild Identity Mind","description":"Purge an identity's derived cognitive-v2 projection and rebuild it.\n\nTOS-44. Admin-only ops/repair primitive. Clears this Mind's\nevaluations/holdings/edges/activations (shared entity/proposition\nsubstrate is left intact), records a rebuild job, and lets the\nbackground replay rebuild it. Admins may target any active identity.\n\n``mode=reapply`` (default, TOS-7100) rewrites the Mind from each chat\nwindow's stored extractor answer and calls the model only for windows\nwhose messages or extractor changed since that answer was stored: the\nright mode after a fix to how answers are written. ``mode=reinterpret``\nre-extracts every window through the model (use it after an extractor\nprompt or model change, or to deliberately re-roll the extraction).\n``mode=reconstruct`` replays the stored event log via MindProjector\n(LLM-free); requires that stored events exist; returns 409 if not.\n\n``fast=true`` (TOS-7419, opt-in) starts the longest chats first and runs\nmore chats at once (``recipe.rebuild.fast_workers``, 12 in platform-default v1). It\nchanges only scheduling: what is extracted and how it is written is the\nsame. It has no effect on ``reconstruct``, which makes no model calls.","operationId":"rebuild_identity_mind_api_admin_identities__identity_id__rebuild_mind_post","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"mode","in":"query","required":false,"schema":{"enum":["reapply","reinterpret","reconstruct"],"type":"string","default":"reapply","title":"Mode"}},{"name":"include_captures","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Captures"}},{"name":"fast","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Fast"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RebuildMindOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/identities/{identity_id}/owned-agents":{"get":{"tags":["admin-identities"],"summary":"List Owned Agents","operationId":"list_owned_agents_api_admin_identities__identity_id__owned_agents_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OwnedAgentOut"},"title":"Response List Owned Agents Api Admin Identities  Identity Id  Owned Agents Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/cleanup-batches":{"post":{"tags":["admin-cleanup-batches"],"summary":"Create Cleanup Batch","description":"Save a batch from a list of ids; the plan is built in the background.","operationId":"create_cleanup_batch_api_admin_cleanup_batches_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCleanupBatchIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Cleanup Batch Api Admin Cleanup Batches Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/cleanup-batches/{batch_id}":{"get":{"tags":["admin-cleanup-batches"],"summary":"Get Cleanup Batch","description":"Status, audit trail and every row's result.","operationId":"get_cleanup_batch_api_admin_cleanup_batches__batch_id__get","parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Batch Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Cleanup Batch Api Admin Cleanup Batches  Batch Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/cleanup-batches/{batch_id}/plan":{"get":{"tags":["admin-cleanup-batches"],"summary":"Get Cleanup Batch Plan","description":"The stored dry run and its ``plan_hash``, row by row. Changes nothing.","operationId":"get_cleanup_batch_plan_api_admin_cleanup_batches__batch_id__plan_get","parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Batch Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Cleanup Batch Plan Api Admin Cleanup Batches  Batch Id  Plan Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/cleanup-batches/{batch_id}/approve":{"post":{"tags":["admin-cleanup-batches"],"summary":"Approve Cleanup Batch","description":"Approve the plan whose hash was reviewed; the rows then run in the background.","operationId":"approve_cleanup_batch_api_admin_cleanup_batches__batch_id__approve_post","parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Batch Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveCleanupBatchIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Approve Cleanup Batch Api Admin Cleanup Batches  Batch Id  Approve Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/cleanup-batches/{batch_id}/undo":{"post":{"tags":["admin-cleanup-batches"],"summary":"Undo Cleanup Batch","description":"Restore what the batch (or the given rows) soft-deleted, by each row's own delete.\n\nA move_contents row is undone too: its folder is restored, what it moved is\nmoved back, and the access it created is removed. A transfer_connection row\ngives the connection back to its previous owner.","operationId":"undo_cleanup_batch_api_admin_cleanup_batches__batch_id__undo_post","parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Batch Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UndoCleanupBatchIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Undo Cleanup Batch Api Admin Cleanup Batches  Batch Id  Undo Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/agent-eval/probes":{"get":{"tags":["admin"],"summary":"List Probes","description":"The repo-shipped probe pack the admin screen offers as a checklist.","operationId":"list_probes_api_admin_agent_eval_probes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ProbeView"},"type":"array","title":"Response List Probes Api Admin Agent Eval Probes Get"}}}}}}},"/api/admin/agent-eval/agents":{"get":{"tags":["admin"],"summary":"List Agents","description":"Agents that can be evaluated.","operationId":"list_agents_api_admin_agent_eval_agents_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AgentView"},"type":"array","title":"Response List Agents Api Admin Agent Eval Agents Get"}}}}}}},"/api/admin/agent-eval/runs":{"get":{"tags":["admin"],"summary":"List Runs","description":"Recent runs, newest first.","operationId":"list_runs_api_admin_agent_eval_runs_get","parameters":[{"name":"agent_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Identity Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RunView"},"title":"Response List Runs Api Admin Agent Eval Runs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin"],"summary":"Trigger Run","description":"Queue a run and dispatch the drain job to execute it.\n\n202, not 200: the row exists and the work is dispatched, but nothing has run\nyet. The client polls ``GET /runs`` for the outcome.","operationId":"trigger_run_api_admin_agent_eval_runs_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerRunRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/agent-eval/runs/{run_id}":{"get":{"tags":["admin"],"summary":"Get Run","description":"One run with its full scorecard and transcript.","operationId":"get_run_api_admin_agent_eval_runs__run_id__get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunDetailView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/agent-eval/runs/{run_id}/cancel":{"post":{"tags":["admin"],"summary":"Cancel Run","description":"Force-terminate a queued or running run right now (TOS-2992).\n\nDistinct from the automatic self-heal on `POST /runs`' 409 (which only\nreclaims a run whose LEASE has already expired): this is the escape hatch\nfor an admin who wants a genuinely wedged - or simply unwanted - run gone\nimmediately, whether or not its lease has expired yet.","operationId":"cancel_run_api_admin_agent_eval_runs__run_id__cancel_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/platform-intelligence/sources":{"get":{"tags":["admin","platform-intelligence"],"summary":"List Sources","operationId":"list_sources_api_admin_platform_intelligence_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"items":{"$ref":"#/components/schemas/SourceStatus"},"type":"array"},"type":"object","title":"Response List Sources Api Admin Platform Intelligence Sources Get"}}}}}}},"/api/admin/platform-intelligence/analyses":{"get":{"tags":["admin","platform-intelligence"],"summary":"List Analyses","operationId":"list_analyses_api_admin_platform_intelligence_analyses_get","parameters":[{"name":"review_status","in":"query","required":false,"schema":{"anyOf":[{"enum":["pending","approved","dismissed"],"type":"string"},{"type":"null"}],"title":"Review Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"queue","in":"query","required":false,"schema":{"anyOf":[{"enum":["actionable","watch","proposals"],"type":"string"},{"type":"null"}],"title":"Queue"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisPage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/platform-intelligence/analyses/{analysis_id}":{"get":{"tags":["admin","platform-intelligence"],"summary":"Get Analysis","operationId":"get_analysis_api_admin_platform_intelligence_analyses__analysis_id__get","parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Analysis Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/AnalysisDetail"},"title":"Response Get Analysis Api Admin Platform Intelligence Analyses  Analysis Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/platform-intelligence/analyses/{analysis_id}/review":{"post":{"tags":["admin","platform-intelligence"],"summary":"Review Analysis","operationId":"review_analysis_api_admin_platform_intelligence_analyses__analysis_id__review_post","parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Analysis Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/AnalysisDetail"},"title":"Response Review Analysis Api Admin Platform Intelligence Analyses  Analysis Id  Review Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/platform-intelligence/analyses/{analysis_id}/proposal":{"post":{"tags":["admin","platform-intelligence"],"summary":"Decide Proposal","description":"Record a human decision on a ticket proposal.\n\nApproving does not create a ticket: nothing in this service files tickets.\nAn approved proposal is a ready-to-file draft; once a person (or an agent\nthey direct) files it in Commons, ``filed`` records the ticket ref.","operationId":"decide_proposal_api_admin_platform_intelligence_analyses__analysis_id__proposal_post","parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Analysis Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposalDecision"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/AnalysisDetail"},"title":"Response Decide Proposal Api Admin Platform Intelligence Analyses  Analysis Id  Proposal Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/platform-intelligence/digests":{"get":{"tags":["admin","platform-intelligence"],"summary":"List Digests","operationId":"list_digests_api_admin_platform_intelligence_digests_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/DigestRecord"}},"title":"Response List Digests Api Admin Platform Intelligence Digests Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/product-events/summary":{"get":{"tags":["admin","product-events"],"summary":"Get Product Event Summary","description":"Daily event counts for one event_key over the trailing `days`.\n\nUses the `idx_product_events_key_time (event_key, created_at DESC)`\nindex (migration 463). Days with zero events are omitted - the caller\nsums/charts what is present; a missing day is a real zero, not an error.","operationId":"get_product_event_summary_api_admin_product_events_summary_get","parameters":[{"name":"event_key","in":"query","required":true,"schema":{"type":"string","title":"Event Key"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductEventSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/product-events/request-updates":{"get":{"tags":["admin","product-events"],"summary":"Get Request Updates Metrics","description":"TOS-7105: did the proactive resolution-notice program help?\n\nDelivered/read/reply rates come from ``request_resolution_notices``' own\ntimestamp columns; opt-outs and \"any update?\" status checks come from\n``product_events``. ``status_checks_by_reporter_week`` is tagged\n``before_launch``/``after_launch`` against the feed's own\n``backfilled_at`` (``unknown`` if the feed has not backfilled yet), which\nis the \"ask fewer 'any update?' questions after launch\" signal.","operationId":"get_request_updates_metrics_api_admin_product_events_request_updates_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestUpdatesMetricsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/sql-traces":{"get":{"tags":["admin","sql-traces"],"summary":"List Traces","operationId":"list_traces_api_admin_sql_traces_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"items":{"$ref":"#/components/schemas/SqlTrace"},"type":"array"},"type":"object","title":"Response List Traces Api Admin Sql Traces Get"}}}}}},"post":{"tags":["admin","sql-traces"],"summary":"Start Trace","operationId":"start_trace_api_admin_sql_traces_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartSqlTraceBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"$ref":"#/components/schemas/SqlTrace"},"type":"object","title":"Response Start Trace Api Admin Sql Traces Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/sql-traces/{trace_id}/stop":{"post":{"tags":["admin","sql-traces"],"summary":"Stop Trace","operationId":"stop_trace_api_admin_sql_traces__trace_id__stop_post","parameters":[{"name":"trace_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Trace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/SqlTrace"},"title":"Response Stop Trace Api Admin Sql Traces  Trace Id  Stop Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/sql-traces/{trace_id}":{"delete":{"tags":["admin","sql-traces"],"summary":"Delete Trace","operationId":"delete_trace_api_admin_sql_traces__trace_id__delete","parameters":[{"name":"trace_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Trace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"boolean"},"title":"Response Delete Trace Api Admin Sql Traces  Trace Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["admin","sql-traces"],"summary":"Get Trace","operationId":"get_trace_api_admin_sql_traces__trace_id__get","parameters":[{"name":"trace_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Trace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Trace Api Admin Sql Traces  Trace Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/sql-traces/{trace_id}/queries":{"get":{"tags":["admin","sql-traces"],"summary":"List Queries","operationId":"list_queries_api_admin_sql_traces__trace_id__queries_get","parameters":[{"name":"trace_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Trace Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"min_ms","in":"query","required":false,"schema":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"title":"Min Ms"}},{"name":"path","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path"}},{"name":"order","in":"query","required":false,"schema":{"enum":["captured_at","duration_ms"],"type":"string","default":"captured_at","title":"Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Queries Api Admin Sql Traces  Trace Id  Queries Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/sql-traces/{trace_id}/queries/{query_id}":{"get":{"tags":["admin","sql-traces"],"summary":"Get Query Detail","operationId":"get_query_detail_api_admin_sql_traces__trace_id__queries__query_id__get","parameters":[{"name":"trace_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Trace Id"}},{"name":"query_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Query Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Query Detail Api Admin Sql Traces  Trace Id  Queries  Query Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/sql-traces/{trace_id}/abandon-stale-workers":{"post":{"tags":["admin","sql-traces"],"summary":"Abandon Stale Capture Workers","description":"Quarantine crash-orphaned workers without calling the trace complete.\n\nRecovery is explicit, delayed, and audited. The workers stay distinct from\nsuccessful drain acknowledgements, and the production walk rejects any trace\ncarrying an abandonment marker.","operationId":"abandon_stale_capture_workers_api_admin_sql_traces__trace_id__abandon_stale_workers_post","parameters":[{"name":"trace_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Trace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbandonCaptureWorkersBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"integer"},"title":"Response Abandon Stale Capture Workers Api Admin Sql Traces  Trace Id  Abandon Stale Workers Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/sql-traces/{trace_id}/export":{"get":{"tags":["admin","sql-traces"],"summary":"Export Trace","operationId":"export_trace_api_admin_sql_traces__trace_id__export_get","parameters":[{"name":"trace_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Trace Id"}},{"name":"format","in":"query","required":false,"schema":{"enum":["json","csv"],"type":"string","default":"json","title":"Format"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Export Trace Api Admin Sql Traces  Trace Id  Export Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/data-model":{"get":{"tags":["admin","data-model"],"summary":"Metadata","operationId":"metadata_api_admin_data_model_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Metadata Api Admin Data Model Get"}}}}}}},"/api/admin/data-model/rows/{relation}":{"get":{"tags":["admin","data-model"],"summary":"Rows","operationId":"rows_api_admin_data_model_rows__relation__get","parameters":[{"name":"relation","in":"path","required":true,"schema":{"enum":["connection_tool_catalog","integration_catalog_status","model_runs","messages"],"type":"string","title":"Relation"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"After"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rows Api Admin Data Model Rows  Relation  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/data-model/cell":{"post":{"tags":["admin","data-model"],"summary":"Cell","operationId":"cell_api_admin_data_model_cell_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CellReference"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Cell Api Admin Data Model Cell Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/substrate/overview":{"get":{"tags":["admin-substrate"],"summary":"Get Overview","operationId":"get_overview_api_admin_substrate_overview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubstrateOverview"}}}}}}},"/api/admin/substrate/search":{"get":{"tags":["admin-substrate"],"summary":"Search Substrate","operationId":"search_substrate_api_admin_substrate_search_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Kind"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Source"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchPage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/substrate/proposition/{proposition_id}/lineage":{"get":{"tags":["admin-substrate"],"summary":"Get Proposition Lineage","operationId":"get_proposition_lineage_api_admin_substrate_proposition__proposition_id__lineage_get","parameters":[{"name":"proposition_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Proposition Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PropositionLineage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/substrate/entity/{entity_id}/lineage":{"get":{"tags":["admin-substrate"],"summary":"Get Entity Lineage","operationId":"get_entity_lineage_api_admin_substrate_entity__entity_id__lineage_get","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Entity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityLineage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/substrate/chat/{chat_id}/impact":{"get":{"tags":["admin-substrate"],"summary":"Get Chat Impact","operationId":"get_chat_impact_api_admin_substrate_chat__chat_id__impact_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRepairImpact"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/substrate/evaluation/{evaluation_id}/forget":{"post":{"tags":["admin-substrate"],"summary":"Forget Evaluation","operationId":"forget_evaluation_api_admin_substrate_evaluation__evaluation_id__forget_post","parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Evaluation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgetResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/substrate/chat/{chat_id}/invalidate":{"post":{"tags":["admin-substrate"],"summary":"Invalidate Chat","operationId":"invalidate_chat_api_admin_substrate_chat__chat_id__invalidate_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReconcileResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/substrate/chat/{chat_id}/restore":{"post":{"tags":["admin-substrate"],"summary":"Restore Chat","operationId":"restore_chat_api_admin_substrate_chat__chat_id__restore_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReconcileResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/mcp/spend/summary":{"get":{"tags":["admin-mcp-spend"],"summary":"Get Summary","description":"Headline totals, including how much traffic could NOT be priced.","operationId":"get_summary_api_admin_mcp_spend_summary_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Summary Api Admin Mcp Spend Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/mcp/spend/rollup":{"get":{"tags":["admin-mcp-spend"],"summary":"Get Rollup","description":"Spend grouped by provider / identity / agent / instance / day.","operationId":"get_rollup_api_admin_mcp_spend_rollup_get","parameters":[{"name":"dimension","in":"query","required":false,"schema":{"type":"string","default":"provider","title":"Dimension"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Days"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Identity Id"}},{"name":"agent_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Identity Id"}},{"name":"instance_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Instance Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Rollup Api Admin Mcp Spend Rollup Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/mcp/spend/unpriced":{"get":{"tags":["admin-mcp-spend"],"summary":"Get Unpriced","description":"Connectors spending money with no rate card - the \"go price these\" list.","operationId":"get_unpriced_api_admin_mcp_spend_unpriced_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Unpriced Api Admin Mcp Spend Unpriced Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/mcp/spend/blocked":{"get":{"tags":["admin-mcp-spend"],"summary":"Get Blocked","description":"Calls a cap or the kill switch refused to dispatch.","operationId":"get_blocked_api_admin_mcp_spend_blocked_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":7,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Blocked Api Admin Mcp Spend Blocked Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/mcp/spend/kill-switch":{"get":{"tags":["admin-mcp-spend"],"summary":"Get Kill Switch","operationId":"get_kill_switch_api_admin_mcp_spend_kill_switch_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KillSwitchOut"}}}}}},"put":{"tags":["admin-mcp-spend"],"summary":"Set Kill Switch","description":"Stop (or resume) ALL paid third-party dispatch.\n\nNot the same lever as the aggregator ``enabled`` flag: that one kills every\ntool call, free or paid. This one stops only calls that spend money.","operationId":"set_kill_switch_api_admin_mcp_spend_kill_switch_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KillSwitchIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KillSwitchOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identities/{identity_id}/avatar":{"get":{"tags":["identity-avatars"],"summary":"Get Identity Avatar","operationId":"get_identity_avatar_api_identities__identity_id__avatar_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identities/by-clerk/{clerk_sub}/avatar":{"get":{"tags":["identity-avatars"],"summary":"Get Identity Avatar By Clerk Sub","description":"Resolve a Clerk session's user.id to its canonical Identity row and\nserve that identity's avatar.\n\nMulti-session switchers (Clerk's useSessionList) hand us the Clerk\nsession's user.id, which isn't always the same as our Identity row's\nclerk_user_id - when a user signs in fresh, Clerk mints a new user\nrecord but bootstrap's email-match merge maps that orphan back to\nthe existing canonical Identity. The new sub never lands on the\nIdentity row, so a direct lookup misses. Fall back to a Clerk\nBackend API lookup → resolve email → re-query Identity by email.","operationId":"get_identity_avatar_by_clerk_sub_api_identities_by_clerk__clerk_sub__avatar_get","parameters":[{"name":"clerk_sub","in":"path","required":true,"schema":{"type":"string","title":"Clerk Sub"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/impersonation/start":{"post":{"tags":["impersonation"],"summary":"Start Impersonation","operationId":"start_impersonation_api_impersonation_start_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/impersonation/end":{"post":{"tags":["impersonation"],"summary":"End Impersonation","operationId":"end_impersonation_api_impersonation_end_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/EndRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/impersonation/targets":{"get":{"tags":["impersonation"],"summary":"List Impersonation Targets","description":"Identities the caller may act as, searchable and paged.\n\n``per_kind=N`` returns at most N rows of each kind (the menu's first view of\na large estate: names to pick from, plus counts for \"View all\"); ``recent``\nreturns the identities this caller most recently acted as, newest first\n(TOS-7987). Neither pages: ``next_cursor`` is always null for them.\n\nOnly actable rows are returned, so the client never has to gate a row it\nwas handed. ``allow_read_only=True`` matches ``POST /start``: opening a\nsession performs no action as the target, and every request the session\nthen makes is re-gated per method by ``get_identity``.","operationId":"list_impersonation_targets_api_impersonation_targets_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Q"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"identity_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"},"maxItems":100},{"type":"null"}],"title":"Identity Ids"}},{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(agent|organization|person)$"},{"type":"null"}],"title":"Kind"}},{"name":"per_kind","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":25,"minimum":1},{"type":"null"}],"title":"Per Kind"}},{"name":"recent","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Recent"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TargetsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/impersonation/check":{"post":{"tags":["impersonation"],"summary":"Check Impersonation Targets","operationId":"check_impersonation_targets_api_impersonation_check_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/impersonation/access":{"get":{"tags":["impersonation"],"summary":"List Act As Access","operationId":"list_act_as_access_api_impersonation_access_get","parameters":[{"name":"target_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Identity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["impersonation"],"summary":"Grant Act As Access","operationId":"grant_act_as_access_api_impersonation_access_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessGrantRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessGrantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/impersonation/access/candidates":{"get":{"tags":["impersonation"],"summary":"List Act As Candidates","operationId":"list_act_as_candidates_api_impersonation_access_candidates_get","parameters":[{"name":"target_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Identity Id"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Q"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidatesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/impersonation/access/{grant_id}":{"delete":{"tags":["impersonation"],"summary":"Revoke Act As Access","operationId":"revoke_act_as_access_api_impersonation_access__grant_id__delete","parameters":[{"name":"grant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Grant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/impersonation/requests":{"get":{"tags":["impersonation"],"summary":"List Requests","operationId":"list_requests_api_impersonation_requests_get","parameters":[{"name":"chat_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Chat Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["impersonation"],"summary":"Post Request","operationId":"post_request_api_impersonation_requests_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestCard"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/impersonation/requests/{request_id}/decision":{"post":{"tags":["impersonation"],"summary":"Post Decision","operationId":"post_decision_api_impersonation_requests__request_id__decision_post","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecisionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestCard"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/impersonation/activity":{"get":{"tags":["impersonation"],"summary":"List Activity","operationId":"list_activity_api_impersonation_activity_get","parameters":[{"name":"target_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Identity Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Before"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/legal/required":{"get":{"tags":["legal"],"summary":"Get Required","operationId":"get_required_api_legal_required_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequiredResponse"}}}}}}},"/api/legal/accept":{"post":{"tags":["legal"],"summary":"Accept","operationId":"accept_api_legal_accept_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/legal/credits-disclosure":{"get":{"tags":["legal"],"summary":"Get Credits Disclosure","operationId":"get_credits_disclosure_api_legal_credits_disclosure_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditsDisclosureStatusResponse"}}}}}}},"/api/legal/credits-disclosure/accept":{"post":{"tags":["legal"],"summary":"Accept Credits Disclosure","operationId":"accept_credits_disclosure_api_legal_credits_disclosure_accept_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditsDisclosureAcceptRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/image-proxy":{"get":{"tags":["image-proxy"],"summary":"Proxy Image Download","description":"Fetch an external image and return it as a same-origin attachment.","operationId":"proxy_image_download_api_image_proxy_get","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":4096,"title":"Url"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/keys":{"post":{"tags":["keys"],"summary":"Create Key","operationId":"create_key_api_keys_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["keys"],"summary":"List Keys","operationId":"list_keys_api_keys_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KeyResponse"},"title":"Response List Keys Api Keys Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/keys/{key_id}":{"delete":{"tags":["keys"],"summary":"Revoke Key","operationId":"revoke_key_api_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Key Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/attachments/shared/{token}":{"get":{"tags":["attachments"],"summary":"Download Shared Attachment","description":"Serve one attachment or agent working file through a short-lived share link\n(TOS-7678, TOS-7684).\n\nUnauthenticated on purpose: the caller is a third-party tool (Higgsfield\n``media_import_url``, curl in a sandbox) holding a URL an agent minted with\n``attachment_url``. The random token is the whole credential, and\n``resolve_share_link`` re-checks on every fetch that the minting agent can\nstill see the attachment in its chat. Unknown, expired and revoked links\nall answer the same 404. Declared before ``/{attachment_id}`` so the\nliteral segment wins.","operationId":"download_shared_attachment_api_attachments_shared__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"head":{"tags":["attachments"],"summary":"Download Shared Attachment","description":"Serve one attachment or agent working file through a short-lived share link\n(TOS-7678, TOS-7684).\n\nUnauthenticated on purpose: the caller is a third-party tool (Higgsfield\n``media_import_url``, curl in a sandbox) holding a URL an agent minted with\n``attachment_url``. The random token is the whole credential, and\n``resolve_share_link`` re-checks on every fetch that the minting agent can\nstill see the attachment in its chat. Unknown, expired and revoked links\nall answer the same 404. Declared before ``/{attachment_id}`` so the\nliteral segment wins.","operationId":"download_shared_attachment_api_attachments_shared__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/attachments/{attachment_id}":{"get":{"tags":["attachments"],"summary":"Download Attachment","description":"Download raw file bytes for an attachment.\n\nRequires the caller to be an active participant of the chat that owns the\nattachment's message. Returns 404 (not 403) for non-participants to avoid\ndisclosing existence.","operationId":"download_attachment_api_attachments__attachment_id__get","parameters":[{"name":"attachment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Attachment Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/attachments/{attachment_id}/render":{"get":{"tags":["attachments"],"summary":"Render Attachment","description":"Return bytes intended for inline attachment display.\n\nThis may serve the cached fit variant when present, while the download route\nalways preserves the original upload bytes and content type.","operationId":"render_attachment_api_attachments__attachment_id__render_get","parameters":[{"name":"attachment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Attachment Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/attachments/{attachment_id}/source-text":{"get":{"tags":["attachments"],"summary":"Attachment Source Text","description":"Return the markdown a GENERATED document was rendered from (TOS-4036).\n\n``generate_pdf`` renders from model-authored markdown, and TOS-2470 already\npersists that markdown on the attachment so the RAG indexer never has to\nre-parse the PDF to recover words it started with. The viewer reuses it for\na Source tab and for in-document text search.\n\nDeliberately restricted to ``generation_type == \"document\"``. A user-uploaded\nPDF also carries ``extracted_text``, but that is parser output, not an\nauthored source: labelling it \"Source\" would present a lossy reconstruction\nas the thing the document was made from.","operationId":"attachment_source_text_api_attachments__attachment_id__source_text_get","parameters":[{"name":"attachment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Attachment Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachmentSourceTextResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind-exports/{job_id}":{"get":{"tags":["mind-exports"],"summary":"Download Mind Export","description":"Download the artifact for a completed export job (any format).\n\nAuthorized to the same callers who may export the mind (self or owner).\nReturns 404 (not 403) for unauthorized callers to avoid disclosing existence.","operationId":"download_mind_export_api_mind_exports__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Job Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/mind/export.tqmind":{"get":{"tags":["mind-portability"],"summary":"Export My Mind","description":"Download my own Mind as a signed ``.tqmind`` package.","operationId":"export_my_mind_api_me_mind_export_tqmind_get","parameters":[{"name":"layers","in":"query","required":false,"schema":{"type":"string","default":"cognitive,memory","title":"Layers"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/mind/import/preview":{"post":{"tags":["mind-portability"],"summary":"Preview My Import","description":"Say what this package would add to my Mind. Commits nothing.","operationId":"preview_my_import_api_me_mind_import_preview_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_preview_my_import_api_me_mind_import_preview_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Preview My Import Api Me Mind Import Preview Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/mind/import":{"post":{"tags":["mind-portability"],"summary":"Import My Mind","description":"Merge a ``.tqmind`` into my own Mind.\n\n``confirm`` is required, so the preview step cannot be skipped by a client\nthat simply forgot it existed.","operationId":"import_my_mind_api_me_mind_import_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_import_my_mind_api_me_mind_import_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Import My Mind Api Me Mind Import Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/mind/sync-links":{"get":{"tags":["mind-portability"],"summary":"List My Sync Links","operationId":"list_my_sync_links_api_me_mind_sync_links_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncLinksResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["mind-portability"],"summary":"Create My Sync Link","description":"Turn on recurring sync from another install I hold an identity on.\n\nThe peer API key is sealed into the credential store bound to that one\nhost, and only its ``THINQOS:`` reference is kept on the link.","operationId":"create_my_sync_link_api_me_mind_sync_links_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSyncLinkRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncLinkView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/mind/sync-links/{link_id}":{"patch":{"tags":["mind-portability"],"summary":"Update My Sync Link","operationId":"update_my_sync_link_api_me_mind_sync_links__link_id__patch","parameters":[{"name":"link_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Link Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSyncLinkRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncLinkView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["mind-portability"],"summary":"Delete My Sync Link","operationId":"delete_my_sync_link_api_me_mind_sync_links__link_id__delete","parameters":[{"name":"link_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Link Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/mind/sync-links/{link_id}/run":{"post":{"tags":["mind-portability"],"summary":"Run My Sync Link","description":"Run this link now instead of waiting for the hourly pass.","operationId":"run_my_sync_link_api_me_mind_sync_links__link_id__run_post","parameters":[{"name":"link_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Link Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncLinkView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/mind/export":{"get":{"tags":["mind-transplant"],"summary":"Export Mind Artifact Open","description":"Download the agent's mind in any export format. Owner-only.\n\n``format='tqmind'`` (default) is the signed closed archive; ``'json-ld'``\n/ ``'yaml-ld'`` are the open linked-data projections (TOS-1348).","operationId":"export_mind_artifact_open_api_agents__agent_id__mind_export_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"layers","in":"query","required":false,"schema":{"type":"string","default":"cognitive,memory","title":"Layers"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"tqmind","title":"Format"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_id}/mind/export.tqmind":{"get":{"tags":["mind-transplant"],"summary":"Export Mind Artifact","description":"Legacy signed ``.tqmind`` download path (pre-TOS-1348 clients).","operationId":"export_mind_artifact_api_agents__agent_id__mind_export_tqmind_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"layers","in":"query","required":false,"schema":{"type":"string","default":"cognitive,memory","title":"Layers"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/import-mind":{"post":{"tags":["mind-transplant"],"summary":"Import Mind Artifact","description":"Import a ``.tqmind``.\n\nDefault (no ``target_agent_id``): mint a brand-new agent owned by the caller.\nWith ``target_agent_id``: graft the donor mind onto that existing agent the\ncaller owns - ``mode=replace`` (snapshot then wipe) or ``mode=merge``\n(non-destructive union). Defaults to ``replace`` when grafting.","operationId":"import_mind_artifact_api_agents_import_mind_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_import_mind_artifact_api_agents_import_mind_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Import Mind Artifact Api Agents Import Mind Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/import-open-mind":{"post":{"tags":["mind-transplant"],"summary":"Import Open Mind Artifact","description":"Import an OPEN linked-data artifact into a brand-new agent (TOS-1348).\n\nAccepts a JSON-LD (``.jsonld``/``.json``) or YAML-LD (``.yaml``/``.yml``)\nmind document, or a Vault-LD markdown vault as a ``.zip``. The format is\nsniffed from the content; signed ``.tqmind`` transplants use\n``/import-mind``. Open artifacts always mint a new agent.","operationId":"import_open_mind_artifact_api_agents_import_open_mind_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_import_open_mind_artifact_api_agents_import_open_mind_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Import Open Mind Artifact Api Agents Import Open Mind Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/{identity_id}/activity":{"get":{"tags":["mind-activity"],"summary":"Get Activity","operationId":"get_activity_api_mind__identity_id__activity_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Category"}},{"name":"channel","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Channel"}},{"name":"tool_name","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tool Name"}},{"name":"access_kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Kind"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Status"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Activity Api Mind  Identity Id  Activity Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/contract":{"get":{"tags":["mind"],"summary":"Get Mind Contract","description":"Verbs, timeout budgets and retirement behaviour. Unauthenticated and cacheable.","operationId":"get_mind_contract_api_mind_contract_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Mind Contract Api Mind Contract Get"}}}}}}},"/api/mind/version":{"get":{"tags":["mind"],"summary":"Get Mind Version","description":"The caller's current Mind version, for cache checks on a quick prime.","operationId":"get_mind_version_api_mind_version_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MindVersion"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/{identity_id}/performance":{"get":{"tags":["mind-performance"],"summary":"Performance","operationId":"performance_api_mind__identity_id__performance_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"default":24,"title":"Hours"}},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Until"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Performance Api Mind  Identity Id  Performance Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mindsets":{"get":{"tags":["mindsets"],"summary":"List Mindsets","description":"List Mindsets visible to the caller (TOS-3280, keyset-paginated).\n\nBoth a caller's own Mindsets and the merged \"mine + platform\" view grow\nwithout bound over the account's lifetime, so this can genuinely exceed\none page. A non-``None`` ``next_cursor`` IS the truncation signal - pass\nit back as ``cursor`` for the next page.","operationId":"list_mindsets_api_mindsets_get","parameters":[{"name":"mine_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mine Only"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":200,"minimum":1},{"type":"null"}],"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MindsetListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mindsets/{template_id}":{"get":{"tags":["mindsets"],"summary":"Get Mindset","operationId":"get_mindset_api_mindsets__template_id__get","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MindsetDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["mindsets"],"summary":"Update Mindset Info","operationId":"update_mindset_info_api_mindsets__template_id__patch","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMindsetInfoRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MindsetSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["mindsets"],"summary":"Delete Mindset","operationId":"delete_mindset_api_mindsets__template_id__delete","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mindsets/{template_id}/sheet":{"get":{"tags":["mindsets"],"summary":"Get Mindset Sheet","operationId":"get_mindset_sheet_api_mindsets__template_id__sheet_get","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Get Mindset Sheet Api Mindsets  Template Id  Sheet Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mindsets/save-as":{"post":{"tags":["mindsets"],"summary":"Save Current Config As Mindset","operationId":"save_current_config_as_mindset_api_mindsets_save_as_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaveAsRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaveAsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mindsets/clone":{"post":{"tags":["mindsets"],"summary":"Clone Mindset","operationId":"clone_mindset_api_mindsets_clone_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MindsetSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mindsets/assemble":{"post":{"tags":["mindsets"],"summary":"Assemble Mindset","description":"Draft only - never persisted. Confirm with POST /assemble/confirm.","operationId":"assemble_mindset_api_mindsets_assemble_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssembleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssembleDraftResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mindsets/assemble/confirm":{"post":{"tags":["mindsets"],"summary":"Confirm Assembled Mindset","description":"Persist a draft the caller has reviewed. Re-validates everything -\nthe draft's operations/rules are never trusted as pre-validated just\nbecause they came from this router's own /assemble a moment ago.","operationId":"confirm_assembled_mindset_api_mindsets_assemble_confirm_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssembleConfirmRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MindsetSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mindsets/{template_id}/versions":{"get":{"tags":["mindsets"],"summary":"List Mindset Versions","description":"Version history for one owned Mindset (TOS-3280, keyset-paginated,\nnewest version first). A Mindset iterated many times over its lifetime\ncan genuinely exceed one page; a non-``None`` ``next_cursor`` IS the\ntruncation signal.","operationId":"list_mindset_versions_api_mindsets__template_id__versions_get","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":200,"minimum":1},{"type":"null"}],"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"versions_get"},"post":{"tags":["mindsets"],"summary":"Create Mindset Version","operationId":"create_mindset_version_api_mindsets__template_id__versions_post","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"versions_create"}},"/api/mindsets/{template_id}/rollback":{"post":{"tags":["mindsets"],"summary":"Rollback Mindset","operationId":"rollback_mindset_api_mindsets__template_id__rollback_post","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RollbackRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MindsetSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mindsets/{template_id}/diff":{"get":{"tags":["mindsets"],"summary":"Diff Mindset Versions","operationId":"diff_mindset_versions_api_mindsets__template_id__diff_get","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"from_version_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"From Version Id"}},{"name":"to_version_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"To Version Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Diff Mindset Versions Api Mindsets  Template Id  Diff Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mindsets/{template_id}/missing-keys":{"get":{"tags":["mindsets"],"summary":"Missing Keys","operationId":"missing_keys_api_mindsets__template_id__missing_keys_get","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissingKeysResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mindsets/bulk-assign/preview":{"post":{"tags":["mindsets"],"summary":"Bulk Assign Preview","operationId":"bulk_assign_preview_api_mindsets_bulk_assign_preview_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkAssignRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BulkAssignItemResponse"},"title":"Response Bulk Assign Preview Api Mindsets Bulk Assign Preview Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mindsets/bulk-assign/apply":{"post":{"tags":["mindsets"],"summary":"Bulk Assign Apply","operationId":"bulk_assign_apply_api_mindsets_bulk_assign_apply_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkAssignRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BulkAssignItemResponse"},"title":"Response Bulk Assign Apply Api Mindsets Bulk Assign Apply Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mindsets/domains/{library_id}/default":{"get":{"tags":["mindsets"],"summary":"Get Folder Default Mindset","operationId":"get_domain_default_mindset_api_mindsets_domains__library_id__default_get","parameters":[{"name":"library_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Library Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainDefaultResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"default_get"},"put":{"tags":["mindsets"],"summary":"Set Folder Default Mindset","description":"Filing a folder-wide default is an edit of the folder, so it takes\nCONFIGURE_RUNGS (same rung documents/integrations/skills/agents take).","operationId":"set_domain_default_mindset_api_mindsets_domains__library_id__default_put","parameters":[{"name":"library_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Library Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetDomainDefaultRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainDefaultResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"default_set"}},"/api/mind/v2/perspectives":{"get":{"tags":["mind-v2"],"summary":"List Perspectives","operationId":"list_perspectives_api_mind_v2_perspectives_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/V2PerspectiveOption"},"title":"Response List Perspectives Api Mind V2 Perspectives Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/write-access":{"get":{"tags":["mind-v2"],"summary":"Get Mind Write Access","description":"Report the caller's authorship of this Mind. Read-only.\n\nGated by the READ check, deliberately: a member who may see the Mind may\nalso see whether they are allowed to change it. It reports the decision the\nwrite gate would make; it never makes one.","operationId":"get_mind_write_access_api_mind_v2_perspective__identity_id__write_access_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2MindWriteAccessResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/person-entity":{"get":{"tags":["mind-v2"],"summary":"Get Person Entity","description":"Resolve the canonical person Entity bound to `identity_id` (W8 fix).\n\nThe theory-of-mind UI needs the viewer's own person Entity to ask\nother Minds \"what do you believe about me\". Scraping it from the\ncurrent Mind's graph payload fails when that Mind holds no\nproposition about the viewer. This resolves it authoritatively from\nthe world graph (design W2: one active person Entity per identity).\n\nIdentity-scoped through the SAME `_check_perspective_access` gate\nevery sibling endpoint uses. `entity_id` is null when none exists.","operationId":"get_person_entity_api_mind_v2_perspective__identity_id__person_entity_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2PersonEntityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/summary":{"get":{"tags":["mind-v2"],"summary":"Get Perspective Summary","operationId":"get_perspective_summary_api_mind_v2_perspective__identity_id__summary_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2PerspectiveSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/settings":{"get":{"tags":["mind-v2"],"summary":"Get Perspective Settings","description":"TOS-1981: read this Mind's consolidation_authority (auto | manual).\n\nSame gate every sibling perspective route uses. A missing IdentityConfig\nrow (never configured) reads as the default 'auto' - same as the\nIdentityConfig.consolidation_authority property itself.","operationId":"get_perspective_settings_api_mind_v2_perspective__identity_id__settings_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2PerspectiveSettings"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["mind-v2"],"summary":"Update Perspective Settings","description":"TOS-1981: set this Mind's consolidation_authority.\n\nOWNER-ONLY: `_check_perspective_access` is the strictest existing check\n(self OR an active agent owner) - the same gate every sibling perspective\nroute already uses for reads, reused here unchanged for the write.\n\nmanual -> auto releases every 'pending_review' evaluation on this Mind to\n'active' and bumps mind_version, in the SAME transaction as the setting\nchange - the owner opting back into auto review must immediately surface\nwhatever was quarantined, not leave it stuck until the next unrelated\nwrite. auto -> manual affects only FUTURE consolidation writes; existing\nactive rows are left untouched.","operationId":"update_perspective_settings_api_mind_v2_perspective__identity_id__settings_put","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2PerspectiveSettings"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2PerspectiveSettings"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/propositions":{"get":{"tags":["mind-v2"],"summary":"List Propositions","operationId":"list_propositions_api_mind_v2_perspective__identity_id__propositions_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/V2Proposition"},"title":"Response List Propositions Api Mind V2 Perspective  Identity Id  Propositions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/holdings":{"get":{"tags":["mind-v2"],"summary":"List Holdings","operationId":"list_holdings_api_mind_v2_perspective__identity_id__holdings_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kind"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}},{"name":"memory_view","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Memory View"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/V2Holding"},"title":"Response List Holdings Api Mind V2 Perspective  Identity Id  Holdings Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/memory-page":{"get":{"tags":["mind-v2"],"summary":"List Memory Page","description":"Bounded memory browsing; legacy commitment/list array contracts stay unchanged.","operationId":"list_memory_page_api_mind_v2_perspective__identity_id__memory_page_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"kind","in":"query","required":true,"schema":{"enum":["belief","goal","task","preference","procedure","working_thought","lesson"],"type":"string","title":"Kind"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","maxLength":500,"default":"","title":"Search"}},{"name":"confidence","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"enum":["established","forming","tentative"],"type":"string"}},{"type":"null"}],"title":"Confidence"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2MemoryPage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/items":{"get":{"tags":["mind-v2"],"summary":"List Mind Items","description":"Mind page Data tab: beliefs, holdings and named entities as one table (TOS-2314).\n\nFilter, count, sort, page and facets all read one ``UNION ALL`` derived\ntable, so they agree on which rows exist. Visibility gates are the memory\npage's (beliefs and holdings) and the graph's (entities). ``links`` and\n``attention`` and the other computed columns are projected over that\nauthorized table when requested for sorting, filtering or faceting.\n\nStatements per request, constant in the number of rows: the access check\n(none for your own Mind), the Mind lookup, the disclosure scope lookup,\nthen one count (or, with ``facets=true``, one GROUPING SETS statement that\nyields the totals and every facet together), one page (whose entity rows\ncarry their reference strength in the same statement, TOS-7913), and one\ngrouped link count for the page. The page and link statements are skipped when\nnothing matches. Page enrichment adds one endpoint-label lookup and up to\nthree authorized provenance lookups. At most 9 statements for an owner's\npage without column-value facets; a requested column adds one bounded\naggregation statement. With ``facet_only=true``, the response contains only\ncolumn values and truncation; totals, rows and page enrichment are skipped.\nNo per-row client queries.","operationId":"list_mind_items_api_mind_v2_perspective__identity_id__items_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":100,"title":"Limit"}},{"name":"facets","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Facets"}},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"enum":["summary","type","layer","confidence","salience","decay_rate","valence","arousal","state","protection","source","kind","importance","reinforcement_count","usage_count","activation_count","created_at","updated_at","last_stated_at","last_recalled_at","last_activated_at","last_challenged_at","links","attention","activity","about","source_detail","status"],"type":"string"},{"type":"null"}],"title":"Sort"}},{"name":"dir","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"desc","title":"Dir"}},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"enum":["belief","goal","task","preference","procedure","working_thought","lesson","person","agent","organization","document","thing"],"type":"string"}},{"type":"null"}],"title":"Type"}},{"name":"layer","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"enum":["core","reinforced","transient","none"],"type":"string"}},{"type":"null"}],"title":"Layer"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"State"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Source"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Status"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","maxLength":500,"default":"","title":"Search"}},{"name":"min_confidence","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Min Confidence"}},{"name":"max_confidence","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Max Confidence"}},{"name":"min_salience","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Min Salience"}},{"name":"max_decay","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Max Decay"}},{"name":"min_reinforced","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Min Reinforced"}},{"name":"created_within_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Created Within Days"}},{"name":"updated_within_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Updated Within Days"}},{"name":"pinned","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Pinned"}},{"name":"source_chat_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Source Chat Id"}},{"name":"sorts","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"},"maxItems":28},{"type":"null"}],"title":"Sorts"}},{"name":"value_filters","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":65536},{"type":"null"}],"title":"Value Filters"}},{"name":"facet_column","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Facet Column"}},{"name":"facet_search","in":"query","required":false,"schema":{"type":"string","maxLength":500,"default":"","title":"Facet Search"}},{"name":"facet_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Facet Only"}},{"name":"column_conditions","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":65536},{"type":"null"}],"title":"Column Conditions"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/V2MindItemsPage"},{"$ref":"#/components/schemas/V2MindColumnValues"}],"title":"Response List Mind Items Api Mind V2 Perspective  Identity Id  Items Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/items/{item_id}":{"get":{"tags":["mind-v2"],"summary":"Get Mind Item Detail","description":"One visible item with bounded, visibility-gated local connections.","operationId":"get_mind_item_detail_api_mind_v2_perspective__identity_id__items__item_id__get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2MindItemDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/contents/definitions":{"get":{"tags":["mind-v2"],"summary":"Get Contents Definitions","description":"What each Contents column means, its allowed values and the numbers behind its rules.\n\nStatic text and constants, read from the same sources the table and the\nCSV use, so the answer cannot differ from the behavior it describes.","operationId":"get_contents_definitions_api_mind_v2_contents_definitions_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2ContentsDefinitions"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/items.csv":{"get":{"tags":["mind-v2"],"summary":"Export Mind Items Csv","description":"The Data tab's filtered, sorted rows as ``mind-items.csv``.\n\nSame gates, filters and sort as ``/items``. ``columns`` picks and orders\nthe fields (default: every Contents field in the registry, headed by its Title Case\nlabel; ``keys=true`` adds a second header row of the machine keys). Enum\nvalues, Status and Sources are written as their labels, and a missing value\nis spelled out as Not Applicable, Unknown or Not Recorded. At most\n20,000 rows are written, read in pages of 1,000; when the filtered set is\nlarger the response carries ``X-Truncated: true`` (and always\n``X-Total-Count``) instead of a trailing marker line. After a blank line a\n``Definitions`` section explains each exported column (label, key, layer,\nmeaning, which Types it applies to) and a ``Values`` section lists every\nlabel with its machine key and stored values; the rows above are the table.\nText cells that start with ``=``, ``+``, ``-``, ``@``, a tab or a carriage\nreturn get a leading apostrophe so a spreadsheet shows them as text.\n\nStatements: the three context statements, one count, then one page and\none link count per 1,000 rows (the link count only when ``links`` is a\nrequested column). Each page also uses one endpoint-label lookup and up to\nthree authorized provenance lookups, independent of the number of rows.","operationId":"export_mind_items_csv_api_mind_v2_perspective__identity_id__items_csv_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"columns","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"enum":["id","ref_kind","type","kind","summary","layer","confidence","importance","salience","decay_rate","decay_half_life_days","last_touched_at","valence","arousal","state","protection","confirmed","source","reinforcement_count","usage_count","activation_count","links","attention","references","pinned","created_at","updated_at","last_stated_at","last_recalled_at","last_activated_at","last_challenged_at","identity_id","mind_id","subject_entity_id","object_entity_id","about","source_detail","source_chat_id","activity","status","status_label","review_reason","said_by","description","sources","created_by"],"type":"string"}},{"type":"null"}],"title":"Columns"}},{"name":"keys","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Keys"}},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"enum":["summary","type","layer","confidence","salience","decay_rate","valence","arousal","state","protection","source","kind","importance","reinforcement_count","usage_count","activation_count","created_at","updated_at","last_stated_at","last_recalled_at","last_activated_at","last_challenged_at","links","attention","activity","about","source_detail","status"],"type":"string"},{"type":"null"}],"title":"Sort"}},{"name":"dir","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"desc","title":"Dir"}},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"enum":["belief","goal","task","preference","procedure","working_thought","lesson","person","agent","organization","document","thing"],"type":"string"}},{"type":"null"}],"title":"Type"}},{"name":"layer","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"enum":["core","reinforced","transient","none"],"type":"string"}},{"type":"null"}],"title":"Layer"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"State"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Source"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Status"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","maxLength":500,"default":"","title":"Search"}},{"name":"min_confidence","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Min Confidence"}},{"name":"max_confidence","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Max Confidence"}},{"name":"min_salience","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Min Salience"}},{"name":"max_decay","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Max Decay"}},{"name":"min_reinforced","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Min Reinforced"}},{"name":"created_within_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Created Within Days"}},{"name":"updated_within_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Updated Within Days"}},{"name":"pinned","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Pinned"}},{"name":"source_chat_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Source Chat Id"}},{"name":"sorts","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"},"maxItems":28},{"type":"null"}],"title":"Sorts"}},{"name":"value_filters","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":65536},{"type":"null"}],"title":"Value Filters"}},{"name":"facet_column","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Facet Column"}},{"name":"facet_search","in":"query","required":false,"schema":{"type":"string","maxLength":500,"default":"","title":"Facet Search"}},{"name":"facet_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Facet Only"}},{"name":"column_conditions","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":65536},{"type":"null"}],"title":"Column Conditions"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/working-set":{"get":{"tags":["mind-v2"],"summary":"Get Working Set","operationId":"get_working_set_api_mind_v2_perspective__identity_id__working_set_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/V2WorkingSetItem"},"title":"Response Get Working Set Api Mind V2 Perspective  Identity Id  Working Set Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/consolidated":{"get":{"tags":["mind-v2"],"summary":"List Consolidated","description":"Keyset-paginated \"Needs You\" queue of consolidated propositions\n(TOS-3280); pass the previous response's ``next_cursor`` to load older\nones. 400 on a malformed cursor.","operationId":"list_consolidated_api_mind_v2_perspective__identity_id__consolidated_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"confirmed","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Confirmed"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":200,"minimum":1},{"type":"null"}],"default":200,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2ConsolidatedPropositionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/consolidated/dismiss-all":{"post":{"tags":["mind-v2"],"summary":"Dismiss All Consolidated","description":"TOS-1733 Phase 1: persist \"keep all as guess\" in bulk.\n\nMatches list_consolidated's own filter exactly, so this clears precisely\nwhat the Needs You screen currently shows for this identity - a batch\ninterview extraction that produced dozens of pending guesses can be\ncleared in one call instead of one per row.","operationId":"dismiss_all_consolidated_api_mind_v2_perspective__identity_id__consolidated_dismiss_all_post","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"integer"},"title":"Response Dismiss All Consolidated Api Mind V2 Perspective  Identity Id  Consolidated Dismiss All Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/attention-count":{"get":{"tags":["mind-v2"],"summary":"Attention Count","operationId":"attention_count_api_mind_v2_perspective__identity_id__attention_count_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2AttentionCount"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/conflicts":{"get":{"tags":["mind-v2"],"summary":"List Conflicts","operationId":"list_conflicts_api_mind_v2_perspective__identity_id__conflicts_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/V2Conflict"},"title":"Response List Conflicts Api Mind V2 Perspective  Identity Id  Conflicts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/conflicts/{conflict_id}/resolve":{"post":{"tags":["mind-v2"],"summary":"Resolve Conflict","operationId":"resolve_conflict_api_mind_v2_perspective__identity_id__conflicts__conflict_id__resolve_post","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"conflict_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Conflict Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2ResolveConflictRequest"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/journal":{"get":{"tags":["mind-v2"],"summary":"Get Mind Journal","description":"The Mind Journal change feed (TOS-1980): four sections replacing the\nold \"Needs You\" panel.\n\n- ``new_lessons``: consolidated propositions awaiting nothing (viewing is\n  enough) - same source/filter as the existing ``/consolidated`` endpoint\n  (``confirmed=False``, not dismissed), so the existing action endpoints\n  (confirm/dismiss/forget) keep working unchanged.\n- ``now_stable``: earned-stable ratification promotions (TOS-1982 Phase\n  1), excluding any evaluation the user has since reverted via\n  ``/ratify-revert`` - a durable veto, not a temporary demotion.\n- ``needs_decision``: open conflicts ordered by urgency descending - one of\n  the two categories the Mind nav badge itself counts (TOS-2464). The\n  other is ``MindEvaluation.lifecycle_status == \"pending_review\"`` -\n  manual-mode quarantine, not a plain unconfirmed row - so the badge and\n  this section can disagree on ``new_lessons``: an auto-mode lesson shows\n  up here for review but does not add to the badge, because nothing is\n  actually blocked on it. See ``PerspectiveService.attention_counts``.\n- ``retrospect`` (TOS-2264 Phase A): self-critique findings from the\n  sleep cycle's retrospect stage, most recent first - every finding is\n  shown regardless of whether its proposal auto-applied or is awaiting\n  owner review.\n\nEach section is capped at ``limit`` (default 20) and carries its own\n``total`` so the UI can render \"showing N of TOTAL\" per section\nindependently. ``cognitive_events`` is read-only here; every row action\n(confirm/dismiss/forget/ratify-revert/conflict-resolve) goes through its\nexisting dedicated endpoint, never through this route.","operationId":"get_mind_journal_api_mind_v2_perspective__identity_id__journal_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2JournalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/journal/opened":{"post":{"tags":["mind-v2"],"summary":"Record Journal Opened","description":"Open-rate instrumentation (TOS-1980): fired once per page-load when\nthe Journal becomes visible, never per collapse toggle. Best-effort via\nthe shared ``product_events`` mechanism - never fails the request it\ninstruments.","operationId":"record_journal_opened_api_mind_v2_perspective__identity_id__journal_opened_post","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2JournalOpenedRequest"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/graph":{"get":{"tags":["mind-v2"],"summary":"Get Graph","operationId":"get_graph_api_mind_v2_perspective__identity_id__graph_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Limit"}},{"name":"include_content","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Content"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2GraphPayload"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/minds/{mind_id}/about/{entity_id}":{"get":{"tags":["mind-v2"],"summary":"Get Beliefs About Entity","description":"Theory-of-mind surface (spec section 8, W8).\n\nReturns the given Mind's evaluations on propositions whose subject is\n`entity_id`. Identity-scoped through the SAME `_check_perspective_access`\ngate the sibling endpoints use, resolved via the Mind's owning identity.","operationId":"get_beliefs_about_entity_api_mind_v2_minds__mind_id__about__entity_id__get","parameters":[{"name":"mind_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Mind Id"}},{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Entity Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2AboutEntityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/about/{entity_id}":{"get":{"tags":["mind-v2"],"summary":"Get Perspective Beliefs About Entity","description":"Identity-scoped alias of the theory-of-mind surface (W8).\n\nSame query and gate as `/minds/{mind_id}/about/{entity_id}`, keyed by\nthe owning identity so the dashboard can call it with the same\nidentity-scoped pattern every sibling endpoint uses. Resolves the\nidentity's Mind, then delegates to the shared logic.","operationId":"get_perspective_beliefs_about_entity_api_mind_v2_perspective__identity_id__about__entity_id__get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Entity Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2AboutEntityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/recall":{"post":{"tags":["mind-v2"],"summary":"Recall Endpoint","operationId":"recall_endpoint_api_mind_v2_perspective__identity_id__recall_post","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2RecallRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Recall Endpoint Api Mind V2 Perspective  Identity Id  Recall Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/believe":{"post":{"tags":["mind-v2"],"summary":"Believe Endpoint","operationId":"believe_endpoint_api_mind_v2_perspective__identity_id__believe_post","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2BelieveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Believe Endpoint Api Mind V2 Perspective  Identity Id  Believe Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/consolidate":{"post":{"tags":["mind-v2"],"summary":"Consolidate Endpoint","operationId":"consolidate_endpoint_api_mind_v2_perspective__identity_id__consolidate_post","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Consolidate Endpoint Api Mind V2 Perspective  Identity Id  Consolidate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/rebuild":{"post":{"tags":["mind-v2"],"summary":"Rebuild Perspective Endpoint","description":"Self-serve Rebuild or Re-read Conversations of a Mind (own or owned agent).\n\n``mode=reinterpret`` (Re-read Conversations, the default) re-extracts via the LLM\nextraction pipeline; a decision that cannot be re-applied afterwards comes back\nas a Needs Review Item. ``mode=reapply`` (alias ``reconstruct``; Rebuild) replays the stored event\nlog (LLM-free, instant) and requires stored events (409 if none).\n\n``scope`` (TOS-498, reinterpret only):\n  * ``needs_work`` (default) — re-extract only the chats that need it\n    (drifted / failed / blocked). Does NOT purge the mind; resets those\n    chats' latest episodes to retry-eligible and lets the extraction sweep\n    re-extract them. The targeted, cheap path the rebuild dialog uses.\n  * ``full`` — purge the whole projection and re-extract every chat.\n\nCaller must own the target Mind (self or active owner of the agent).\nInactive identities are refused because their chats should not be replayed\ninto a fresh projection. The client must pass back the estimate the user\naccepted so a stale dialog cannot start a more expensive rebuild.","operationId":"rebuild_perspective_endpoint_api_mind_v2_perspective__identity_id__rebuild_post","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"mode","in":"query","required":false,"schema":{"enum":["reapply","reconstruct","reinterpret"],"type":"string","default":"reinterpret","title":"Mode"}},{"name":"scope","in":"query","required":false,"schema":{"enum":["needs_work","full"],"type":"string","default":"needs_work","title":"Scope"}},{"name":"include_captures","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Captures"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2RebuildAcknowledgement"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rebuild Perspective Endpoint Api Mind V2 Perspective  Identity Id  Rebuild Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/rebuild-status":{"get":{"tags":["mind-v2"],"summary":"Rebuild Perspective Status Endpoint","description":"Return durable extraction progress for a Mind rebuild.","operationId":"rebuild_perspective_status_endpoint_api_mind_v2_perspective__identity_id__rebuild_status_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rebuild Perspective Status Endpoint Api Mind V2 Perspective  Identity Id  Rebuild Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspectives/sleep-statuses":{"get":{"tags":["mind-v2"],"summary":"Get Perspective Sleep Statuses","description":"Return directory-visible agent statuses with fixed-query authorization and reads.","operationId":"get_perspective_sleep_statuses_api_mind_v2_perspectives_sleep_statuses_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/V2SleepStatus"},"propertyNames":{"format":"uuid"},"title":"Response Get Perspective Sleep Statuses Api Mind V2 Perspectives Sleep Statuses Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/sleep-status":{"get":{"tags":["mind-v2"],"summary":"Get Perspective Sleep Status","description":"TOS-1984 Phase 1/2: truthful Awake/Sleeping presence for a Mind.\n\nLightweight, read-only view over ``mind_sleep_cycles`` - deliberately NOT\nfolded into the heavy `/graph` payload since the header badge polls this\non its own 60s interval independent of graph loads. Phase 2 additive:\n``wake_state='woken_by_you'`` surfaces a turn-start wake (TOS-1979 Phase\nB, ``defer_running_cycle``) truthfully; this endpoint only ever reports\nwhat the sleep-cycle-dispatcher itself has durably recorded.\n\nTOS-2265: access is CHAT-ENTITLED, not owner-only - deliberately its own\ncheck (``check_chat_entitled_access``), wider than every other route in\nthis file that still uses `/rebuild-status`'s owner-scoped\n`_check_perspective_access`. Anyone who could open a chat with this agent\ncould already wake it by sending a message, so seeing that it is asleep\nis not a new disclosure.","operationId":"get_perspective_sleep_status_api_mind_v2_perspective__identity_id__sleep_status_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2SleepStatus"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/sleep-report":{"get":{"tags":["mind-v2"],"summary":"Get Perspective Sleep Report","description":"TOS-2532 Phase 2: the smartwatch-style sleep report - one session's\nfull stage timeline plus the trailing session series the report UI's\ntrend strip plots. TOS-2265: same CHAT-ENTITLED access check as\n`/sleep-status` (`check_chat_entitled_access`) - the widening this\ndocstring originally anticipated landing automatically via\n`_check_perspective_access` instead landed as its own dedicated check\n(see that function's docstring for why), so this call site was updated\nto match explicitly rather than silently staying owner-only.\n\nTOS-2777: optional ``?session_id=`` selects a PRIOR night's timeline so\nthe report UI can page backward through history. Omitted (the default)\nis the unchanged Phase 2 behavior - the most recent session. The id is\nalways re-scoped to this Mind, so it can only ever address a night this\ncaller was already entitled to read.\n\nTOS-2777 Gate C: the report's ``learning_narrative`` field carries real\nproposition/retrospect content, not status - narrower than this route's\nown chat-entitled gate, so it is independently withheld from a\nnon-owner caller (see ``_learning_narrative_for_session``).","operationId":"get_perspective_sleep_report_api_mind_v2_perspective__identity_id__sleep_report_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2SleepReport"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/wake":{"post":{"tags":["mind-v2"],"summary":"Wake Perspective Endpoint","description":"TOS-2265: deliberately interrupt a running sleep cycle.\n\nSame access as `/sleep-status` (chat-entitled, not owner-only) and the\nsame underlying primitive a chat turn already triggers as a side effect\n(``defer_running_cycle`` - see ``services.cognitive_v2.sleep_cycle``).\nThis endpoint is that interruption made explicit and callable without\nsending a message; it is never a second writer of ``mind_sleep_cycles``.\n\nRate-limited per (agent, caller) pair so a looped caller cannot keep this\nMind permanently deferred - see ``services.cognitive_v2.\nwake_rate_limit``. Only a call that actually defers a running cycle\nspends the caller's budget; a call against an already-awake Mind is a\nfree no-op.","operationId":"wake_perspective_endpoint_api_mind_v2_perspective__identity_id__wake_post","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2WakeResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/sleep-now":{"post":{"tags":["mind-v2"],"summary":"Force Sleep Endpoint","description":"TOS-6024: force one full sleep cycle NOW (owner/admin only).\n\nThe owner-facing counterpart of the scheduled quiet-hours dispatcher: an\nowner training or tuning an agent should be able to run the whole sleep\npipeline (settle -> replay -> decay -> consolidate -> dormancy ->\nfeedback -> retrospect -> REM -> prior_seed -> waking_validate) on\ndemand instead of waiting for the Mind's derived quiet window and its\n20h recycle cadence, so consolidation/lesson-processing is immediately\ntestable.\n\nAuthorization mirrors the other ORG-WIDE mutating routes here\n(``require_admin=True``): self, an active owner of the agent, or the org\nOWNER role. An org admin/edit member is refused - a forced cycle rewrites\nthe Mind's salience and confidence wholesale, the same class of act as\n``/rebuild``, not a per-belief edit.\n\nThe cycle runs as a detached background task (it can take minutes);\nadmission is validated synchronously so a refusal (no Mind, already\nsleeping) is an immediate 404/409 with the real reason, not a silent\nno-op. There is deliberately no recent-activity gate here (TOS-7771): a\nforced cycle is for testing and power use; only the scheduled dispatcher\nwaits for the Mind to go quiet. While it runs, `/sleep-status`\nreports ``state: \"sleeping\"`` and the `/sleep-report` timeline records\nthe episode with ``trigger_reason: \"administrative\"``.","operationId":"force_sleep_endpoint_api_mind_v2_perspective__identity_id__sleep_now_post","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2ForceSleepResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/chats/{chat_id}/reextract":{"post":{"tags":["mind-v2"],"summary":"Reextract Chat Endpoint","description":"Re-extract a single chat into a perspective (TOS-498).\n\nResets the chat's latest episode to retry-eligible so the next extraction\nsweep picks it up — the per-chat alternative to a whole-mind rebuild for a\ndrifted or blocked chat. Idempotent on a live pending/windowing/extracting\nepisode; a never-extracted chat gets one new durable queue row.","operationId":"reextract_chat_endpoint_api_mind_v2_perspective__identity_id__chats__chat_id__reextract_post","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chat Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"boolean"},{"type":"null"}]},"title":"Response Reextract Chat Endpoint Api Mind V2 Perspective  Identity Id  Chats  Chat Id  Reextract Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/rebuild-estimate":{"get":{"tags":["mind-v2"],"summary":"Rebuild Estimate Endpoint","description":"Read-only cost/mode estimate for a rebuild (used by the rebuild dialog).\n\n``scope=needs_work`` (default) prices only the chats that actually need\nre-extraction (drifted/failed/blocked/never-extracted); ``scope=full``\nprices a from-scratch re-extraction of every chat. TOS-498.\n\n``include_captures=False`` (TOS-1005) prices a conversations-only rebuild\nthat skips capture chats (those with a non-null ``source``), so the\ndialog can show that cheaper option without committing to it.","operationId":"rebuild_estimate_endpoint_api_mind_v2_perspective__identity_id__rebuild_estimate_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"scope","in":"query","required":false,"schema":{"enum":["needs_work","full"],"type":"string","default":"needs_work","title":"Scope"}},{"name":"include_captures","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Captures"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rebuild Estimate Endpoint Api Mind V2 Perspective  Identity Id  Rebuild Estimate Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/introspect":{"get":{"tags":["mind-v2"],"summary":"Introspect Endpoint","operationId":"introspect_endpoint_api_mind_v2_perspective__identity_id__introspect_get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Introspect Endpoint Api Mind V2 Perspective  Identity Id  Introspect Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/evaluations/{evaluation_id}/confirm":{"post":{"tags":["mind-v2"],"summary":"Confirm Evaluation","operationId":"confirm_evaluation_api_mind_v2_evaluations__evaluation_id__confirm_post","parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Evaluation Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/evaluations/{evaluation_id}/dismiss":{"post":{"tags":["mind-v2"],"summary":"Dismiss Evaluation","description":"TOS-1733 Phase 1: persist \"keep as guess\" from the Needs You screen.\n\nUnlike confirm, dismissing at guess-tier does not change the STABLE\nconfirmed belief set - it only stops this row resurfacing in the Needs\nYou queue - so no mind_version bump is needed here.\n\nTOS-1981: dismissing a quarantined ('pending_review') evaluation ALSO\nreleases it to 'active'. Keep-as-guess must release the row into normal\nranking (same TOS-1733 semantics as any other dismiss) - leaving it\nquarantined forever would be forget-by-stealth, silently hiding a belief\nthe owner explicitly chose to keep rather than delete.","operationId":"dismiss_evaluation_api_mind_v2_evaluations__evaluation_id__dismiss_post","parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Evaluation Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/evaluations/{evaluation_id}/constitution-pin":{"post":{"tags":["mind-v2"],"summary":"Pin Evaluation To Constitution","description":"Pin a confirmed belief to the Constitution (TOS-1412, TOS-1398 §2.1).\n\nThe Constitution is the ONLY always-on Mind channel; membership is a\ndeliberate act. This route is the sanctioned pin surface (spec invariant\n2: extraction can never set the flag). Only confirmed beliefs are\npinnable - the Constitution read (``list_constitution``) filters on\n``confirmed``, so pinning an unconfirmed row would be a silent no-op;\nreject it loudly instead so the UI directs the user to confirm first.","operationId":"pin_evaluation_to_constitution_api_mind_v2_evaluations__evaluation_id__constitution_pin_post","parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Evaluation Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/evaluations/{evaluation_id}/constitution-unpin":{"post":{"tags":["mind-v2"],"summary":"Unpin Evaluation From Constitution","description":"Remove a belief from the Constitution (TOS-1412).\n\nUnpinning never touches ``confirmed`` or ``protection_level`` - the belief\nstays held-true and keeps competing through the attention package; it just\nstops being always-on. Locked (constitutional-seed) rows are Constitution\nmembers via ``protection_level='locked'``, not via the pin, so unpinning\ncannot remove them - by design (they are the non-negotiable core).\n\nTOS-1982 Phase 2: a real True->False transition also emits an ELEVATE\n``constitution_unpin`` event, regardless of whether the pin being removed\nwas applied by a human or by the constitution-candidacy auto-pin sweep.\nThis is a durable veto - see ``constitution_candidacy.\nwas_constitution_unpinned`` - so a LATER consolidation pass never\nsilently re-pins this SAME evaluation even if it still satisfies every\nauto-pin criterion. The user retains the ordinary manual pin route to\nre-add it at any time; only the AUTOMATIC sweep is vetoed.","operationId":"unpin_evaluation_from_constitution_api_mind_v2_evaluations__evaluation_id__constitution_unpin_post","parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Evaluation Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/evaluations/{evaluation_id}":{"patch":{"tags":["mind-v2"],"summary":"Update Evaluation","description":"Edit a MindEvaluation's confidence (TOS-128 A2-followup).\n\nConfidence-only: proposition text is the canonical extracted claim and its\nidentity (claim_key, hash) depend on it - mutability of text is a deeper\ndesign question deferred for now. Identity-scoped via the same ownership\ngate the other evaluation routes use.","operationId":"update_evaluation_api_mind_v2_evaluations__evaluation_id__patch","parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Evaluation Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2UpdateEvaluationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2MindEvaluation"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/holdings/{holding_id}":{"patch":{"tags":["mind-v2"],"summary":"Update Holding","description":"Edit a MindHolding's confidence.\n\nMirrors PATCH /evaluations/{id}: confidence-only, identity-gated, bumps\nthe mind version so prompt-cache picks up the new strength.","operationId":"update_holding_api_mind_v2_holdings__holding_id__patch","parameters":[{"name":"holding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Holding Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2UpdateHoldingRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2Holding"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/minds/{mind_id}/working-set":{"get":{"tags":["mind-v2"],"summary":"Get Mind Working Set","description":"Fast, TTL-filtered working-set read for a Mind (design.md section 6).\n\nIdentity-scoped: the caller must own the Mind (self, or active agent\nowner) via the same gate the perspective endpoints use. Kept lean and\non its own endpoint so the chat hot path can read \"what is in mind\nnow\" without the heavier perspective joins (section 12 latency note).\nTTL-expired items are filtered out of the response. This is a pure\nread: get_db does not commit the request session, so it must not\nmutate. The physical drop of stale items happens on the next\nattention write (WorkingSetService.update), not on this poll.","operationId":"get_mind_working_set_api_mind_v2_minds__mind_id__working_set_get","parameters":[{"name":"mind_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Mind Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2WorkingSetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/perspective/{identity_id}/working-set/pin":{"post":{"tags":["mind-v2"],"summary":"Set Working Set Pin","description":"Pin or unpin one working-set item (TOS-1086 4.1).\n\nA pinned item is exempt from the working-set TTL and from the attention\nscore-ordered cap, which together guarantee it prompt entry next turn\n(spec section P2: \"pinning a working-set item guarantees prompt entry\").\nThe pin overrides SCORE only; it never overrides the TOS-413 disclosure\nfilter, so a pinned belief still cannot leak to an audience it is not\ndisclosed to.\n\nIdentity-keyed to match ``get_working_set`` (the surface the Mind UI reads\nfrom). Same ownership gate: the caller must own the Mind.\n``WorkingSetService.set_pinned`` raises ``ValueError`` when the item is not\nin the working set or the pin cap is exceeded; both surface as 409 (a\nbroken guarantee must fail loudly, never silently).","operationId":"set_working_set_pin_api_mind_v2_perspective__identity_id__working_set_pin_post","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2WorkingSetPinRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2WorkingSetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/evaluations/{evaluation_id}/lock":{"post":{"tags":["mind-v2"],"summary":"Lock Evaluation","operationId":"lock_evaluation_api_mind_v2_evaluations__evaluation_id__lock_post","parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Evaluation Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/evaluations/{evaluation_id}/unlock":{"post":{"tags":["mind-v2"],"summary":"Unlock Evaluation","description":"Demote a belief out of the non-negotiable 'locked' tier (TOS-1698 P2).\n\nReverses /lock. A constitutional (profile-derived) belief falls back to the\n'seeded' tier so it stays always-on under the soft \"from your profile\"\nheader; any other belief falls back to 'none' and competes through the\nnormal attention package. ``confirmed`` is left untouched - unlocking\nchanges how NON-NEGOTIABLE a belief is, not whether it is held true. No-op\nsafe: a belief that is not locked is returned unchanged (204).","operationId":"unlock_evaluation_api_mind_v2_evaluations__evaluation_id__unlock_post","parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Evaluation Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/evaluations/{evaluation_id}/ratify-revert":{"post":{"tags":["mind-v2"],"summary":"Revert Ratified Evaluation","description":"One-tap revert for an earned-stable promotion (TOS-1982 Phase 1).\n\nDemotes ``protection_level`` from ``'system_stable'`` back to\n``'system_consolidated'`` - the rung ratification promoted it from.\nNo-op safe: an evaluation that is not currently ``system_stable`` is\nreturned unchanged (204), mirroring ``/unlock``'s no-op-safe shape.\n``confirmed`` and ``confidence`` are never touched - reverting changes\nhow earned-stable a belief is, not whether or how strongly it is held.\nEmits its own ELEVATE-kind cognitive_event (``action='revert'``) as the\nundo journal row, mirroring the promotion side's event in\n``ConsolidationService._ratify_stable_abstractions``.\n\n**This is a durable veto, not a temporary demotion.** The ELEVATE\n``action='revert'`` event this route writes is also the marker\n``ratification.gather_ratification_candidates`` checks\n(``RatificationEvidence.was_user_reverted``) - once an evaluation has\nbeen reverted through this route, the automatic ratification sweep\nnever re-promotes it again, even if it still satisfies every other\ncriterion. The user retains their own promotion paths (``/confirm``,\n``/lock``); only the automatic rung stops overriding this decision.","operationId":"revert_ratified_evaluation_api_mind_v2_evaluations__evaluation_id__ratify_revert_post","parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Evaluation Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/evaluations/{evaluation_id}/forget":{"post":{"tags":["mind-v2"],"summary":"Forget Evaluation","operationId":"forget_evaluation_api_mind_v2_evaluations__evaluation_id__forget_post","parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Evaluation Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mind/v2/evaluations/{evaluation_id}/explanation":{"get":{"tags":["mind-v2"],"summary":"Get Evaluation Explanation","description":"Return a human-readable explanation for an inferred MindEvaluation.\n\n404: evaluation not found or archived.\n422: evaluation exists but is not inferred (source_type != 'inferred').\n403: caller does not have perspective access to the Mind.","operationId":"get_evaluation_explanation_api_mind_v2_evaluations__evaluation_id__explanation_get","parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Evaluation Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2EvaluationExplanation"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connections/requests":{"get":{"tags":["connections"],"summary":"List Requests","description":"List incoming and/or outgoing connection requests for the calling or acting identity. Pass\ndirection='incoming' or 'outgoing', status='pending', 'accepted', 'declined', 'cancelled', 'expired', or 'active' (pending plus\ndeclined or expired within the last 7 days),\nand include_owned_agents=True to include requests for owned agents.\n\nKeyset-paginated, newest first (TOS-3280); pass the previous response's\n``next_cursor`` to load older requests. 400 on a malformed cursor.","operationId":"list_requests_api_connections_requests_get","parameters":[{"name":"direction","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(incoming|outgoing)$"},{"type":"null"}],"title":"Direction"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"include_owned_agents","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Owned Agents"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":200,"minimum":1},{"type":"null"}],"default":200,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionRequestListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["connections"],"summary":"Send Request","description":"Send a connection request from the calling or acting identity to another identity (agent or\nperson). If the target identity auto-accepts, the connection is established immediately.","operationId":"send_request_api_connections_requests_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendRequestBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ConnectionRequestResponse"},{"$ref":"#/components/schemas/thinqos__api__connections__ConnectionResponse"}],"title":"Response Send Request Api Connections Requests Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connections/suggestions":{"get":{"tags":["connections"],"summary":"List Suggestions","description":"People and agents you might want to connect with: an identity you share\nan active chat with, or one connected to one of your own connections\n(TOS-3442, TOS-3450). Accept by calling connection_request_send with the suggested\nidentity_id (or by POSTing to /api/connections/requests with it).\n\nNot paginated: the underlying computation is a bounded, recompute-on-every-\ncall scan with no stable sort key to page over, not a stored ordered list.\nInstead it is honest about completeness - see ``truncated`` on the\nresponse.","operationId":"list_suggestions_api_connections_suggestions_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuggestionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connections/requests/{request_id}/accept":{"post":{"tags":["connections"],"summary":"Accept Request","description":"Accept a connection request, then run anything it unblocked.\n\nAn agent told to reach someone it was not connected to yet parked a\ndelegation on this request (TOS-2999). Accepting enqueues a run to re-drive\nit, and this route is what actually executes that run: the scheduler's\nrecovery drain only reaches it every 15 minutes, which would read to the user\nas the agent still being silent. The run is committed BEFORE it is scheduled,\nso a process that dies in between leaves a pending row the drain job recovers\nrather than losing the resume.","operationId":"accept_request_api_connections_requests__request_id__accept_post","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/thinqos__api__connections__ConnectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connections/requests/{request_id}/decline":{"post":{"tags":["connections"],"summary":"Decline Request","description":"Decline a pending incoming connection request addressed to the calling identity or an agent\nowned by the caller.","operationId":"decline_request_api_connections_requests__request_id__decline_post","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"boolean"},"title":"Response Decline Request Api Connections Requests  Request Id  Decline Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connections/requests/{request_id}":{"delete":{"tags":["connections"],"summary":"Cancel Request","description":"Cancel an outgoing pending connection request sent by the calling identity.","operationId":"cancel_request_api_connections_requests__request_id__delete","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connections/blocks":{"get":{"tags":["connections"],"summary":"List Relationship Blocks","description":"List every relationship of the calling identity that is currently blocked.\n\nReturns blocks in BOTH directions - ones the caller placed and ones placed\non them - because both change what the caller can do. Unpaginated on\npurpose: a block is rare and deliberate, unlike a connection, so this is a\nhandful of rows rather than the hundreds `GET /api/connections` had to be\npaginated for.","operationId":"list_relationship_blocks_api_connections_blocks_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelationshipBlocksResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["connections"],"summary":"Block Relationship","description":"Freeze the relationship with another identity: no new traffic either way.\n\nExisting conversations and their history stay exactly where they are and\nstay readable - this stops what happens next, it does not erase what\nhappened. Reversible with ``DELETE /api/connections/blocks/{id}``, which\nonly the blocker may call.","operationId":"block_relationship_api_connections_blocks_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelationshipBlockBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelationshipBlockResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connections/blocks/{other_identity_id}":{"delete":{"tags":["connections"],"summary":"Unblock Relationship","description":"Lift a block the calling identity placed. Anyone else gets 409.","operationId":"unblock_relationship_api_connections_blocks__other_identity_id__delete","parameters":[{"name":"other_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Other Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connections":{"get":{"tags":["connections"],"summary":"List Connections","description":"List active connections and network relationships (including owned agents and owners) for the\ncalling or acting identity. Keyset-paginated over the connection bucket\n(TOS-3280); pass the previous response's ``next_cursor`` to load more. 400\non a malformed cursor.","operationId":"list_connections_api_connections_get","parameters":[{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":200,"minimum":1},{"type":"null"}],"default":200,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connections/{connection_id}":{"delete":{"tags":["connections"],"summary":"Remove Connection","description":"Remove an active connection between the calling identity and another identity.","operationId":"remove_connection_api_connections__connection_id__delete","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connection Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connections/{connection_id}/settings":{"get":{"tags":["connections"],"summary":"Get Settings","description":"Get per-connection settings (show_status, read_receipts, typing_indicators) for a connection the\ncalling identity is a participant in.","operationId":"get_settings_api_connections__connection_id__settings_get","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connection Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"settings_get"},"patch":{"tags":["connections"],"summary":"Update Settings","description":"Update per-connection settings (show_status, read_receipts, typing_indicators) for a connection\nthe calling identity is a participant in. Pass only the fields you want to change.","operationId":"update_settings_api_connections__connection_id__settings_patch","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connection Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSettingsBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"settings_update"}},"/api/conversation-containers":{"get":{"tags":["conversation-containers"],"summary":"List Conversation Containers","description":"List the caller's top-level conversation containers.\n\nReuses the inbox chat-list query (bounded, pinned-first, N+1-safe), so the\nkinds ``conversation_types.hidden_from_list`` marks are already excluded;\nagent-run chats the caller takes part in are included (TOS-7749). The\n``X-Next-Cursor`` response header carries the next page token.","operationId":"list_conversation_containers_api_conversation_containers_get","parameters":[{"name":"archived","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Archived"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationContainersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/development-lifecycle-profiles":{"get":{"tags":["development-lifecycle-profiles"],"summary":"Get Development Lifecycle Profiles","operationId":"get_development_lifecycle_profiles_api_development_lifecycle_profiles_get","parameters":[{"name":"include_archived","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Archived"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LifecycleProfileListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["development-lifecycle-profiles"],"summary":"Create Development Lifecycle Profile","operationId":"create_development_lifecycle_profile_api_development_lifecycle_profiles_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLifecycleProfileRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LifecycleProfileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/development-lifecycle-profiles/{profile_id}":{"get":{"tags":["development-lifecycle-profiles"],"summary":"Get Development Lifecycle Profile","operationId":"get_development_lifecycle_profile_api_development_lifecycle_profiles__profile_id__get","parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Profile Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LifecycleProfileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["development-lifecycle-profiles"],"summary":"Patch Development Lifecycle Profile","operationId":"patch_development_lifecycle_profile_api_development_lifecycle_profiles__profile_id__patch","parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Profile Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLifecycleProfileRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LifecycleProfileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/development-lifecycle-profiles/{profile_id}/versions":{"get":{"tags":["development-lifecycle-profiles"],"summary":"Get Development Lifecycle Profile Versions","operationId":"get_development_lifecycle_profile_versions_api_development_lifecycle_profiles__profile_id__versions_get","parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Profile Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LifecycleProfileVersionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"versions_get"},"post":{"tags":["development-lifecycle-profiles"],"summary":"Publish Development Lifecycle Profile Version","operationId":"publish_development_lifecycle_profile_version_api_development_lifecycle_profiles__profile_id__versions_post","parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Profile Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishLifecycleProfileVersionRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LifecycleProfileVersionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"versions_create"}},"/api/development-lifecycle-profiles/{profile_id}/versions/{version_number}":{"get":{"tags":["development-lifecycle-profiles"],"summary":"Get Development Lifecycle Profile Version","operationId":"get_development_lifecycle_profile_version_api_development_lifecycle_profiles__profile_id__versions__version_number__get","parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Profile Id"}},{"name":"version_number","in":"path","required":true,"schema":{"type":"integer","title":"Version Number"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LifecycleProfileVersionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/capture/sources":{"get":{"tags":["capture"],"summary":"Get Capture Sources","description":"Return the public registry entries. Cache-able for 5 minutes.","operationId":"get_capture_sources_api_capture_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/me/setup":{"get":{"tags":["setup"],"summary":"Get Setup","description":"Where this identity stands in first-sign-in setup, and whether to prompt.","operationId":"get_setup_api_me_setup_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetupStatus"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["setup"],"summary":"Patch Setup","description":"Merge a step mark, role, picks, mind path, completion, or a rerun reset.","operationId":"patch_setup_api_me_setup_patch","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetupPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetupStatus"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/setup/tools":{"get":{"tags":["setup"],"summary":"Get Tools","description":"The step-2 grid: capture sources plus the live catalog, never a hardcoded list.","operationId":"get_tools_api_me_setup_tools_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/setup/about":{"post":{"tags":["setup"],"summary":"Submit About","description":"Read a self-description into the Mind and pre-fill the rest of setup.","operationId":"submit_about_api_me_setup_about_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AboutIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AboutOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/setup/install":{"post":{"tags":["setup"],"summary":"Install Tool","description":"Install a catalog integration into the caller's own home folder.\n\nThe same write as ``POST /api/integrations/installations``, with the\ntarget folder resolved server-side so the wizard never has to know\nwhich folder is \"mine\".","operationId":"install_tool_api_me_setup_install_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstallIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstallationDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/setup/jobs":{"get":{"tags":["setup"],"summary":"Get Job Catalog","description":"Step 1's cards: the six jobs, what each needs, and which needs are connected.","operationId":"get_job_catalog_api_me_setup_jobs_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobCatalogOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/setup/first-job":{"post":{"tags":["setup"],"summary":"Start First Job","description":"Start the job the person picked (or described) on their own self chat.\n\n409 ``need_not_connected`` names the first required group with nothing\nconnected, so the connect step can render exactly that choice.","operationId":"start_first_job_api_me_setup_first_job_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirstJobIn"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirstJobStartedOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["setup"],"summary":"Get First Job","description":"Poll the first job: status, what it has done so far, and its result.","operationId":"get_first_job_api_me_setup_first_job_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirstJobStatusOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/setup/import-export":{"post":{"tags":["setup"],"summary":"Import Vendor Export Upload","description":"Import a ChatGPT or Claude data export into the caller's own Mind.\n\nAccepts the vendor's export zip (only its ``conversations.json`` member is\never read) or a bare ``conversations.json``. Every conversation is ingested\nthrough the same path a live capture uses, so it lands in the caller's Mind\nthe same way. Makes zero AI-provider calls.\n\nSmall exports (``conversations.json`` at or under\n``SYNC_IMPORT_JSON_MEMBER_BYTES``) are imported inline and the response\nalready carries the final counts. Larger ones run as a background task;\npoll ``GET /import-export/{id}`` for the result.\n\nThe body is read in ``_UPLOAD_READ_CHUNK_BYTES`` chunks rather than in one\n``file.read()`` call, so an over-the-cap upload is rejected as soon as the\nrunning total crosses ``MAX_EXPORT_UPLOAD_BYTES`` instead of after\nbuffering the whole thing. A present ``Content-Length`` already over the\ncap is rejected before any read at all.","operationId":"import_vendor_export_upload_api_me_setup_import_export_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_import_vendor_export_upload_api_me_setup_import_export_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportExportOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/setup/import-export/{import_id}":{"get":{"tags":["setup"],"summary":"Get Vendor Export Import","description":"Poll one import's status - owner-only.\n\nA background import runs in-process after the upload response, so an\ninstance recycled before it ran, or a session factory that failed to\nopen, leaves the row at ``processing`` with nothing to move it. Rather\nthan let the card poll forever, a ``processing`` row older than\n``IMPORT_PROCESSING_STALE_AFTER`` is reported (and recorded) as failed on\nread, with a message that says what to do.","operationId":"get_vendor_export_import_api_me_setup_import_export__import_id__get","parameters":[{"name":"import_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Import Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportExportOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/home/jobs":{"post":{"tags":["home"],"summary":"Start Home Job","description":"Start a job now; with ``schedule``, also keep doing it on that schedule.","operationId":"start_home_job_api_me_home_jobs_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeJobIn"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeJobStartedOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/home/standing/{trigger_id}":{"patch":{"tags":["home"],"summary":"Patch Standing Job","description":"Reschedule or pause a job the Subconscious keeps doing.","operationId":"patch_standing_job_api_me_home_standing__trigger_id__patch","parameters":[{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Trigger Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandingJobPatchIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandingJobOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["home"],"summary":"Delete Standing Job","description":"Stop a standing job. Its past runs and results stay.","operationId":"delete_standing_job_api_me_home_standing__trigger_id__delete","parameters":[{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Trigger Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/home/items/{run_id}/{index}/approve":{"post":{"tags":["home"],"summary":"Approve Item","description":"Send exactly this one drafted item.\n\n409 ``send_not_available`` unless the caller has a connected Gmail whose tool\ncatalog includes ``gmail_send_draft``; everyone else opens the item's\n``compose_url`` in Gmail. Other 409 codes: ``not_a_draft``, ``no_gmail_draft``.","operationId":"approve_item_api_me_home_items__run_id___index__approve_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Run Id"}},{"name":"index","in":"path","required":true,"schema":{"type":"integer","title":"Index"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemDecisionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/home/items/{run_id}/{index}/skip":{"post":{"tags":["home"],"summary":"Skip Item","description":"Record that the person passed on this item. Nothing is sent.","operationId":"skip_item_api_me_home_items__run_id___index__skip_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Run Id"}},{"name":"index","in":"path","required":true,"schema":{"type":"integer","title":"Index"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemDecisionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/home":{"get":{"tags":["home"],"summary":"Get Home","description":"The whole Home report in one request (R9). ``needs_you_full`` lifts\nthe Needs-you cap so the \"and N more\" affordance reveals the rest\n(TOS-5168).","operationId":"get_home_api_me_home_get","parameters":[{"name":"needs_you_full","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Needs You Full"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeReport"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/home/seen":{"post":{"tags":["home"],"summary":"Mark Seen","description":"Called on unmount: stamps ``home_last_seen_at`` for the next report's\nrolling window.","operationId":"mark_seen_api_me_home_seen_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/home/learned/{proposition_id}":{"post":{"tags":["home"],"summary":"Learned Verdict","description":"Right confirms the lesson, Wrong strikes it - owner-scoped.","operationId":"learned_verdict_api_me_home_learned__proposition_id__post","parameters":[{"name":"proposition_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Proposition Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LearnedVerdictIn"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/connections":{"get":{"tags":["home"],"summary":"List My Connections","description":"Every connection the acting identity owns, one row per connection.\n\nRead-only. Connections reached only through another identity's grant are\nnot listed (TOS-6919 R8).","operationId":"list_my_connections_api_me_connections_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ConnectionRow"},"title":"Response List My Connections Api Me Connections Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/releases":{"get":{"tags":["releases"],"summary":"List Releases","operationId":"list_releases_api_releases_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"notify","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Notify"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseListOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/releases/unseen-ids":{"get":{"tags":["releases"],"summary":"Unseen Release Ids","operationId":"unseen_release_ids_api_releases_unseen_ids_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnseenReleaseIdsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/releases/{release_id}/mark-seen":{"post":{"tags":["releases"],"summary":"Mark Release Seen","operationId":"mark_release_seen_api_releases__release_id__mark_seen_post","parameters":[{"name":"release_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Release Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarkSeenOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/releases/mark-all-seen":{"post":{"tags":["releases"],"summary":"Mark All Releases Seen","operationId":"mark_all_releases_seen_api_releases_mark_all_seen_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarkSeenOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/releases/import":{"post":{"tags":["releases"],"summary":"Import Bundled Release","description":"Import the exact release note carried by this install's signed bundle.","operationId":"import_bundled_release_api_internal_releases_import_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BundledReleaseNote"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportBundledReleaseOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/releases/known-bundle-versions":{"get":{"tags":["releases"],"summary":"Known Bundle Versions","description":"Which bundle releases this install has already recorded (TOS-4055).\n\nThe updater diffs this against the registry's published bundles to find the\nnotes it skipped while the install was behind, so a stalled lane costs a\nLATE note rather than a permanently missing one.","operationId":"known_bundle_versions_api_internal_releases_known_bundle_versions_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":500,"title":"Limit"}},{"name":"before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}],"title":"Before"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnownBundleVersionsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/releases/verified-no-note":{"get":{"tags":["releases"],"summary":"Verified No Note Receipt","operationId":"verified_no_note_receipt_api_internal_releases_verified_no_note_get","parameters":[{"name":"bundle_version","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]*$","title":"Bundle Version"}},{"name":"manifest_digest","in":"query","required":true,"schema":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","title":"Manifest Digest"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifiedLegacyBundleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["releases"],"summary":"Record Verified No Note Receipt","operationId":"record_verified_no_note_receipt_api_internal_releases_verified_no_note_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifiedLegacyBundleIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifiedLegacyBundleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/releases/import-historical":{"post":{"tags":["releases"],"summary":"Import Historical Release","description":"Backfill the note for a bundle this install SKIPPED (TOS-4055).\n\nSeparate from `/import` on purpose. That endpoint requires the note to match\nthe running bundle exactly, which is correct for the release you just\nadopted and is precisely what makes catch-up impossible: every skipped\nbundle is by definition not the one running, so every one of them 409s.\n\nThe guard here is the other half of the same idea, and it is deliberately\none-directional: a note may be older than what this install runs, never\nnewer. Backfilling history is safe; recording a release you have not\nactually reached would let What's New advertise code that is not deployed.\nBundle versions are `YYYYMMDD.HHMM-<sha>`, so the timestamp prefix orders\nlexicographically and a plain string comparison is a date comparison.","operationId":"import_historical_release_api_internal_releases_import_historical_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BundledReleaseNote"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportBundledReleaseOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/releases/render-bundle-note":{"post":{"tags":["releases"],"summary":"Render Bundled Release","description":"Render one publisher-owned note without writing install release state.","operationId":"render_bundled_release_api_admin_releases_render_bundle_note_post","parameters":[{"name":"x-release-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Release-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderBundledReleaseIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BundledReleaseNote"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notify/request-resolution-opt-out":{"get":{"tags":["notify"],"summary":"Confirm Request Resolution Opt Out","description":"Render the confirmation form. Never changes state: see module docstring.","operationId":"confirm_request_resolution_opt_out_api_notify_request_resolution_opt_out_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["notify"],"summary":"Opt Out Of Request Resolution Updates","description":"Flip ``request_resolution_updates`` off for the identity a valid token names.\n\nThe token comes from the confirmation form's hidden field, or from the URL\nitself when a mail client sends an RFC 8058 one-click request (TOS-7478).\nVerifies the token itself, independent of whatever the GET that rendered\nthe form already checked, since a POST can be replayed with a stale or\nforged token without ever hitting that GET.","operationId":"opt_out_of_request_resolution_updates_api_notify_request_resolution_opt_out_post","parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Token"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_opt_out_of_request_resolution_updates_api_notify_request_resolution_opt_out_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/decision-digest/send-now":{"post":{"tags":["decision-digest"],"summary":"Send My Digest Now","description":"Build your digest from what is waiting right now and email it to you.","operationId":"send_my_digest_now_api_me_decision_digest_send_now_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendNowResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notify/decision-digest-unsubscribe":{"get":{"tags":["decision-digest"],"summary":"Confirm Decision Digest Unsubscribe","description":"Render the confirmation form. Never changes state.","operationId":"confirm_decision_digest_unsubscribe_api_notify_decision_digest_unsubscribe_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["decision-digest"],"summary":"Unsubscribe From Decision Digest","description":"Turn the digest off for the identity a valid token names.\n\nThe token comes from the confirmation form's hidden field, or from the\nURL itself when a mail client sends a one-click request. Verified here\neither way, never trusted from the GET that rendered the form.","operationId":"unsubscribe_from_decision_digest_api_notify_decision_digest_unsubscribe_post","parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Token"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_unsubscribe_from_decision_digest_api_notify_decision_digest_unsubscribe_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/installed":{"get":{"tags":["integrations"],"summary":"List Installed","operationId":"list_installed_api_integrations_instances_installed_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InstalledIntegrationOut"},"title":"Response List Installed Api Integrations Instances Installed Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/health":{"get":{"tags":["integrations"],"summary":"List Instance Health","description":"Health for every integration in the subject's live set (TOS-2708).\n\nOne row per instance, carrying the filter bucket (``ready`` / ``degraded`` /\n``needs_attention`` / ``unknown``), the healthy/affected split, and the typed\nfailure detail — so the Connected list can render All / Needs attention /\nDegraded / Ready without deriving health from raw evidence itself.\n\n``subject_identity_id`` is the identity whose profile is being viewed, which\nis NOT always the caller: an owner reading an owned agent's Integrations tab\nmust see the AGENT's connections. It matters because a ``per_caller``\ninstance holds one connection row per identity — scoping to the caller there\nwould render the owner's own credential health under the agent's name. Same\nauthority as ``/instances/installed-on/{identity_id}``: self or an owner.\n\nBatched on purpose: connections, rollups, tool rows, definitions and profiles\nare each one query for the whole page, never one per instance.","operationId":"list_instance_health_api_integrations_instances_health_get","parameters":[{"name":"subject_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Subject Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InstanceHealthOut"},"title":"Response List Instance Health Api Integrations Instances Health Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/installed-on/{identity_id}":{"get":{"tags":["integrations"],"summary":"List Installed On","description":"The connections THIS identity holds (TOS-6647).\n\nHistorically this endpoint returned the full live set, whose first leg is\nevery account in any folder the subject REACHES - so a person who never\nconnected anything saw the whole folder catalog rendered as \"Attached\" on\ntheir profile. That conflated two questions: what is reachable (the\nMarketplace/Discover read, served by ``/instances`` with its reach\nparameters) and what the subject HOLDS (this read).\n\nHeld means one of exactly three things, resolved as a case() over the\ninstance rows in the SAME statement that fetches them (zero extra round\ntrips past the route's sql-trace baseline):\n\n- the subject's own credential row exists on the account (per_caller\n  connected by them, or the shared account's connection is theirs) ->\n  \"connected\",\n- an active, unexpired ConnectionAccessGrant names them (TOS-3500) ->\n  \"granted\", or\n- the account was explicitly attached for them -> \"approved\". The\n  attaching decision may be the subject's own (``decided_by`` == subject,\n  what ``POST /instances/{id}/install`` records in a normal folder) or\n  their controller-owner's (TOS-3444: the owner attaching their own\n  home folder integration to their agent is the ONLY attach path a\n  home folder allows, and the route deliberately records decided_by =\n  the owner, \"the owner authorized it, not the agent itself\").\n\nPlain folder reach, wrapper projection and approvals decided by someone\nwho is neither the subject nor their controller-owner are NOT holds and\nare dropped from the response; the raw live set remains available to\ncallers that genuinely answer the reach question (turn-pipeline\nliveness). ``hold_state`` tells the three cases apart so the shelf can\nrender \"Connected\" (your credential) vs \"Granted\" (shared to you) vs\n\"Approved\" (attached by or for you).","operationId":"list_installed_on_api_integrations_instances_installed_on__identity_id__get","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationInstallOut"},"title":"Response List Installed On Api Integrations Instances Installed On  Identity Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances":{"get":{"tags":["integrations"],"summary":"List Instances","description":"Paginated list of instances the caller owns or is a folder member of (P3).\n\nTOS-831: when ``library_id`` is supplied, narrows to instances in that one\nfolder (the Library page's Integrations tab); otherwise returns the union\nacross every folder the caller can touch (the \"My Integrations\" view).\n\nTOS-2705: ``q`` searches instance alias / definition name / description and\n``ids`` narrows to an explicit instance set, both SERVER-side. The identity\nIntegrations surface previously fetched one 200-row page and searched it in\nthe browser, so integration 201 onward could not be found at all. Search and\npaging now run against the true total, and the Connected list requests its\nsubject's live ids directly rather than relying on them being inside page 1.\n\nTOS-3006 Defect D: ``subject_identity_id`` is the profile being configured.\nWhen supplied, rows are additionally limited to source folders that subject\nreaches, exactly matching the attach gate. This prevents Discover from\nadvertising an install that would be refused; it never grants membership.\n\nTOS-4113 Lane A: ``org_tenant_id`` narrows to the shared folders of one\norganization, which is what the organization page's Connected accounts\nsection asks for. ``library_id`` cannot express that: an organization has\nmany root folders and many subfolders under them. Like every other\nparameter here it only ever NARROWS the caller's own visible set, so it is\nnot a way to read an organization the caller is not in.","operationId":"list_instances_api_integrations_instances_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":20,"title":"Size"}},{"name":"library_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Library Id"}},{"name":"include_icon_data","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Icon Data"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Q"}},{"name":"ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Ids"}},{"name":"definition_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Definition Id"}},{"name":"owned_by_viewer","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Owned By Viewer"}},{"name":"subject_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Subject Identity Id"}},{"name":"org_tenant_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Org Tenant Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Instances Api Integrations Instances Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["integrations"],"summary":"Create Instance Native","description":"CONNECT-A-CAPABILITY FLOW step 1 (MCP-server variant): define the integration here, then install\n    it for the current identity with integration_install. Register an external MCP server (HTTP or\n    SSE transport) owned by the calling identity, mirroring the admin 'Connect MCP server' modal.\n    Creates the registration row only. For an OAuth2 server pass auth_kind='oauth2' (the default)\n    and no secret -- the row is created unauthenticated and the owner completes the OAuth connect\n    flow afterward from the connection's Marketplace page (this is the 'add the row, authorize\n    after' path).\n    Pass oauth_scopes as a space-separated, least-privilege set when the provider advertises scopes;\n    discovery will not widen an explicitly configured set. For a bearer- or header-key-protected\n    server pass auth_kind='bearer' (or 'api_key_header' with auth_header_name) plus the token as\n    plaintext_secret. Use integration_create_from_openapi instead for a REST API described by an\n    OpenAPI spec. Fails with a clear message if a registration with that name already exists or the\n    inputs are invalid.\nIf this looks like a SERVICE integration (the app acting as itself —\n    infra/DB/API-token vendors) on user-OAuth, the response includes a credential_fit_warning.\n    Creation still succeeds; pass credential_fit_override_reason to acknowledge and suppress\n    it.\nconnection_mode is required, no default: pass 'shared' (one credential the whole folder\n    uses) or 'per_caller' (each identity connects and uses their own credential) — you must always\n    pick one.","operationId":"create_instance_native_api_integrations_instances_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistrationCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistrationCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/from-openapi":{"post":{"tags":["integrations"],"summary":"Create Instance From Openapi","description":"CONNECT-A-CAPABILITY FLOW step 1 (REST/OpenAPI variant): define the integration here, then\n    install it for the current identity with integration_install. Add a new REST 'connected tool'\n    (MCP integration) owned by the calling identity, built from an OpenAPI spec URL. thinqOS fetches\n    the spec, generates the tool manifest, encrypts any provided secret server-side, and probes the\n    upstream. Mirrors the Connected Tools screen's 'Import from OpenAPI' flow. For a secured API\n    pass the bearer/API key as plaintext_secret (never stored in the clear). Fails with a clear\n    message if the spec is unreachable, the manifest is invalid, or a registration with that name\n    already exists.\nconnection_mode is required, no default: pass 'shared' (one credential the\n    whole folder uses) or 'per_caller' (each identity connects and uses their own credential) — you\n    must always pick one.\nFor a secured spec (bearer or API-key auth) with no secret available yet\n    -- e.g. building a public Discover template without pasting your own production key -- pass\n    allow_unconnected=True to create the row unauthenticated; the auth scheme is still recorded and\n    the installer supplies their own credential at connect time. Omitting both a secret and\n    allow_unconnected=True fails with a clear error rather than silently creating an unusable row.","operationId":"create_instance_from_openapi_api_integrations_instances_from_openapi_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenAPICreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistrationCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/from-manifest":{"post":{"tags":["integrations"],"summary":"Create Instance From Manifest","description":"CONNECT-A-CAPABILITY FLOW step 1 (REST/Pipedream variant): define the integration here, then\n    install it for the current identity with integration_install. Add a new REST 'connected tool'\n    owned by the calling identity, built from a Pipedream component's source on\n    github.com/PipedreamHQ/pipedream (pass component_path as the directory name under components/,\n    e.g. 'perplexity' for components/perplexity/). Unlike integration_create_from_openapi, this\n    parses hand-written JavaScript rather than a declarative spec, so it ONLY converts actions in\n    one narrow, verified shape: a plain string _baseUrl(), a Bearer `this.$auth.<field>` auth\n    template, and a flat (no conditional/computed) request body. Actions outside that shape are\n    skipped, never guessed at - the response's skipped_actions lists every one with its reason, so\n    tool_count can legitimately be less than the component's total action count, or even zero (a\n    clear error, not a silent empty registration). connection_mode is required, no default: pass\n    'shared' or 'per_caller'.\nFor a secured manifest (bearer or API-key auth) with no secret\n    available yet, pass allow_unconnected=True to create the row unauthenticated -- the auth scheme\n    is still recorded and the installer supplies their own credential at connect time.","operationId":"create_instance_from_manifest_api_integrations_instances_from_manifest_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManifestCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistrationCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/move":{"post":{"tags":["integrations"],"summary":"Move Instances","description":"Move an integration (one you own, or one in a folder you can edit) into another folder you can\nedit. This is how you organize integrations into purpose folders. Folder membership controls\ndiscovery; each member then installs an integration for itself with integration_install.\nSingle-home model — the integration ends up in exactly one folder. Pass the registration_id (the\nintegration instance id, a UUID) and `domain` as EITHER the destination's fully-qualified\naddress (e.g. 'payroll.finance.acme.thinqos.com') OR its UUID, from thinqos_query or\nthinqos_create with resource=folders. Group sharing defaults to 'Each member connects separately'. If the integration\nholds ONE shared account and the destination has more than one member, the move is refused and\nthe error explains the blast radius — that is 'Share the owner's account with this group'. Show\nit to the user and re-call with confirm_shared_account_exposure=true only if they explicitly\nagree.","operationId":"move_instances_api_integrations_instances_move_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoveInstancesBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Move Instances Api Integrations Instances Move Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{instance_id}/share-preview/{library_id}":{"get":{"tags":["integrations"],"summary":"Preview Shared Account Exposure","description":"The blast-radius facts for sharing ``instance_id``'s account into a group.\n\nREAD ONLY. Mutates nothing, and returns exactly the body the 409 guard\nreturns, so the \"How should members connect?\" screen renders the SERVER's\nmember count, audit identity and blast-radius sentence instead of inventing\nthem client-side or -- worse -- discovering them by firing a mutation it\nhopes will be refused.\n\nThat \"hope it is refused\" shape is not hypothetical: without a preview the\nonly way to learn the facts is to attempt the share unconfirmed, which\nSUCCEEDS whenever the guard does not fire (a single-member group), silently\nperforming the very operation the screen was about to ask permission for.\n\nAuthorization is the destination's own configure rung -- the same authority\nthe move itself requires -- because the body names the destination's members\nand their identity ids. Answering it to a caller who could not perform the\nmove would be a membership disclosure.","operationId":"preview_shared_account_exposure_api_integrations_instances__instance_id__share_preview__library_id__get","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"library_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Library Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Preview Shared Account Exposure Api Integrations Instances  Instance Id  Share Preview  Library Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{instance_id}":{"get":{"tags":["integrations"],"summary":"Get Instance","description":"Get configuration and health details for a connected tool instance.","operationId":"get_instance_api_integrations_instances__instance_id__get","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistrationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["integrations"],"summary":"Patch Instance","description":"Update editable settings on an integration (connected tool / MCP & OAuth registration) you own —\n    a partial update, so pass ONLY the fields you want to change; omitted fields are left untouched.\n    Set alias to rename only this connection; name and description edit the shared connector\n    definition used by sibling connections.\n    The registration_id comes from integration_list. Editable fields:\n- alias: the display name\n    (e.g. rename 'Gmail (read-only)' to 'Gmail — dan@example.com'). Must be non-empty.\n-\n    health_check_tool: the tool the proactive probe + 'Test connection' call to validate the\n    credential. tools/list-only by default, which can show green even when a per-user OAuth\n    credential is dead; naming a safe READ-ONLY no-required-args tool (e.g. 'list_calendars',\n    'list_files') makes the probe actually exercise the credential. Pass an empty string to clear it\n    (revert to tools/list-only).\n- health_check_arguments: reviewed JSON arguments for the safe\n    probe. These are stored on the profile and supplied by the platform, never by the caller of the\n    synthetic health tool.\n- health_check_declined + health_check_decline_reason: explicitly record\n    that no safe probe exists and why. Declining clears the configured tool and arguments.\n-\n    enabled: enable/disable the integration.\n- description: free-text description.\n-\n    connection_mode: 'shared' (one credential the whole folder uses) or 'per_caller' (each identity\n    connects and uses their own credential). shared -> per_caller is a pure flip. per_caller ->\n    shared keeps only the most-recently-updated connection and deletes the rest; if more than one\n    row would be deleted this fails with the count unless you also pass\n    confirm_credential_deletion=true. In a folder with MORE THAN ONE member, per_caller -> shared\n    also means 'Share the owner's account with this group' — everyone acts as one account — so it\n    fails with the blast radius unless you also pass confirm_shared_account_exposure=true. Show that\n    to the user first; the safe default is 'Each member connects separately' (per_caller).\nFails\n    with a clear message if you don't own the integration, the new alias collides, connection_mode\n    is invalid, a per_caller -> shared downgrade needs confirmation, or no editable field was\n    provided.","operationId":"patch_instance_api_integrations_instances__instance_id__patch","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistrationUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistrationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["integrations"],"summary":"Delete integration registration and remove connection account","description":"Delete one integration registration (connection account) and its logins.\n\nRequires admin authority over the connection's folder. Deletes the selected\nregistration, rather than only uninstalling a user's or agent's holding.\nSibling connections remain. The connector definition is retained while other\nconnections or a live publication use it.\n\nRefused with a 409 while a development repository binding still points at it.\nThe database keeps that link on purpose (``ON DELETE RESTRICT``): removing a\nbinding would also remove its task checkpoints, so deleting the connection must\nnot do it silently. Before this check the delete reached the database and came\nback as an unhandled ForeignKeyViolation, a 500 with no explanation\n(THINQOS-BACKEND-10M).","operationId":"delete_instance_api_integrations_instances__instance_id__delete","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{instance_id}/install":{"post":{"tags":["integrations"],"summary":"Install Instance","operationId":"install_instance_api_integrations_instances__instance_id__install_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/thinqos__api__integrations__InstallBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationInstallOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{instance_id}/uninstall":{"post":{"tags":["integrations"],"summary":"Uninstall Instance","description":"Remove this connection from the user's or agent's held connections only.\n\nThe connection registration and its accounts remain. This does not delete\nthe connection. To delete an owned connection registration, use\nDELETE /api/integrations/instances/{instance_id} instead.","operationId":"uninstall_instance_api_integrations_instances__instance_id__uninstall_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/thinqos__api__integrations__InstallBody"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{instance_id}/credential":{"post":{"tags":["integrations"],"summary":"Paste Instance Key","description":"Store a user-supplied bearer/api_key secret on the instance's connection.","operationId":"paste_instance_key_api_integrations_instances__instance_id__credential_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasteKeyBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationInstallOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"credential_create"},"delete":{"tags":["integrations"],"summary":"Delete Instance Credential","description":"Remove the instance's connection credential (disconnect).","operationId":"delete_instance_credential_api_integrations_instances__instance_id__credential_delete","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/DeleteCredentialBody"},{"type":"null"}],"title":"Body"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"credential_delete"}},"/api/integrations/accounts/{connection_id}/grants":{"get":{"tags":["integrations"],"summary":"List Connected Account Grants","operationId":"list_connected_account_grants_api_integrations_accounts__connection_id__grants_get","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connection Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ConnectionGrantOut"},"title":"Response List Connected Account Grants Api Integrations Accounts  Connection Id  Grants Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"grants_get"},"post":{"tags":["integrations"],"summary":"Grant Connected Account Access","operationId":"grant_connected_account_access_api_integrations_accounts__connection_id__grants_post","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connection Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionGrantCreateBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionGrantOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"grants_create"}},"/api/integrations/accounts/{connection_id}/grants/{grant_id}":{"patch":{"tags":["integrations"],"summary":"Edit Connected Account Access","operationId":"edit_connected_account_access_api_integrations_accounts__connection_id__grants__grant_id__patch","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connection Id"}},{"name":"grant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Grant Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionGrantUpdateBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionGrantOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"grants_update"},"delete":{"tags":["integrations"],"summary":"Revoke Connected Account Access","operationId":"revoke_connected_account_access_api_integrations_accounts__connection_id__grants__grant_id__delete","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connection Id"}},{"name":"grant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Grant Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{instance_id}/account-access":{"get":{"tags":["integrations"],"summary":"Get Connection Account Access","operationId":"get_connection_account_access_api_integrations_instances__instance_id__account_access_get","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionAccountAccessOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{instance_id}/account-selection":{"put":{"tags":["integrations"],"summary":"Select Connected Account","operationId":"select_connected_account_api_integrations_instances__instance_id__account_selection_put","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionAccountSelectionBody"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{instance_id}/test":{"post":{"tags":["integrations"],"summary":"Test Instance Connection","operationId":"test_instance_connection_api_integrations_instances__instance_id__test_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"subject_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Subject Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionTestResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{instance_id}/health":{"get":{"tags":["integrations"],"summary":"Get Instance Health","description":"Health detail for one connection (TOS-2708).\n\nReads the persisted rollup — it does NOT probe. The detail view is opened\nfar more often than health actually changes, and probing on read would turn\nevery page load into an upstream call.","operationId":"get_instance_health_api_integrations_instances__instance_id__health_get","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionHealthOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{instance_id}/reconnect":{"post":{"tags":["integrations"],"summary":"Reconnect Instance","description":"Needs-attention repair: re-probe, report, and preserve every access grant.\n\nWhat this does NOT do is the point (TOS-2708): it never deletes the\nconnection row, never touches folder membership, never drops a resource\nbinding, and never clears a stored token. It re-runs the same probe the Test\nbutton runs — which may resolve the problem outright when the cause was\ntransient (a rate limit, a service blip) — recomputes the per-tool rollup,\nand returns the specific next action plus the grants that survived.\n\nWhen the credential genuinely has to be re-authorized, the browser OAuth\nflow at ``reauthorize_path`` UPSERTS onto this same connection row\n(``_record_oauth_login_tokens``), which is what makes the preservation\nguarantee true rather than aspirational.","operationId":"reconnect_instance_api_integrations_instances__instance_id__reconnect_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReconnectResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{instance_id}/bindings":{"post":{"tags":["integrations"],"summary":"Create Bindings","description":"Retired: an identity attaches integrations only to itself.","operationId":"create_bindings_api_integrations_instances__instance_id__bindings_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BindingCreateBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationInstallOut"},"title":"Response Create Bindings Api Integrations Instances  Instance Id  Bindings Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{instance_id}/bindings/{identity_id}":{"delete":{"tags":["integrations"],"summary":"Delete Binding","operationId":"delete_binding_api_integrations_instances__instance_id__bindings__identity_id__delete","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/definitions/{definition_id}/instances":{"post":{"tags":["integrations"],"summary":"Create Definition Instance","description":"Add another account instance for a connector definition.\n\nThe ordinary Connections UI sends ``personal=true``. That creates one\nowner-held account in the caller's home folder and accepts no routing or\nmode override. Administrative and MCP callers retain the explicit\n``connection_mode``, destination and target-identity contract.\n\nThe instance reuses the selected or recommended connection profile and\nstarts unconnected. The owner completes OAuth or credential setup from the\nconnection page.","operationId":"create_definition_instance_api_integrations_definitions__definition_id__instances_post","parameters":[{"name":"definition_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Definition Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstanceCreateBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstanceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{instance_id}/diagnostics":{"get":{"tags":["integrations"],"summary":"Instance Diagnostics","operationId":"instance_diagnostics_api_integrations_instances__instance_id__diagnostics_get","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpRegistrationDiagnostics"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/diagnostics":{"post":{"tags":["integrations"],"summary":"Instances Diagnostics Batch","operationId":"instances_diagnostics_batch_api_integrations_instances_diagnostics_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstanceDiagnosticsBatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstanceDiagnosticsBatchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{instance_id}/export.json":{"get":{"tags":["integrations"],"summary":"Export Instance Json","operationId":"export_instance_json_api_integrations_instances__instance_id__export_json_get","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Export Instance Json Api Integrations Instances  Instance Id  Export Json Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/import":{"post":{"tags":["integrations"],"summary":"Import Integration Json","operationId":"import_integration_json_api_integrations_import_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationPackageImportRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Import Integration Json Api Integrations Import Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{instance_id}/publications":{"post":{"tags":["integrations"],"summary":"Publish Instance Template","description":"Publish an integration you own as a reusable, credential-free template (an Integration\nPublication) that other people can discover and install with their own credentials — the MCP\nequivalent of the 'Publish' button on a connected tool. Pass the registration_id (the\nintegration instance id from integration_list) and a visibility: 'public' lists it in the\ncommunity catalog for any thinqOS user; 'private' keeps it unlisted and reachable only via the\nreturned share_token link. Secrets, OAuth tokens, and per-account connections are NEVER included\n— only the connector shape (transport, auth kind, scopes, setup metadata). Re-publishing the\nsame definition creates a new version in the same series. Optionally pass name and/or\ndescription to give the PUBLIC template a clean, brand-correct identity distinct from your\nprivate integration name (recommended - your own integration is left untouched); omit them to\ninherit the integration's name/description. Returns the publication_id, version, visibility, and\nshare_token. Fails with a clear message if you don't own the integration or visibility is\ninvalid.","operationId":"publish_instance_template_api_integrations_instances__instance_id__publications_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationPublicationRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationPublicationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/publications":{"get":{"tags":["integrations"],"summary":"List Publications","operationId":"list_publications_api_integrations_publications_get","parameters":[{"name":"scope","in":"query","required":false,"schema":{"type":"string","pattern":"^(community|mine)$","default":"community","title":"Scope"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":200,"minimum":1},{"type":"null"}],"title":"Limit"}},{"name":"source_definition_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Source Definition Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationPublicationListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/publications/shared/{share_token}":{"get":{"tags":["integrations"],"summary":"Get Publication By Token","operationId":"get_publication_by_token_api_integrations_publications_shared__share_token__get","parameters":[{"name":"share_token","in":"path","required":true,"schema":{"type":"string","title":"Share Token"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationPublicationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/publications/{publication_id}":{"get":{"tags":["integrations"],"summary":"Get Publication","operationId":"get_publication_api_integrations_publications__publication_id__get","parameters":[{"name":"publication_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Publication Id"}},{"name":"share_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Share Token"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationPublicationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["integrations"],"summary":"Edit Publication","description":"Edit a template you published, in place — change its public-facing name and/or description\nWITHOUT unpublishing and republishing, and WITHOUT touching your own integration. This is a\nmetadata-only edit (it does not change the connector contract or cut a new version). Pass the\npublication_id (from list_integration_templates scope='mine') and a new name and/or description;\nan empty description clears it. Use this to give a template a clean, brand-correct catalog name.\nFails if you don't own the publication or no field is provided.","operationId":"edit_publication_api_integrations_publications__publication_id__patch","parameters":[{"name":"publication_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Publication Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationPublicationEditRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationPublicationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/publications/{publication_id}/install":{"post":{"tags":["integrations"],"summary":"Install Publication","description":"Install a published integration for the currently authenticated identity. To install for an\nagent, authenticate or act as that agent first. Idempotent: re-installing restores the selected\nintegration's artifact approval without changing folder membership.\n\nTo enable the isolated public-web browsing capability, set web_browse_enabled=true via\nagent_create/agent_update. This route does NOT do it.","operationId":"install_publication_api_integrations_publications__publication_id__install_post","parameters":[{"name":"publication_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Publication Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationPublicationInstallRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Install Publication Api Integrations Publications  Publication Id  Install Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/publications/{publication_id}/retract":{"post":{"tags":["integrations"],"summary":"Retract Publication","description":"Retract (unpublish) an integration template you published. Pass the publication_id (from\nlist_integration_templates scope='mine'). This is a soft delete: the template stops appearing in\nthe catalog and can no longer be installed, but copies people already installed keep working.\nFails if you don't own the publication.","operationId":"retract_publication_api_integrations_publications__publication_id__retract_post","parameters":[{"name":"publication_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Publication Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationPublicationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/builtins":{"get":{"tags":["integrations"],"summary":"List Builtins","operationId":"list_builtins_api_integrations_builtins_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Builtins Api Integrations Builtins Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/validate-manifest":{"post":{"tags":["integrations"],"summary":"Validate Rest Manifest","operationId":"validate_rest_manifest_api_integrations_validate_manifest_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManifestValidationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManifestValidationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/import-openapi":{"post":{"tags":["integrations"],"summary":"Import Openapi Spec","operationId":"import_openapi_spec_api_integrations_import_openapi_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenAPIImportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Import Openapi Spec Api Integrations Import Openapi Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{instance_id}/config-versions":{"get":{"tags":["integrations"],"summary":"List Instance Config Versions","operationId":"list_instance_config_versions_api_integrations_instances__instance_id__config_versions_get","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Instance Config Versions Api Integrations Instances  Instance Id  Config Versions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{instance_id}/test-tool":{"post":{"tags":["integrations"],"summary":"Test Instance Tool","operationId":"test_instance_tool_api_integrations_instances__instance_id__test_tool_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestToolTestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestToolTestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{instance_id}/refresh":{"post":{"tags":["integrations"],"summary":"Refresh Instance Catalog","description":"Re-read this registration's tools from upstream, now.\n\nTOS-4521: this used to call ``resolver.invalidate()`` and nothing else,\nwhich clears ONE pod's in-process cache. The next read then falls straight\nback to the durable index, so the endpoint reported success while changing\nnothing an agent could see - and `awen-api` runs several pods, so it did\nnot even reliably clear the cache for the caller's own next request.\n\nThe only path that actually refetched upstream was the tool-catalog-index\nsweep, on a 6-hour cron, so a deliberate change to a connector's advertised\ntools stayed invisible for up to 6 hours. That is not cosmetic: thinqOS\nranks MCP tools by embedding similarity over `name + description`, so a\ndescription decides whether a tool is reachable at all (COM-729).\n\nRuns the same refresh the sweep runs, on this registration only. Kept as a\nsync endpoint so the live upstream fetch happens on FastAPI's threadpool\nrather than the event loop, matching how the scheduler entrypoint drives\nthe same coroutine.","operationId":"refresh_instance_catalog_api_integrations_instances__instance_id__refresh_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Refresh Instance Catalog Api Integrations Instances  Instance Id  Refresh Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{instance_id}/create-agent":{"post":{"tags":["integrations"],"summary":"Create Agent From Instance","operationId":"create_agent_from_instance_api_integrations_instances__instance_id__create_agent_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAgentFromInstance"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Create Agent From Instance Api Integrations Instances  Instance Id  Create Agent Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{instance_id}/resource-bindings":{"get":{"tags":["integrations"],"summary":"List Resource Bindings","operationId":"list_resource_bindings_api_integrations_instances__instance_id__resource_bindings_get","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ResourceBindingOut"},"title":"Response List Resource Bindings Api Integrations Instances  Instance Id  Resource Bindings Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"resource-bindings_get"},"post":{"tags":["integrations"],"summary":"Create Resource Binding","operationId":"create_resource_binding_api_integrations_instances__instance_id__resource_bindings_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceBindingCreateBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceBindingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"resource-bindings_create"}},"/api/integrations/instances/{instance_id}/resource-bindings/{binding_id}":{"patch":{"tags":["integrations"],"summary":"Update Resource Binding","operationId":"update_resource_binding_api_integrations_instances__instance_id__resource_bindings__binding_id__patch","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"binding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Binding Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceBindingPatchBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceBindingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"resource-bindings_update"},"delete":{"tags":["integrations"],"summary":"Delete Resource Binding","operationId":"delete_resource_binding_api_integrations_instances__instance_id__resource_bindings__binding_id__delete","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"binding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Binding Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"resource-bindings_delete"}},"/api/integrations/instances/{instance_id}/resource-catalog":{"get":{"tags":["integrations"],"summary":"Instance Resource Catalog","description":"Adapter-enumerated bindable resources for the picker.\n\nA provider whose adapter cannot enumerate (unregistered channel source, or\none that raises NotImplementedError) is a normal case, not a failure: this\nreturns 200 with an empty list and supports_enumeration=False so the GUI\nfalls back to manual external_resource_ref entry instead of erroring.","operationId":"instance_resource_catalog_api_integrations_instances__instance_id__resource_catalog_get","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Instance Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceCatalogOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/catalog":{"get":{"tags":["integrations"],"summary":"Get Integration Catalog","description":"Browse installable integrations in the catalog. mode='installed' limits the list to what this\nidentity already has; mode='discover' shows what it could add. query, category, capability,\ntrust, family, attention and featured are facets over that set, and page/size bound the result.\nReturns catalog entries, NOT integration publications - to list the templates you have published,\nuse list_integration_templates, which takes scope='mine'.","operationId":"get_integration_catalog_api_integrations_catalog_get","parameters":[{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"enum":["installed","discover"],"type":"string"},{"type":"null"}],"title":"Mode"}},{"name":"query","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Query"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"capability","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capability"}},{"name":"attention","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Attention"}},{"name":"featured","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Featured"}},{"name":"trust","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trust"}},{"name":"family","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Family"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Size"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CatalogItemOut"},"title":"Response Get Integration Catalog Api Integrations Catalog Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/installations":{"post":{"tags":["integrations"],"summary":"Install Definition","description":"Install a definition into a target folder (idempotent on folder+definition).\n\nRequires the edit rung on the target folder (enforced by the service). A\nre-install of an already-installed definition returns the existing row with\n``created=False``.","operationId":"install_definition_api_integrations_installations_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstallRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstallationDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/installations/{installation_id}":{"get":{"tags":["integrations"],"summary":"Get Installation","description":"One installation's detail (404 when not visible to the viewer).","operationId":"get_installation_api_integrations_installations__installation_id__get","parameters":[{"name":"installation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Installation Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstallationDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["integrations"],"summary":"Patch Installation","description":"Patch an installation's folder-level flags (``hidden``). Absent field is a no-op.","operationId":"patch_installation_api_integrations_installations__installation_id__patch","parameters":[{"name":"installation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Installation Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchInstallationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstallationDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["integrations"],"summary":"Delete Installation","description":"Remove an installation from its folder (edit rung enforced by the service).","operationId":"delete_installation_api_integrations_installations__installation_id__delete","parameters":[{"name":"installation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Installation Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveResultOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/installations/{installation_id}/setup":{"get":{"tags":["integrations"],"summary":"Get Installation Setup","description":"The viewer's setup for this installation: configured when connected, else ``null``.","operationId":"get_installation_setup_api_integrations_installations__installation_id__setup_get","parameters":[{"name":"installation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Installation Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/SetupStateOut"},{"type":"null"}],"title":"Response Get Installation Setup Api Integrations Installations  Installation Id  Setup Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"setup_get"},"post":{"tags":["integrations"],"summary":"Start Installation Setup","description":"Report the viewer's setup for this installation; stores nothing.\n\n``configured`` when the viewer is already connected, else ``in_progress``\nat the requested step (or the handler's own current step).","operationId":"start_installation_setup_api_integrations_installations__installation_id__setup_post","parameters":[{"name":"installation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Installation Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetupStartRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetupStateOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"setup_create"}},"/api/integrations/installations/{installation_id}/connections/actions/{action}":{"post":{"tags":["integrations"],"summary":"Run Connection Action","description":"Run an action published by one exact viewer-scoped connection summary.","operationId":"run_connection_action_api_integrations_installations__installation_id__connections_actions__action__post","parameters":[{"name":"installation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Installation Id"}},{"name":"action","in":"path","required":true,"schema":{"type":"string","title":"Action"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionActionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionActionResultOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/definitions/{definition_id}/connections/actions/{action}":{"post":{"tags":["integrations"],"summary":"Run Uninstalled Platform Connection Action","description":"Run a published personal action when a platform row has no installation anchor.","operationId":"run_uninstalled_platform_connection_action_api_integrations_definitions__definition_id__connections_actions__action__post","parameters":[{"name":"definition_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Definition Id"}},{"name":"action","in":"path","required":true,"schema":{"type":"string","title":"Action"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionActionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionActionResultOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/installations/{installation_id}/actions/{action}":{"post":{"tags":["integrations"],"summary":"Run Installation Action","description":"Run a server-allowlisted lifecycle action against an installation.\n\nSee ``_ALLOWED_ACTIONS`` for the action -> existing-subsystem mapping. Any\nother action id is a ``400 unsupported_action`` rather than a silent accept.\nEvery action is scoped to the caller's own identity and folder rung, so it\ncan never read or move another identity's setup, evidence, or credential.","operationId":"run_installation_action_api_integrations_installations__installation_id__actions__action__post","parameters":[{"name":"installation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Installation Id"}},{"name":"action","in":"path","required":true,"schema":{"type":"string","title":"Action"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionResultOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/work-runtimes/environments":{"get":{"tags":["work-runtimes"],"summary":"Get Runtime Environments","operationId":"get_runtime_environments_api_work_runtimes_environments_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuntimeEnvironmentListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["work-runtimes"],"summary":"Create Work Runtime Environment","operationId":"create_work_runtime_environment_api_work_runtimes_environments_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRuntimeEnvironmentRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuntimeEnvironmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/work-runtimes/environments/{environment_id}/space":{"put":{"tags":["work-runtimes"],"summary":"File Environment In Folder","description":"File an environment in a folder, including one currently filed in none.\n\nSeparate from PATCH on purpose: PATCH loads through the normal access\ncheck, which returns nothing for an environment with no folder, so it can\nnever repair one. This is the only door that can.","operationId":"file_environment_in_space_api_work_runtimes_environments__environment_id__space_put","parameters":[{"name":"environment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Environment Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileRuntimeEnvironmentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuntimeEnvironmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"environment_file_in_space"}},"/api/work-runtimes/environments/{environment_id}":{"patch":{"tags":["work-runtimes"],"summary":"Update Work Runtime Environment","operationId":"update_work_runtime_environment_api_work_runtimes_environments__environment_id__patch","parameters":[{"name":"environment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Environment Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRuntimeEnvironmentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuntimeEnvironmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/work-runtimes/agents/{agent_identity_id}/bindings":{"get":{"tags":["work-runtimes"],"summary":"Get Agent Runtime Bindings","operationId":"get_agent_runtime_bindings_api_work_runtimes_agents__agent_identity_id__bindings_get","parameters":[{"name":"agent_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRuntimeBindingListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"bindings_get"},"put":{"tags":["work-runtimes"],"summary":"Put Agent Runtime Binding","operationId":"put_agent_runtime_binding_api_work_runtimes_agents__agent_identity_id__bindings_put","parameters":[{"name":"agent_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAgentRuntimeBindingRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRuntimeBindingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"bindings_set"}},"/api/cli/task-state":{"post":{"tags":["cli"],"summary":"Record Task State","description":"Upsert this machine's task-state for a repo (one row per worktree).","operationId":"record_task_state_api_cli_task_state_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskStateIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Record Task State Api Cli Task State Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["cli"],"summary":"Resume Task State","description":"The freshest task-state for a repo from a different machine, if resumable.","operationId":"resume_task_state_api_cli_task_state_get","parameters":[{"name":"repo","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Repo"}},{"name":"machine_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Machine Id"}},{"name":"window_seconds","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Window Seconds"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Resume Task State Api Cli Task State Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/cli/work-contracts/{run_id}":{"get":{"tags":["cli"],"summary":"Work Contract Status","description":"Durable work-contract evidence for a run the caller can see.","operationId":"work_contract_status_api_cli_work_contracts__run_id__get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Run Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Work Contract Status Api Cli Work Contracts  Run Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp/connected-clients":{"get":{"tags":["mcp-connection-status"],"summary":"Connected Clients","description":"Per-client-family connection status, evidence-backed only.\n\nReturns one row per Connect-screen client id (chatgpt, claude, codex,\nclaude-code). ``status`` is \"connected\" only on real invocation evidence\nwithin the staleness window, \"stale\" when evidence exists but is older\nthan the window (rendered as \"last seen X\" by the frontend), and\n\"not_yet\" when no evidence exists at all.","operationId":"connected_clients_api_mcp_connected_clients_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectedClientsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{registration_id}/icon":{"post":{"tags":["mcp-icons"],"summary":"Upload Registration Icon","operationId":"upload_registration_icon_api_integrations_instances__registration_id__icon_post","parameters":[{"name":"registration_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Registration Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_registration_icon_api_integrations_instances__registration_id__icon_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Upload Registration Icon Api Integrations Instances  Registration Id  Icon Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"icon_create"},"delete":{"tags":["mcp-icons"],"summary":"Delete Registration Icon","operationId":"delete_registration_icon_api_integrations_instances__registration_id__icon_delete","parameters":[{"name":"registration_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Registration Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"icon_delete"},"get":{"tags":["mcp-icons"],"summary":"Get Registration Icon","description":"TOS-5027: a globally-published connector's icon is always a vendor\nbrand logo, never sensitive data - the same ``definition.library_id is\nNone`` test ``_load_registration_for_icon_write`` uses to refuse writes\nagainst a shared publisher row. A marketplace/catalog `<img>` tag cannot\nattach a Bearer token, so gating every icon behind auth made this route\n401 for that case and silently fall back to a generic glyph (confirmed\nlive: 401 with no Authorization header). Served public here, matching\n``identity_avatars.py``'s existing public-image pattern; a private,\nfolder-scoped instance still requires the caller's per-folder VIEW\nrung exactly as before.\n\nTOS-5192: the authenticated path used to load the aggregate TWICE - the\nprobe ``load_aggregate`` above (needed to test ``definition.library_id``)\nand again inside ``RegistrationService.get`` for the rung check. When the\nprobe says the definition IS library-scoped, its aggregate already answers\nthe rung check's first question (``instance.library_id``), so the rung is\nresolved here directly and the probe's aggregate is reused; the second\nfull load disappears. Same authz semantics: no membership still 404, rung\nbelow VIEW still 403. The probe does NOT 404 an unknown id before the auth\ngate: an anonymous caller with an unknown id still gets the 401, so the\nroute keeps ``test_unknown_instance_401s...``'s existence-non-leak property.","operationId":"get_registration_icon_api_integrations_instances__registration_id__icon_get","parameters":[{"name":"registration_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Registration Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"icon_get"}},"/api/integrations/instances/{registration_id}/icon/materialize":{"post":{"tags":["mcp-icons"],"summary":"Materialize Registration Icon","operationId":"materialize_registration_icon_api_integrations_instances__registration_id__icon_materialize_post","parameters":[{"name":"registration_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Registration Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MaterializeIconRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Materialize Registration Icon Api Integrations Instances  Registration Id  Icon Materialize Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{registration_id}/icon/discover":{"post":{"tags":["mcp-icons"],"summary":"Discover Registration Icon","operationId":"discover_registration_icon_api_integrations_instances__registration_id__icon_discover_post","parameters":[{"name":"registration_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Registration Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"null"}]},"title":"Response Discover Registration Icon Api Integrations Instances  Registration Id  Icon Discover Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp/calls":{"get":{"tags":["mcp-management"],"summary":"List Calls","operationId":"list_calls_api_mcp_calls_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Size"}},{"name":"lens","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lens"}},{"name":"registration","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registration"}},{"name":"registration_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Registration Id"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Since"}},{"name":"success","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Success"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Calls Api Mcp Calls Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp/calls/{trace_id}":{"get":{"tags":["mcp-management"],"summary":"Get Call","description":"Fetch a single forwarded-call trace.\n\nVisible to:\n  - the row's identity_id (direct caller, e.g. PAT or self), or\n  - any active human owner of the agent whose identity_id is on the row\n    (chat-driven calls write the agent as identity_id; the human owner\n    still needs to see their own trace through the chat UI).","operationId":"get_call_api_mcp_calls__trace_id__get","parameters":[{"name":"trace_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Trace Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpForwardedCallDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp/consult-invocations/{invocation_id}":{"get":{"tags":["mcp-management"],"summary":"Get Consult Invocation","description":"Fetch the audit row for an MCP consult initiated by the caller.","operationId":"get_consult_invocation_api_mcp_consult_invocations__invocation_id__get","parameters":[{"name":"invocation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Invocation Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpConsultInvocationDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp/health":{"get":{"tags":["mcp-management"],"summary":"Get Health","description":"Return aggregator config + per-identity registration summary.","operationId":"get_health_api_mcp_health_get","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Health Api Mcp Health Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{registration_id}/oauth/initiate":{"post":{"tags":["mcp-oauth"],"summary":"Initiate Oauth","description":"Begin the configured OAuth 2 authorization-code flow.\n\n1. Scope-check the registration to the caller's identity.\n2. Validate auth_kind == 'oauth2'.\n3. Validate discovery for MCP resources. REST connections may use their\n   statically configured authorization and token endpoints.\n4. Perform DCR if oauth_client_id is not yet set.\n5. Generate a state token and the configured PKCE pair, if any.\n6. Insert a short-lived IdentityMcpOAuthState row.\n7. Build and return the authorization URL.","operationId":"initiate_oauth_api_integrations_instances__registration_id__oauth_initiate_post","parameters":[{"name":"registration_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Registration Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthInitiateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthInitiateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{registration_id}/oauth/consent":{"get":{"tags":["mcp-oauth"],"summary":"Get Consent Options","description":"The permissions a person may choose when connecting (TOS-6946).\n\nSame authority as initiate: whoever may connect this account may read what\nconnecting it would ask for. ``new=true`` answers for ANOTHER connection\nto the same connector (the Add connection flow, before the new account\nexists): the connector's own release, blank, nothing current.","operationId":"get_consent_options_api_integrations_instances__registration_id__oauth_consent_get","parameters":[{"name":"registration_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Registration Id"}},{"name":"new","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"New"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsentOptionsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{registration_id}/update-offer":{"get":{"tags":["mcp-oauth"],"summary":"Get Update Offer","description":"Whether a newer connector version adds a permission this connection could turn on.\n\nPure comparison of the connection's approved version with the connector's\nlatest version (``services/connections/upgrades.py``). Reading it changes\nnothing, so the offer comes back on every load until it is acted on.","operationId":"get_update_offer_api_integrations_instances__registration_id__update_offer_get","parameters":[{"name":"registration_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Registration Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOfferOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{registration_id}/update-offer/accept":{"post":{"tags":["mcp-oauth"],"summary":"Accept Update Offer","description":"Accept a connector update with exactly the permissions the person checked (TOS-6949).\n\nOld approvals are kept only if still checked; a new permission is on only\nif checked. When everything checked is already granted by the provider the\napproval is recorded against the new version and the account re-pinned in\nthis request. Otherwise nothing is written and the page goes to the\nprovider (``needs_provider``), whose callback records the approval.","operationId":"accept_update_offer_api_integrations_instances__registration_id__update_offer_accept_post","parameters":[{"name":"registration_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Registration Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAcceptIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAcceptOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{registration_id}/pick-candidates":{"get":{"tags":["mcp-oauth"],"summary":"Get Pick Candidates","operationId":"get_pick_candidates_api_integrations_instances__registration_id__pick_candidates_get","parameters":[{"name":"registration_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Registration Id"}},{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PickCandidatesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/instances/{registration_id}/pick":{"post":{"tags":["mcp-oauth"],"summary":"Complete Pick","operationId":"complete_pick_api_integrations_instances__registration_id__pick_post","parameters":[{"name":"registration_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Registration Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PickRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PickCompleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp/oauth/callback":{"get":{"tags":["mcp-oauth"],"summary":"Oauth Callback","description":"Handle the OAuth authorization-server redirect back to thinqOS.\n\nThe ``state`` parameter is the authentication primitive - no session auth\nis required here. Flow:\n\n1. If ``error`` param present → redirect to error page.\n2. Look up IdentityMcpOAuthState by ``state`` → 404 page on miss.\n3. Check expiry → redirect to error page on expired.\n4. Exchange the code for tokens.\n5. Encrypt tokens via FernetEncryptor → INLINE: refs.\n6. Persist token refs + expiry to the registration.\n7. Delete the state row.\n8. Redirect to success page.","operationId":"oauth_callback_api_mcp_oauth_callback_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},{"name":"iss","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Iss"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/github-app/install":{"post":{"tags":["github-app-integration"],"summary":"Install Github App","description":"Begin a GitHub App installation for the calling identity.\n\n1. Refuse cleanly if the GitHub App isn't configured (no broken URL).\n2. Resolve-or-create the caller's own instance + folder installation fact.\n3. Insert a short-lived ``IdentityMcpOAuthState`` row (no PKCE - the state\n   token itself is the callback's auth primitive).\n4. Return the GitHub install URL carrying that state.","operationId":"install_github_app_api_integrations_github_app_install_post","parameters":[{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubAppInstallRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubAppInstallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/github-app/callback":{"get":{"tags":["github-app-integration"],"summary":"Github App Callback","description":"Handle GitHub's redirect back from an App installation.\n\n``state`` is the authentication primitive here - no session auth is\nrequired (see module docstring). Flow:\n\n1. Look up the state row by ``state`` -> error redirect on miss.\n2. Check expiry -> error redirect + discard on expired.\n3. ``setup_action == \"request\"``: a non-admin org member requested install;\n   GitHub queues it for owner approval with no ``installation_id`` to\n   record yet - discard the state and redirect with an info marker, no\n   connection row.\n4. Otherwise ``installation_id`` must be present.\n5. TOS-7262: ``code`` must be present and prove that the GitHub user who\n   installed can access ``installation_id`` (see module docstring). Any\n   failure records nothing, discards the state and error-redirects.\n6. Write the per-caller connection and discard the state.","operationId":"github_app_callback_api_integrations_github_app_callback_get","parameters":[{"name":"installation_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Installation Id"}},{"name":"setup_action","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Setup Action"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/harness/model":{"post":{"tags":["external-harness"],"summary":"Call Harness Model","description":"Execute a model call authorized entirely by a signed run packet.","operationId":"call_harness_model_api_harness_model_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HarnessModelRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HarnessModelResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/egress/p/{alias}/{upstream_path}":{"get":{"tags":["sandbox-egress"],"summary":"Sandbox Egress Forward Get","description":"Authenticate, resolve, inject, forward, stream back.\n\n``payload`` here is the SAME verification ``bounded_request_body`` already\nforced to happen before ``body`` could be produced above; FastAPI's\nper-request dependency cache means this does not verify the token a\nsecond time, it just hands back the one result.","operationId":"sandbox_egress_forward_get_api_egress_p__alias___upstream_path__get","parameters":[{"name":"alias","in":"path","required":true,"schema":{"type":"string","title":"Alias"}},{"name":"upstream_path","in":"path","required":true,"schema":{"type":"string","title":"Upstream Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["sandbox-egress"],"summary":"Sandbox Egress Forward Post","description":"Authenticate, resolve, inject, forward, stream back.\n\n``payload`` here is the SAME verification ``bounded_request_body`` already\nforced to happen before ``body`` could be produced above; FastAPI's\nper-request dependency cache means this does not verify the token a\nsecond time, it just hands back the one result.","operationId":"sandbox_egress_forward_post_api_egress_p__alias___upstream_path__post","parameters":[{"name":"alias","in":"path","required":true,"schema":{"type":"string","title":"Alias"}},{"name":"upstream_path","in":"path","required":true,"schema":{"type":"string","title":"Upstream Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["sandbox-egress"],"summary":"Sandbox Egress Forward Put","description":"Authenticate, resolve, inject, forward, stream back.\n\n``payload`` here is the SAME verification ``bounded_request_body`` already\nforced to happen before ``body`` could be produced above; FastAPI's\nper-request dependency cache means this does not verify the token a\nsecond time, it just hands back the one result.","operationId":"sandbox_egress_forward_put_api_egress_p__alias___upstream_path__put","parameters":[{"name":"alias","in":"path","required":true,"schema":{"type":"string","title":"Alias"}},{"name":"upstream_path","in":"path","required":true,"schema":{"type":"string","title":"Upstream Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["sandbox-egress"],"summary":"Sandbox Egress Forward Patch","description":"Authenticate, resolve, inject, forward, stream back.\n\n``payload`` here is the SAME verification ``bounded_request_body`` already\nforced to happen before ``body`` could be produced above; FastAPI's\nper-request dependency cache means this does not verify the token a\nsecond time, it just hands back the one result.","operationId":"sandbox_egress_forward_patch_api_egress_p__alias___upstream_path__patch","parameters":[{"name":"alias","in":"path","required":true,"schema":{"type":"string","title":"Alias"}},{"name":"upstream_path","in":"path","required":true,"schema":{"type":"string","title":"Upstream Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["sandbox-egress"],"summary":"Sandbox Egress Forward Delete","description":"Authenticate, resolve, inject, forward, stream back.\n\n``payload`` here is the SAME verification ``bounded_request_body`` already\nforced to happen before ``body`` could be produced above; FastAPI's\nper-request dependency cache means this does not verify the token a\nsecond time, it just hands back the one result.","operationId":"sandbox_egress_forward_delete_api_egress_p__alias___upstream_path__delete","parameters":[{"name":"alias","in":"path","required":true,"schema":{"type":"string","title":"Alias"}},{"name":"upstream_path","in":"path","required":true,"schema":{"type":"string","title":"Upstream Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"head":{"tags":["sandbox-egress"],"summary":"Sandbox Egress Forward Head","description":"Authenticate, resolve, inject, forward, stream back.\n\n``payload`` here is the SAME verification ``bounded_request_body`` already\nforced to happen before ``body`` could be produced above; FastAPI's\nper-request dependency cache means this does not verify the token a\nsecond time, it just hands back the one result.","operationId":"sandbox_egress_forward_head_api_egress_p__alias___upstream_path__head","parameters":[{"name":"alias","in":"path","required":true,"schema":{"type":"string","title":"Alias"}},{"name":"upstream_path","in":"path","required":true,"schema":{"type":"string","title":"Upstream Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"options":{"tags":["sandbox-egress"],"summary":"Sandbox Egress Forward Options","description":"Authenticate, resolve, inject, forward, stream back.\n\n``payload`` here is the SAME verification ``bounded_request_body`` already\nforced to happen before ``body`` could be produced above; FastAPI's\nper-request dependency cache means this does not verify the token a\nsecond time, it just hands back the one result.","operationId":"sandbox_egress_forward_options_api_egress_p__alias___upstream_path__options","parameters":[{"name":"alias","in":"path","required":true,"schema":{"type":"string","title":"Alias"}},{"name":"upstream_path","in":"path","required":true,"schema":{"type":"string","title":"Upstream Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/.well-known/oauth-authorization-server":{"get":{"tags":["oauth-provider"],"summary":"Authorization Server Metadata","description":"RFC 8414 authorization-server metadata.","operationId":"authorization_server_metadata__well_known_oauth_authorization_server_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Authorization Server Metadata  Well Known Oauth Authorization Server Get"}}}}}}},"/.well-known/openai-apps-challenge":{"get":{"tags":["oauth-provider"],"summary":"Openai Apps Challenge","description":"OpenAI plugin directory domain verification (TOS-6807).\n\nReturns only the configured verification token, as plain text. With no\ntoken configured there is no pending challenge, so the path is a 404.","operationId":"openai_apps_challenge__well_known_openai_apps_challenge_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/oauth-protected-resource/mcp/":{"get":{"tags":["oauth-provider"],"summary":"Protected Resource Metadata","description":"RFC 9728 protected-resource metadata pointing at /mcp.","operationId":"protected_resource_metadata__well_known_oauth_protected_resource_mcp__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Protected Resource Metadata  Well Known Oauth Protected Resource Mcp  Get"}}}}}}},"/.well-known/oauth-protected-resource/mcp":{"get":{"tags":["oauth-provider"],"summary":"Protected Resource Metadata","description":"RFC 9728 protected-resource metadata pointing at /mcp.","operationId":"protected_resource_metadata__well_known_oauth_protected_resource_mcp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Protected Resource Metadata  Well Known Oauth Protected Resource Mcp Get"}}}}}}},"/.well-known/oauth-protected-resource":{"get":{"tags":["oauth-provider"],"summary":"Protected Resource Metadata","description":"RFC 9728 protected-resource metadata pointing at /mcp.","operationId":"protected_resource_metadata__well_known_oauth_protected_resource_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Protected Resource Metadata  Well Known Oauth Protected Resource Get"}}}}}}},"/oauth/register":{"post":{"tags":["oauth-provider"],"summary":"Register","description":"Dynamic Client Registration. Public by default; confidential on request.","operationId":"register_oauth_register_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/oauth/register/{client_id}":{"get":{"tags":["oauth-provider"],"summary":"Read Client Configuration","description":"RFC 7592: read a client's current registration (Bearer-authenticated).","operationId":"read_client_configuration_oauth_register__client_id__get","parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string","title":"Client Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["oauth-provider"],"summary":"Update Client Configuration","description":"RFC 7592: amend a client's ``redirect_uris`` (Bearer-authenticated).\n\nScoped to ``redirect_uris`` (+ optional ``client_name``) - the fields a\nconsumer needs to self-manage. ``token_endpoint_auth_method`` and secrets are\nimmutable here; changing a public client to confidential is a re-registration.","operationId":"update_client_configuration_oauth_register__client_id__put","parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string","title":"Client Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/oauth/authorize":{"get":{"tags":["oauth-provider"],"summary":"Authorize","description":"Authorization Code + PKCE entry point.\n\nValidates the request, enforces the Clerk auth wall, then renders the\nconsent screen. Validation errors that cannot safely redirect are returned\nas JSON; once the client+redirect_uri are validated, OAuth errors redirect\nback to ``redirect_uri`` per RFC 6749.","operationId":"authorize_oauth_authorize_get","parameters":[{"name":"response_type","in":"query","required":true,"schema":{"type":"string","title":"Response Type"}},{"name":"client_id","in":"query","required":true,"schema":{"type":"string","title":"Client Id"}},{"name":"redirect_uri","in":"query","required":true,"schema":{"type":"string","title":"Redirect Uri"}},{"name":"code_challenge","in":"query","required":true,"schema":{"type":"string","title":"Code Challenge"}},{"name":"code_challenge_method","in":"query","required":false,"schema":{"type":"string","default":"S256","title":"Code Challenge Method"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","title":"State"}},{"name":"scope","in":"query","required":false,"schema":{"type":"string","default":"mcp","title":"Scope"}},{"name":"resource","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resource"}},{"name":"act_as_identity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Act As Identity Id"}},{"name":"act_as_session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Act As Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["oauth-provider"],"summary":"Authorize Decision","description":"Consent decision handler. Approval mints a one-time code and redirects.\n\nThe consent page submits with ``Accept: application/json`` and navigates\nfrom script, so the redirect comes back as ``{\"redirect\": url}`` (200)\ninstead of a 302. A browser POSTing the form without script, or any\nother caller, still gets the 302. See ``_consent_page`` for why.","operationId":"authorize_decision_oauth_authorize_post","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_authorize_decision_oauth_authorize_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/oauth/token":{"post":{"tags":["oauth-provider"],"summary":"Token Endpoint","description":"Authorization-code exchange and refresh-token rotation.","operationId":"token_endpoint_oauth_token_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/oauth/userinfo":{"get":{"tags":["oauth-provider"],"summary":"Userinfo","description":"Return the signed-in person's identity claims for a ``tqo_`` access token.\n\nValidation is the same as every other ``tqo_`` surface: the token row via\n``ApiKeyService.validate_oauth_token``, an active identity, and the\nprivate-preview product-access gate ``/mcp`` applies. The token must carry\n``openid``. ``email_verified`` is true only when Clerk reported the address\nverified (``identity_emails.verified_at``); the address itself is returned\nonly when the grant also carries ``email``.","operationId":"userinfo_oauth_userinfo_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["oauth-provider"],"summary":"Userinfo","description":"Return the signed-in person's identity claims for a ``tqo_`` access token.\n\nValidation is the same as every other ``tqo_`` surface: the token row via\n``ApiKeyService.validate_oauth_token``, an active identity, and the\nprivate-preview product-access gate ``/mcp`` applies. The token must carry\n``openid``. ``email_verified`` is true only when Clerk reported the address\nverified (``identity_emails.verified_at``); the address itself is returned\nonly when the grant also carries ``email``.","operationId":"userinfo_oauth_userinfo_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/oauth/revoke":{"post":{"tags":["oauth-provider"],"summary":"Revoke","description":"Idempotent, client-authenticated token revocation. 200 unless client auth fails.","operationId":"revoke_oauth_revoke_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auth/oidc/session":{"post":{"tags":["auth"],"summary":"Establish Oidc Session","operationId":"establish_oidc_session_api_auth_oidc_session_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OidcSessionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OidcSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/auth/oidc/transaction":{"post":{"tags":["auth"],"summary":"Begin Oidc Transaction","operationId":"begin_oidc_transaction_api_auth_oidc_transaction_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OidcTransactionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OidcTransactionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-exclude":true}},"/api/embed/{agent_identity_id}/session":{"post":{"tags":["agent-embed"],"summary":"Embed Session","description":"Bootstrap a visitor and their chat, for the chromeless chat UI (TOS-3161).\n\nThe two existing embed routes (``turn``, ``forget``) are a write-only\necho: the reply comes back in the response to the visitor's own POST, and\nthere is no way to read history or watch a reply stream. Reusing the\nproduct's real chat surface fixes that, but the real surface needs a\n``chat_id`` and a ``vis_`` bearer token to authenticate against\n``GET/POST /api/chats/{chat_id}/...`` BEFORE the visitor has said\nanything - the UI wants to mount and show a composer immediately, not\nonly after a first message.\n\nThis is that bootstrap, and only that: authorize the origin, mint-or-\nresolve the visitor, guarantee they have a chat, and hand back exactly\nwhat the chat UI needs to mount. No budget check, because no model call\nhappens here - a visitor who loads the widget and never sends anything\nmust not cost the agent owner a turn. The daily and per-visitor ceilings\nare still claimed inside ``send_message``/``stream_message`` themselves\nthe ordinary way every chat turn claims them, unaffected by this route.","operationId":"embed_session_api_embed__agent_identity_id__session_post","parameters":[{"name":"agent_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Identity Id"}},{"name":"origin","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Origin"}},{"name":"x-agent-visitor","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Agent-Visitor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/embed/{agent_identity_id}/turn":{"post":{"tags":["agent-embed"],"summary":"Embed Turn","description":"Run one turn of the embedded agent for an anonymous visitor.","operationId":"embed_turn_api_embed__agent_identity_id__turn_post","parameters":[{"name":"agent_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Identity Id"}},{"name":"origin","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Origin"}},{"name":"x-agent-visitor","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Agent-Visitor"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TurnBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TurnResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/embed/{agent_identity_id}/forget":{"post":{"tags":["agent-embed"],"summary":"Embed Forget","description":"Erase an unclaimed visitor transcript and facts, and revoke its token.\n\nThe credential must match this agent and its recorded origin. The iframe's\nown same-origin transport retains the existing origin bypass. Current\nembed enablement and exposure policy do not gate erasure of earlier data.","operationId":"embed_forget_api_embed__agent_identity_id__forget_post","parameters":[{"name":"agent_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Identity Id"}},{"name":"origin","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Origin"}},{"name":"x-agent-visitor","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Agent-Visitor"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/{agent_identity_id}/embed":{"get":{"tags":["agent-embed"],"summary":"Get Embed Settings","description":"Read this agent's embed configuration. Owner only.","operationId":"get_embed_settings_api_agents__agent_identity_id__embed_get","parameters":[{"name":"agent_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmbedSettingsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"embed_get"},"put":{"tags":["agent-embed"],"summary":"Put Embed Settings","description":"Replace this agent's embed configuration. Owner only.\n\nOrigins are normalized and validated here rather than at read time, so a\ntypo is a 422 the owner sees immediately instead of an allowlist entry\nthat silently never matches anything.","operationId":"put_embed_settings_api_agents__agent_identity_id__embed_put","parameters":[{"name":"agent_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmbedSettingsBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmbedSettingsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"embed_set"}},"/api/agents/{agent_identity_id}/embed/events":{"post":{"tags":["agent-embed"],"summary":"Record Embed Event","description":"Record bounded owner UI adoption signals, not proof of visitor activity.\n\nClosed fields exclude page URLs, identifiers, visitor credentials and\ntranscripts. The route never writes conversation data or calls a model.","operationId":"record_embed_event_api_agents__agent_identity_id__embed_events_post","parameters":[{"name":"agent_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmbedEventBody"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"embed_event"}},"/api/agents/{agent_identity_id}/embed/diagnose":{"post":{"tags":["agent-embed"],"summary":"Diagnose Embed Settings","description":"Check owner configuration for a published URL without fetching it.\n\nThis is not evidence that a widget exists or a visitor session succeeded.\nNo remote requests, browser credentials, transcript or model calls are made.","operationId":"diagnose_embed_settings_api_agents__agent_identity_id__embed_diagnose_post","parameters":[{"name":"agent_identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Identity Id"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmbedDiagnosisBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmbedDiagnosisOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-mcp-action":"embed_diagnose"}},"/api/public-config":{"get":{"tags":["public-config"],"summary":"Public Config","description":"Unauthenticated client configuration. See the module docstring.","operationId":"public_config_api_public_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Public Config Api Public Config Get"}}}}}}},"/api/health/providers":{"get":{"tags":["provider-health"],"summary":"Get Provider Health","operationId":"get_provider_health_api_health_providers_get","parameters":[{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Refresh"}},{"name":"refresh_platform_keys","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Refresh Platform Keys"}},{"name":"refresh_identity_keys","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Refresh Identity Keys"}},{"name":"x-impersonate-identity-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Impersonate-Identity-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProviderHealthResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/bridge/config/{reg_id}":{"post":{"tags":["internal-bridge"],"summary":"Get Spawn Config","description":"Return resolved spawn config for a stdio_bridge registration.","operationId":"get_spawn_config_api_internal_bridge_config__reg_id__post","parameters":[{"name":"reg_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Reg Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpawnConfig"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/test-runner-targets":{"get":{"tags":["internal-test-runner"],"summary":"List For Runner","operationId":"list_for_runner_api_internal_test_runner_targets_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerTargetsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/update-policy":{"get":{"tags":["internal-updater"],"summary":"Get Update Policy","operationId":"get_update_policy_api_internal_update_policy_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalUpdatePolicy"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/update-control/claim":{"post":{"tags":["internal-updater"],"summary":"Claim Update Work","operationId":"claim_update_work_api_internal_update_control_claim_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/update-control/availability":{"post":{"tags":["internal-updater"],"summary":"Record Availability","operationId":"record_availability_api_internal_update_control_availability_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvailabilityBody"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/update-control/renew":{"post":{"tags":["internal-updater"],"summary":"Renew Update Lease","operationId":"renew_update_lease_api_internal_update_control_renew_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenewBody"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/update-control/check-failed":{"post":{"tags":["internal-updater"],"summary":"Record Check Failure","operationId":"record_check_failure_api_internal_update_control_check_failed_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FailureBody"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/update-control/complete":{"post":{"tags":["internal-updater"],"summary":"Complete Update Work","operationId":"complete_update_work_api_internal_update_control_complete_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompleteBody"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/update-control/event":{"post":{"tags":["internal-updater"],"summary":"Record Event","operationId":"record_event_api_internal_update_control_event_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventBody"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/update-control/adoption-receipt":{"post":{"tags":["internal-updater"],"summary":"Read Adoption Receipt","operationId":"read_adoption_receipt_api_internal_update_control_adoption_receipt_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReceiptBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"boolean"},"title":"Response Read Adoption Receipt Api Internal Update Control Adoption Receipt Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/agent-runs/execute":{"post":{"tags":["internal-agent-runs"],"summary":"Execute Run For Worker","description":"Execute one enqueued agent run synchronously and return its drain result.\n\nSynchronous by design: keeping the request in flight is what guarantees\nallocated CPU and no mid-turn instance reclamation. ``run_pending_adhoc_once_background``\nopens and closes its own isolated DB session, so no request-scoped session is\nused here.","operationId":"execute_run_for_worker_api_internal_agent_runs_execute_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteRunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/agent-runs/request-input":{"post":{"tags":["internal-agent-runs"],"summary":"Request Run Input For Worker","description":"Pause a currently-executing run so its caller can be asked a question (TOS-5382).\n\nThis is the reachable end of ``agent_triggers.request_run_input`` in\nproduction: awen-worker's execution loop (where a run's own turn actually\nruns, per this module's module docstring) is the one place that knows a\nrun is ``running`` and mid-turn, so it is the caller of this endpoint, not\nawen-api. Locked to the same worker service-account trust boundary as\n``/execute`` above; there is no user-facing surface for this because a\ncaller never sets run status directly - it only ever supplies the answer,\nthrough the A2A ``message/send`` resume path in ``a2a_task_service.py``.","operationId":"request_run_input_for_worker_api_internal_agent_runs_request_input_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestRunInputRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestRunInputResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/drafts/execute":{"post":{"tags":["internal-drafts"],"summary":"Execute Draft For Worker","description":"Execute one pending draft synchronously and return its outcome.\n\nSynchronous by design: keeping the request in flight is what guarantees\nallocated CPU and no mid-turn instance reclamation.\n``execute_draft_background`` opens and closes its own isolated DB session,\nso no request-scoped session is used here.","operationId":"execute_draft_for_worker_api_internal_drafts_execute_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteDraftRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteDraftResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/scheduler/tick":{"post":{"tags":["internal-scheduler"],"summary":"Scheduler Tick","operationId":"scheduler_tick_api_internal_scheduler_tick_post","parameters":[{"name":"x-cloudscheduler-scheduletime","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Cloudscheduler-Scheduletime"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Scheduler Tick Api Internal Scheduler Tick Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/scheduler/run":{"post":{"tags":["internal-scheduler"],"summary":"Scheduler Run","operationId":"scheduler_run_api_internal_scheduler_run_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunUnitRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Scheduler Run Api Internal Scheduler Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/background/hold":{"post":{"tags":["internal-background"],"summary":"Hold Instance","operationId":"hold_instance_api_internal_background_hold_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HoldRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Hold Instance Api Internal Background Hold Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"A2ACallerTokenCreate":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"A2ACallerTokenCreate"},"A2ACallerTokenCreated":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"key_prefix":{"type":"string","title":"Key Prefix"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"token":{"type":"string","title":"Token"}},"type":"object","required":["id","name","key_prefix","token"],"title":"A2ACallerTokenCreated","description":"Returned exactly once, at creation - the only time the secret exists."},"A2ACallerTokenSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"key_prefix":{"type":"string","title":"Key Prefix"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","name","key_prefix"],"title":"A2ACallerTokenSummary","description":"A minted caller token. Never carries the secret after creation."},"A2ACredentialSummary":{"properties":{"host":{"type":"string","title":"Host"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},"type":"object","required":["host"],"title":"A2ACredentialSummary","description":"A stored peer credential. Never carries the token itself."},"A2ACredentialUpsert":{"properties":{"host":{"type":"string","title":"Host"},"token":{"type":"string","title":"Token"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},"type":"object","required":["host","token"],"title":"A2ACredentialUpsert"},"A2AExposureResponse":{"properties":{"a2a_exposed":{"type":"boolean","title":"A2A Exposed"},"mcp_exposed":{"type":"boolean","title":"Mcp Exposed"},"agent_card_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Card Url"},"mcp_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcp Url"},"mcp_allowed_tools":{"items":{"type":"string"},"type":"array","title":"Mcp Allowed Tools","default":[]},"mcp_allowed_record_collections":{"items":{"type":"string"},"type":"array","title":"Mcp Allowed Record Collections","default":[]}},"type":"object","required":["a2a_exposed","mcp_exposed"],"title":"A2AExposureResponse"},"A2AExposureUpdate":{"properties":{"a2a_exposed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"A2A Exposed"},"mcp_exposed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Mcp Exposed"},"mcp_allowed_tools":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Mcp Allowed Tools"},"mcp_allowed_record_collections":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Mcp Allowed Record Collections"}},"type":"object","title":"A2AExposureUpdate"},"AbandonCaptureWorkersBody":{"properties":{"reason":{"type":"string","maxLength":500,"minLength":1,"title":"Reason"}},"type":"object","required":["reason"],"title":"AbandonCaptureWorkersBody"},"AboutIn":{"properties":{"text":{"type":"string","maxLength":8000,"title":"Text","default":""},"linkedin_url":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Linkedin Url"}},"additionalProperties":false,"type":"object","title":"AboutIn"},"AboutOut":{"properties":{"facts":{"items":{"$ref":"#/components/schemas/thinqos__api__setup__FactOut"},"type":"array","title":"Facts"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"role_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role Label"},"role_confidence":{"type":"number","title":"Role Confidence"},"tool_ids":{"items":{"type":"string"},"type":"array","title":"Tool Ids"},"extraction_available":{"type":"boolean","title":"Extraction Available"},"status":{"$ref":"#/components/schemas/SetupStatus"}},"type":"object","required":["facts","role","role_label","role_confidence","tool_ids","extraction_available","status"],"title":"AboutOut"},"AcceptBody":{"properties":{"invitation":{"type":"string","maxLength":1024,"minLength":1,"title":"Invitation"},"name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Name"}},"additionalProperties":false,"type":"object","required":["invitation"],"title":"AcceptBody"},"AcceptRequest":{"properties":{"acceptances":{"additionalProperties":{"type":"string"},"type":"object","title":"Acceptances","description":"document_kind -> content_sha256 the user was shown"},"early_stage_acknowledged":{"type":"boolean","title":"Early Stage Acknowledged"},"acceptance_action":{"type":"string","title":"Acceptance Action"}},"type":"object","required":["acceptances","early_stage_acknowledged","acceptance_action"],"title":"AcceptRequest"},"AcceptResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true},"recorded":{"type":"integer","title":"Recorded"}},"type":"object","required":["recorded"],"title":"AcceptResponse"},"AcceptedOut":{"properties":{"started":{"type":"boolean","title":"Started"}},"type":"object","required":["started"],"title":"AcceptedOut"},"AccessEntry":{"properties":{"can_act":{"type":"boolean","title":"Can Act","default":true},"identity":{"$ref":"#/components/schemas/TargetInfo"},"sources":{"items":{"$ref":"#/components/schemas/AccessSource"},"type":"array","title":"Sources"}},"type":"object","required":["identity","sources"],"title":"AccessEntry"},"AccessGrantRequest":{"properties":{"target_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Identity Id"},"actor_identity_id":{"type":"string","format":"uuid","title":"Actor Identity Id"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"expiry_timezone":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Expiry Timezone"},"duration_mode":{"type":"string","pattern":"^(continuous|one_session)$","title":"Duration Mode","default":"continuous"}},"type":"object","required":["actor_identity_id"],"title":"AccessGrantRequest"},"AccessGrantResponse":{"properties":{"grant_id":{"type":"string","format":"uuid","title":"Grant Id"},"target_identity_id":{"type":"string","format":"uuid","title":"Target Identity Id"},"actor_identity_id":{"type":"string","format":"uuid","title":"Actor Identity Id"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"expiry_timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expiry Timezone"}},"type":"object","required":["grant_id","target_identity_id","actor_identity_id","expires_at","expiry_timezone"],"title":"AccessGrantResponse"},"AccessRequestBody":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"},"email":{"type":"string","format":"email","title":"Email"},"intended_audience":{"type":"string","enum":["myself","my_team","my_organization"],"title":"Intended Audience"},"organization":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Organization"},"intended_use":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Intended Use"},"contact_consent":{"type":"boolean","const":true,"title":"Contact Consent"},"source":{"type":"string","enum":["header","mobile_menu","hero","content","footer","direct","legacy_sign_up","app_connect"],"title":"Source"},"turnstile_response":{"type":"string","maxLength":2048,"title":"Turnstile Response"}},"additionalProperties":false,"type":"object","required":["name","email","intended_audience","contact_consent","source","turnstile_response"],"title":"AccessRequestBody"},"AccessRequestOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"intended_audience":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Intended Audience"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"source":{"type":"string","title":"Source"},"status":{"type":"string","enum":["pending","approved","declined","invited","accepted"],"title":"Status"},"internal_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Internal Note"},"decision_actor_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Decision Actor Identity Id"},"decision_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Decision At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"invitation":{"anyOf":[{"$ref":"#/components/schemas/InvitationOut"},{"type":"null"}]}},"type":"object","required":["id","name","email","intended_audience","organization","source","status","internal_note","decision_actor_identity_id","decision_at","created_at","updated_at","invitation"],"title":"AccessRequestOut"},"AccessRequestPage":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AccessRequestOut"},"type":"array","title":"Items"},"next_offset":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Offset"}},"type":"object","required":["items","next_offset"],"title":"AccessRequestPage"},"AccessResponse":{"properties":{"can_manage":{"type":"boolean","title":"Can Manage"},"target":{"$ref":"#/components/schemas/TargetInfo"},"entries":{"items":{"$ref":"#/components/schemas/AccessEntry"},"type":"array","title":"Entries"}},"type":"object","required":["can_manage","target","entries"],"title":"AccessResponse"},"AccessSource":{"properties":{"active":{"type":"boolean","title":"Active","default":true},"source":{"type":"string","title":"Source"},"read_only":{"type":"boolean","title":"Read Only","default":false},"grant_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Grant Id"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"expiry_timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expiry Timezone"},"revocable":{"type":"boolean","title":"Revocable","default":false},"duration_mode":{"type":"string","title":"Duration Mode","default":"continuous"},"consumed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Consumed At"}},"type":"object","required":["source"],"title":"AccessSource"},"AccountabilityDoc":{"properties":{"statement":{"type":"string","title":"Statement"},"cadence":{"type":"string","enum":["continuous","daily","on_request","weekly"],"title":"Cadence","description":"continuous: standing responsibility on every applicable interaction; on_request: only when requested; daily/weekly: that recurrence. This field does not create a schedule. Preserve the requested meaning; never substitute an arbitrary accepted cadence."},"measures":{"items":{"$ref":"#/components/schemas/MeasureDoc"},"type":"array","title":"Measures","default":[]},"item_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Item Key"},"applies_when":{"type":"string","enum":["always","delegate_only"],"title":"Applies When","description":"delegate_only is valid only for a person charter.","default":"always"}},"additionalProperties":false,"type":"object","required":["statement","cadence"],"title":"AccountabilityDoc"},"ActionResultOut":{"properties":{"installation_id":{"type":"string","format":"uuid","title":"Installation Id"},"action":{"$ref":"#/components/schemas/CatalogActionId"},"ok":{"type":"boolean","title":"Ok"},"installation_state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Installation State"},"setup_state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Setup State"},"setup_step":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Setup Step"},"aggregate_state":{"anyOf":[{"$ref":"#/components/schemas/AggregateState"},{"type":"null"}]},"connected_for_viewer":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Connected For Viewer"},"credential":{"anyOf":[{"$ref":"#/components/schemas/MintedCredentialOut"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["installation_id","action","ok"],"title":"ActionResultOut","description":"Outcome of a server-allowlisted installation action (``POST .../actions/{action}``).\n\n``installation_state`` reflects the folder-level lifecycle after\n``enable``/``disable``; ``setup_state``/``setup_step`` report the viewer's\nderived setup after ``configure``/``connect``/``reconnect``/``verify``\n(``setup_state`` is ``configured`` only when the viewer is connected).\n``aggregate_state``/``connected_for_viewer`` are the freshly recomputed\nverdict of ``verify``. ``credential`` is populated only by an explicit mint\naction and only for the calling identity.\n\n``ok`` means the action executed; for ``verify`` the verdict is\n``connected_for_viewer``, not ``ok``."},"ActionsBlock":{"properties":{"type":{"type":"string","const":"actions","title":"Type"},"buttons":{"items":{"$ref":"#/components/schemas/UiButton"},"type":"array","maxItems":6,"minItems":1,"title":"Buttons"}},"additionalProperties":false,"type":"object","required":["type","buttons"],"title":"ActionsBlock"},"ActivationCertificateView":{"properties":{"cert_seq":{"type":"integer","title":"Cert Seq"},"mode":{"type":"string","title":"Mode"},"issued_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Issued At"},"not_after":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Not After"},"entitlement_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entitlement Class"},"entitlement_expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entitlement Expires At"}},"type":"object","required":["cert_seq","mode","issued_at","not_after","entitlement_class","entitlement_expires_at"],"title":"ActivationCertificateView"},"ActivationDeliveryView":{"properties":{"allowed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allowed"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"enforced":{"type":"boolean","title":"Enforced"}},"type":"object","required":["allowed","reason","enforced"],"title":"ActivationDeliveryView"},"ActivationEntitlementView":{"properties":{"state":{"type":"string","title":"State"},"class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Class"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At"},"critical_security":{"title":"Critical Security"}},"type":"object","required":["state","class","expires_at"],"title":"ActivationEntitlementView"},"ActivationIdentityView":{"properties":{"state":{"type":"string","title":"State"},"case_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Case Id"}},"type":"object","required":["state","case_id"],"title":"ActivationIdentityView"},"ActivationView":{"properties":{"state":{"type":"string","title":"State"},"enforced":{"type":"boolean","title":"Enforced"},"identity_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Identity Source"},"install_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Install Id"},"key_fingerprint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Fingerprint"},"generation":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Generation"},"grace_ends_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Grace Ends At"},"certificate":{"anyOf":[{"$ref":"#/components/schemas/ActivationCertificateView"},{"type":"null"}]},"last_verified_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Verified At"},"service_state":{"type":"string","title":"Service State"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"identity":{"$ref":"#/components/schemas/ActivationIdentityView"},"entitlement":{"$ref":"#/components/schemas/ActivationEntitlementView"},"delivery":{"$ref":"#/components/schemas/ActivationDeliveryView"}},"type":"object","required":["state","enforced","identity_source","install_id","key_fingerprint","generation","grace_ends_at","certificate","last_verified_at","service_state","last_error","identity","entitlement","delivery"],"title":"ActivationView","description":"Installation activation (TOS-3634 Release 2), SHADOW mode.\n\n``enforced`` is always false in this release: the state is shown, and\nnothing on the install is restricted by it."},"ActivityEventInfo":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"actor":{"$ref":"#/components/schemas/TargetInfo"},"target":{"$ref":"#/components/schemas/TargetInfo"},"performed_by":{"$ref":"#/components/schemas/TargetInfo"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"grant_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Grant Id"},"surface":{"type":"string","title":"Surface"},"action":{"type":"string","title":"Action"},"outcome":{"type":"string","title":"Outcome"},"resource":{"type":"string","title":"Resource"},"correlation_id":{"type":"string","format":"uuid","title":"Correlation Id"},"occurred_at":{"type":"string","format":"date-time","title":"Occurred At"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"request_action":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Action"}},"type":"object","required":["id","actor","target","performed_by","session_id","grant_id","surface","action","outcome","resource","correlation_id","occurred_at","summary"],"title":"ActivityEventInfo"},"ActivityResponse":{"properties":{"events":{"items":{"$ref":"#/components/schemas/ActivityEventInfo"},"type":"array","title":"Events"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"legacy_partial":{"type":"boolean","title":"Legacy Partial","default":true}},"type":"object","required":["events","next_cursor"],"title":"ActivityResponse"},"AddJoinRuleIn":{"properties":{"domain":{"type":"string","maxLength":253,"minLength":3,"title":"Domain"},"default_role":{"type":"string","title":"Default Role","default":"member"}},"type":"object","required":["domain"],"title":"AddJoinRuleIn"},"AddMemberRequest":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"role":{"type":"string","title":"Role"}},"type":"object","required":["identity_id","role"],"title":"AddMemberRequest"},"AddOrganizationMemberIn":{"properties":{"email":{"anyOf":[{"type":"string","maxLength":320,"minLength":3},{"type":"null"}],"title":"Email"},"identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Identity Id"},"role":{"type":"string","title":"Role","default":"member"}},"type":"object","title":"AddOrganizationMemberIn","description":"Put somebody on the roster by email address, or by picking them (TOS-4113 Lane A).\n\nAn email address typed by the administrator, or the ``identity_id`` of a row\nthey picked from ``GET /api/identities/search`` (TOS-7894). The picked id is\nonly honoured for somebody that search would show, so it is no way around\nanyone's opt-out of being found. Nobody types a UUID: the page sends the id\nof the row that was clicked.\n\nA NAME is not accepted, though it briefly was. ``identities.display_name``\nis neither unique nor verified and is chosen at sign-up, so adding by name\nseats whoever registered under that name first, with nothing on the screen\nto say so. 320 is the RFC 5321 maximum length of an address."},"AddParticipantBody":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"}},"additionalProperties":false,"type":"object","required":["identity_id"],"title":"AddParticipantBody"},"AddParticipantsBatchBody":{"properties":{"identity_ids":{"items":{"type":"string","format":"uuid"},"type":"array","minItems":1,"title":"Identity Ids"}},"additionalProperties":false,"type":"object","required":["identity_ids"],"title":"AddParticipantsBatchBody","description":"TOS-2938: add several people in one action - one system pill."},"AddParticipantsBatchResponse":{"properties":{"added":{"items":{"$ref":"#/components/schemas/ParticipantResponse"},"type":"array","title":"Added"},"skipped_already_active":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Skipped Already Active"}},"type":"object","required":["added"],"title":"AddParticipantsBatchResponse","description":"Result of a batch add: who was added and who was skipped.\n\nTOS-XXXX: the batch endpoint used to fail the whole request when any target\nwas already an active participant (a realistic race between two \"Add people\"\nmodals). It now skips already-active targets, adds the rest, and reports\nwhich identity ids were skipped so the UI can surface \"already in the room\"\nper person instead of a bare, nameless 409."},"AddReactionRequest":{"properties":{"emoji":{"type":"string","maxLength":8,"title":"Emoji"}},"type":"object","required":["emoji"],"title":"AddReactionRequest"},"AdminProviderHealthItem":{"properties":{"provider":{"type":"string","title":"Provider"},"display_name":{"type":"string","title":"Display Name"},"configured":{"type":"boolean","title":"Configured"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"status":{"type":"string","enum":["healthy","degraded","unhealthy","unknown"],"title":"Status"},"error_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Class"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"http_status":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Http Status"},"latency_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Latency Ms"},"last_probed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Probed At"},"last_success_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Success At"},"last_failure_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Failure At"},"key_fingerprint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Fingerprint"},"active_key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Active Key Id"},"owner_tenant_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner Tenant Id"},"owner_tenant_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Tenant Slug"},"owner_tenant_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Tenant Name"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"rotated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Rotated At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"}},"type":"object","required":["provider","display_name","configured","source","status","error_class","message","http_status","latency_ms","last_probed_at","last_success_at","last_failure_at","key_fingerprint","active_key_id","owner_tenant_id","owner_tenant_slug","owner_tenant_name","created_at","rotated_at","last_used_at"],"title":"AdminProviderHealthItem"},"AdminProviderHealthResponse":{"properties":{"providers":{"items":{"$ref":"#/components/schemas/AdminProviderHealthItem"},"type":"array","title":"Providers"}},"type":"object","required":["providers"],"title":"AdminProviderHealthResponse"},"AffectedToolOut":{"properties":{"name":{"type":"string","title":"Name"},"reason":{"type":"string","title":"Reason"},"failure_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Code"},"evidence":{"type":"string","enum":["probe","telemetry"],"title":"Evidence"},"observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Observed At"}},"type":"object","required":["name","reason","evidence"],"title":"AffectedToolOut","description":"One capability that is currently failing, with a plain-language reason.\n\n``reason`` is user-facing copy ('Permission no longer granted'), never a raw\nprovider string; ``evidence``/``observed_at`` say how the verdict was\nreached and how old it is (TOS-2708)."},"AgentAbilitiesResponse":{"properties":{"can_edit":{"type":"boolean","title":"Can Edit"},"can_view_mind":{"type":"boolean","title":"Can View Mind"}},"type":"object","required":["can_edit","can_view_mind"],"title":"AgentAbilitiesResponse"},"AgentCreateBody":{"properties":{"wallet_source":{"anyOf":[{"type":"string","enum":["creator","own"]},{"type":"null"}],"title":"Wallet Source"},"monthly_limit_usd":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string"},{"type":"null"}],"title":"Monthly Limit Usd"},"proxy_config":{"anyOf":[{"$ref":"#/components/schemas/ProxyConfiguration"},{"type":"null"}]},"display_name":{"type":"string","maxLength":200,"minLength":1,"title":"Display Name"},"charter":{"anyOf":[{"$ref":"#/components/schemas/CharterDoc"},{"type":"null"}]},"charter_inherited_boundaries_reviewed":{"type":"boolean","title":"Charter Inherited Boundaries Reviewed","default":false},"charter_activate":{"type":"boolean","title":"Charter Activate","default":false},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Description"},"tagline":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Tagline"},"visual_brand_guidelines":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Visual Brand Guidelines"},"visual_brand_logo_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Visual Brand Logo Url"},"system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt","description":"Mind Constitution: who the identity is. Distilled into identity, role, expertise, and trait beliefs in its Mind; instructions written here do NOT reach the model. Put rules in operating_instructions."},"operating_instructions":{"anyOf":[{"type":"string","maxLength":64000},{"type":"null"}],"title":"Operating Instructions","description":"Operating Instructions: rules injected verbatim into every turn this identity answers. Empty string clears them."},"config":{"additionalProperties":true,"type":"object","title":"Config"},"status":{"type":"string","enum":["active","archived"],"title":"Status","default":"active"},"connection_policy":{"anyOf":[{"type":"string","enum":["off","request","auto"]},{"type":"null"}],"title":"Connection Policy"},"tts_voice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tts Voice"},"tts_voice_backup":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tts Voice Backup"},"browser_automation_enabled":{"type":"boolean","title":"Browser Automation Enabled","default":false},"web_browse_enabled":{"type":"boolean","title":"Web Browse Enabled","default":false},"communication_profile":{"$ref":"#/components/schemas/CommunicationProfile"},"reply_workflow":{"anyOf":[{"$ref":"#/components/schemas/ReplyWorkflow"},{"type":"null"}]},"unreviewed_information_scope":{"$ref":"#/components/schemas/UnreviewedInformationScope","default":"limited"},"learning_scope":{"$ref":"#/components/schemas/LearningScope","default":"discretion"},"self_improvement_policy":{"$ref":"#/components/schemas/SelfImprovementPolicy","default":"review"},"home_library_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Home Library Id"},"verification_artifact":{"type":"boolean","title":"Verification Artifact","default":false}},"additionalProperties":false,"type":"object","required":["display_name"],"title":"AgentCreateBody"},"AgentDiscoverabilityRequest":{"properties":{"discoverable_by_username":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Discoverable By Username"},"discoverable_by_email":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Discoverable By Email"},"auto_accept":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Accept"},"connection_policy":{"anyOf":[{"type":"string","enum":["off","request","auto"]},{"type":"null"}],"title":"Connection Policy"}},"type":"object","title":"AgentDiscoverabilityRequest"},"AgentDocumentBody":{"properties":{"document":{"additionalProperties":true,"type":"object","title":"Document"}},"type":"object","required":["document"],"title":"AgentDocumentBody"},"AgentFileListResponse":{"properties":{"files":{"items":{"$ref":"#/components/schemas/AgentFileMetadata"},"type":"array","title":"Files"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["files"],"title":"AgentFileListResponse","description":"A keyset-paginated page of vaulted files (TOS-3280).\n\n``next_cursor`` is ``None`` exactly when no further files remain; pass it\nback as ``cursor`` to fetch the next page. A non-``None`` value IS the\ntruncation signal - there is no separate ``truncated`` flag to check."},"AgentFileMetadata":{"properties":{"content_hash":{"type":"string","title":"Content Hash"},"file_name":{"type":"string","title":"File Name"},"mime_type":{"type":"string","title":"Mime Type"},"size_bytes":{"type":"integer","title":"Size Bytes"},"retention":{"type":"string","title":"Retention"},"source":{"additionalProperties":true,"type":"object","title":"Source"}},"type":"object","required":["content_hash","file_name","mime_type","size_bytes","retention","source"],"title":"AgentFileMetadata","description":"One vaulted file's metadata. Never carries the file's raw bytes."},"AgentFromDefinitionBody":{"properties":{"source_agent_id":{"type":"string","format":"uuid","title":"Source Agent Id"},"name":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Name"},"wallet_source":{"anyOf":[{"type":"string","enum":["creator","own"]},{"type":"null"}],"title":"Wallet Source"}},"additionalProperties":false,"type":"object","required":["source_agent_id"],"title":"AgentFromDefinitionBody","description":"Only these three fields. Nothing else is accepted, so a package, a zip or\na Mind cannot be sent through this route."},"AgentFromDefinitionResponse":{"properties":{"agent":{"$ref":"#/components/schemas/AgentResponse"},"skill_references":{"items":{"type":"string"},"type":"array","title":"Skill References"},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings"}},"type":"object","required":["agent","skill_references","warnings"],"title":"AgentFromDefinitionResponse"},"AgentGlobalOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"display_name":{"type":"string","title":"Display Name"},"is_global":{"type":"boolean","title":"Is Global"}},"type":"object","required":["id","display_name","is_global"],"title":"AgentGlobalOut"},"AgentHomeFolderResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"is_private":{"type":"boolean","title":"Is Private"}},"type":"object","required":["id","name","is_private"],"title":"AgentHomeFolderResponse","description":"The folder an agent lives in, named for the viewer who may see it (TOS-7857)."},"AgentMarginOut":{"properties":{"agent_identity_id":{"type":"string","format":"uuid","title":"Agent Identity Id"},"window_days":{"type":"integer","title":"Window Days"},"window_start":{"type":"string","format":"date-time","title":"Window Start"},"charge_count":{"type":"integer","title":"Charge Count"},"revenue_usd":{"type":"string","title":"Revenue Usd"},"creator_earnings_usd":{"type":"string","title":"Creator Earnings Usd"},"platform_share_usd":{"type":"string","title":"Platform Share Usd"},"rated_ai_cost_usd":{"type":"string","title":"Rated Ai Cost Usd"},"funded_ai_cost_usd":{"type":"string","title":"Funded Ai Cost Usd"},"net_usd":{"type":"string","title":"Net Usd"},"creator_share_pct":{"type":"string","title":"Creator Share Pct"},"breakeven_multiplier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Breakeven Multiplier"}},"type":"object","required":["agent_identity_id","window_days","window_start","charge_count","revenue_usd","creator_earnings_usd","platform_share_usd","rated_ai_cost_usd","funded_ai_cost_usd","net_usd","creator_share_pct","breakeven_multiplier"],"title":"AgentMarginOut","description":"The owner's actual revenue, cost and net for a monetized agent.\n\nMoney is serialized as STRINGS, matching the buyer-facing offer payload\n(``AgentOffer.as_dict``) rather than the plan rows above: these are computed\nsums at the NUMERIC(12, 6) money quantum, and letting JSON turn them into\nfloats is how a cents-level rounding error gets introduced between the\nledger and the screen showing it."},"AgentOfferOut":{"properties":{"agent_identity_id":{"type":"string","format":"uuid","title":"Agent Identity Id"},"agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"},"plan_id":{"type":"string","format":"uuid","title":"Plan Id"},"plan_version":{"type":"integer","title":"Plan Version"},"model":{"type":"string","title":"Model"},"per_use_price_usd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Per Use Price Usd"},"sub_price_usd_month":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sub Price Usd Month"},"included_units_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Included Units Month"},"overage_policy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Overage Policy"},"overage_price_usd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Overage Price Usd"},"margin_multiplier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Margin Multiplier"},"min_monthly_usd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Min Monthly Usd"},"currency":{"type":"string","title":"Currency"},"trial_kind":{"type":"string","title":"Trial Kind"},"trial_runs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Trial Runs"},"trial_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Trial Days"},"trial_available":{"type":"boolean","title":"Trial Available"},"throttle_per_min":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Throttle Per Min"},"throttle_per_day":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Throttle Per Day"},"purchase_url":{"type":"string","title":"Purchase Url"},"reason":{"type":"string","title":"Reason"}},"type":"object","required":["agent_identity_id","agent_name","plan_id","plan_version","model","per_use_price_usd","sub_price_usd_month","included_units_month","overage_policy","overage_price_usd","margin_multiplier","min_monthly_usd","currency","trial_kind","trial_runs","trial_days","trial_available","throttle_per_min","throttle_per_day","purchase_url","reason"],"title":"AgentOfferOut","description":"Mirrors ``AgentOffer.as_dict()`` field for field.\n\nMoney fields are strings, not ``Decimal``: ``as_dict`` already rendered them\nthrough the shared ``_money`` helper (strip NUMERIC padding, never quantize\naway a real non-zero digit), and re-parsing them here would reintroduce the\npadding this response is meant to be free of. Keeping the same shape means\nthe offer a buyer reads from this endpoint is byte-identical to the offer\nembedded in a 402 refusal."},"AgentOwnerResponse":{"properties":{"owner_identity_id":{"type":"string","format":"uuid","title":"Owner Identity Id"},"granted_at":{"type":"string","title":"Granted At"},"granted_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Granted By"},"revoked_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Revoked At"},"revoked_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Revoked By"},"source":{"type":"string","enum":["folder_admin","controller"],"title":"Source","default":"controller"}},"type":"object","required":["owner_identity_id","granted_at","granted_by","revoked_at","revoked_by"],"title":"AgentOwnerResponse"},"AgentPackageImportBody":{"properties":{"package":{"additionalProperties":true,"type":"object","title":"Package"}},"type":"object","required":["package"],"title":"AgentPackageImportBody"},"AgentProviderKeyResponse":{"properties":{"provider":{"type":"string","title":"Provider"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","title":"Created At"},"provider_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Scope"},"scope_required":{"type":"boolean","title":"Scope Required","default":false},"scope_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope Label"},"batch_eligible":{"type":"boolean","title":"Batch Eligible","default":true}},"type":"object","required":["provider","is_active","created_at"],"title":"AgentProviderKeyResponse"},"AgentProxyResponse":{"properties":{"proxy_id":{"type":"string","format":"uuid","title":"Proxy Id"},"org_label":{"type":"string","title":"Org Label"}},"type":"object","required":["proxy_id","org_label"],"title":"AgentProxyResponse"},"AgentRef":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"}},"additionalProperties":false,"type":"object","required":["id","name"],"title":"AgentRef"},"AgentResponse":{"properties":{"can_receive_chat":{"type":"boolean","title":"Can Receive Chat","default":true},"funding_selection":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Funding Selection"},"id":{"type":"string","format":"uuid","title":"Id"},"display_name":{"type":"string","title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"tagline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tagline"},"visual_brand_guidelines":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visual Brand Guidelines"},"visual_brand_logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visual Brand Logo Url"},"system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt"},"operating_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operating Instructions"},"charter_creation":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Charter Creation"},"can_edit_charter":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Can Edit Charter","description":"Owner-only advisory for this detail request's charter edit authority. Missing/null is unknown; writes still recheck authority and charter version."},"config":{"additionalProperties":true,"type":"object","title":"Config"},"status":{"type":"string","enum":["active","archived"],"title":"Status"},"connection_policy":{"type":"string","enum":["off","request","auto"],"title":"Connection Policy"},"owners":{"items":{"$ref":"#/components/schemas/AgentOwnerResponse"},"type":"array","title":"Owners"},"owned_by_caller":{"type":"boolean","title":"Owned By Caller","default":false},"relationship":{"type":"string","enum":["myself","built","hired","connected","public"],"title":"Relationship","default":"public"},"listing":{"anyOf":[{"$ref":"#/components/schemas/ListingConsentResponse"},{"type":"null"}]},"registration_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Registration Ids"},"tts_voice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tts Voice"},"tts_voice_backup":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tts Voice Backup"},"browser_automation_enabled":{"type":"boolean","title":"Browser Automation Enabled","default":false},"web_browse_enabled":{"type":"boolean","title":"Web Browse Enabled","default":false},"communication_profile":{"anyOf":[{"$ref":"#/components/schemas/CommunicationProfile"},{"type":"null"}]},"reply_workflow":{"anyOf":[{"$ref":"#/components/schemas/ReplyWorkflow"},{"type":"null"}]},"unreviewed_information_scope":{"anyOf":[{"$ref":"#/components/schemas/UnreviewedInformationScope"},{"type":"null"}]},"learning_scope":{"anyOf":[{"$ref":"#/components/schemas/LearningScope"},{"type":"null"}]},"self_improvement_policy":{"anyOf":[{"$ref":"#/components/schemas/SelfImprovementPolicy"},{"type":"null"}]},"default_mode":{"type":"string","enum":["human","agent_augmented","agent"],"title":"Default Mode","default":"agent_augmented"},"self_improvement_mode":{"type":"string","enum":["manual","augmented","autonomous"],"title":"Self Improvement Mode","default":"augmented"},"is_global":{"type":"boolean","title":"Is Global","default":false},"kind":{"type":"string","enum":["person","agent"],"title":"Kind","default":"agent"},"agent_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Key"},"deleted_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deleted At"},"archetype":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Archetype"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"classification_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Classification Source"},"classified_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Classified At"},"model_bundle":{"anyOf":[{"$ref":"#/components/schemas/IdentityModelBundleResponse"},{"type":"null"}]},"home_library_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Home Library Id"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"home_domain_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Home Domain Label"},"ownership_source":{"type":"string","enum":["home_folder","controllers"],"title":"Ownership Source","default":"controllers"},"home_folder":{"anyOf":[{"$ref":"#/components/schemas/AgentHomeFolderResponse"},{"type":"null"}]},"disclose_capabilities":{"type":"boolean","title":"Disclose Capabilities","default":true},"disclose_reputation":{"type":"boolean","title":"Disclose Reputation","default":true},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings"}},"type":"object","required":["id","display_name","avatar_url","description","system_prompt","config","status","connection_policy","owners"],"title":"AgentResponse"},"AgentRunGroupResponse":{"properties":{"group_key":{"type":"string","title":"Group Key"},"supervising_agent_id":{"type":"string","format":"uuid","title":"Supervising Agent Id"},"supervising_agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Supervising Agent Name"},"runtime_environment_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Runtime Environment Ref"},"open_count":{"type":"integer","title":"Open Count"},"total_count":{"type":"integer","title":"Total Count"},"runs":{"items":{"$ref":"#/components/schemas/AgentRunSummaryResponse"},"type":"array","title":"Runs"}},"type":"object","required":["group_key","supervising_agent_id","supervising_agent_name","runtime_environment_ref","open_count","total_count","runs"],"title":"AgentRunGroupResponse"},"AgentRunSummaryResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"display_title":{"type":"string","title":"Display Title"},"origin":{"type":"string","title":"Origin"},"supervising_agent_id":{"type":"string","format":"uuid","title":"Supervising Agent Id"},"supervising_agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Supervising Agent Name"},"runtime_kind":{"type":"string","title":"Runtime Kind"},"runtime_environment_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Runtime Environment Ref"},"status":{"type":"string","title":"Status"},"supervision_status":{"type":"string","title":"Supervision Status"},"state":{"type":"string","enum":["active","waiting","failed","completed","all"],"title":"State"},"activity_state":{"type":"string","enum":["active","recent"],"title":"Activity State"},"last_activity_at":{"type":"string","title":"Last Activity At"},"artifact_count":{"type":"integer","title":"Artifact Count"},"transcript_chat_id":{"type":"string","format":"uuid","title":"Transcript Chat Id"},"transcript_chat_title":{"type":"string","title":"Transcript Chat Title"},"created_at":{"type":"string","title":"Created At"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completed At"},"progress":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Progress"},"outcome":{"anyOf":[{"type":"string","enum":["stopped_unfinished","continued"]},{"type":"null"}],"title":"Outcome"}},"type":"object","required":["id","display_title","origin","supervising_agent_id","supervising_agent_name","runtime_kind","runtime_environment_ref","status","supervision_status","state","activity_state","last_activity_at","artifact_count","transcript_chat_id","transcript_chat_title","created_at","completed_at"],"title":"AgentRunSummaryResponse"},"AgentRunsResponse":{"properties":{"groups":{"items":{"$ref":"#/components/schemas/AgentRunGroupResponse"},"type":"array","title":"Groups"},"total_count":{"type":"integer","title":"Total Count"},"fanouts":{"items":{"$ref":"#/components/schemas/FanoutSummaryResponse"},"type":"array","title":"Fanouts"}},"type":"object","required":["groups","total_count","fanouts"],"title":"AgentRunsResponse"},"AgentRuntimeBindingListResponse":{"properties":{"bindings":{"items":{"$ref":"#/components/schemas/AgentRuntimeBindingResponse"},"type":"array","title":"Bindings"}},"type":"object","required":["bindings"],"title":"AgentRuntimeBindingListResponse"},"AgentRuntimeBindingResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"owner_identity_id":{"type":"string","format":"uuid","title":"Owner Identity Id"},"agent_identity_id":{"type":"string","format":"uuid","title":"Agent Identity Id"},"runtime_kind":{"type":"string","title":"Runtime Kind"},"environment_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Environment Id"},"status":{"type":"string","title":"Status"},"is_default":{"type":"boolean","title":"Is Default"},"model_policy":{"additionalProperties":true,"type":"object","title":"Model Policy"},"policy_overrides":{"additionalProperties":true,"type":"object","title":"Policy Overrides"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","owner_identity_id","agent_identity_id","runtime_kind","status","is_default","model_policy","policy_overrides","created_at","updated_at"],"title":"AgentRuntimeBindingResponse"},"AgentScoreView":{"properties":{"agent_identity_id":{"type":"string","format":"uuid","title":"Agent Identity Id"},"display_name":{"type":"string","title":"Display Name"},"windows":{"additionalProperties":{"$ref":"#/components/schemas/ScoreWindowView"},"type":"object","title":"Windows"}},"additionalProperties":false,"type":"object","required":["agent_identity_id","display_name","windows"],"title":"AgentScoreView"},"AgentTaskRunResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"trigger_id":{"type":"string","format":"uuid","title":"Trigger Id"},"owner_identity_id":{"type":"string","format":"uuid","title":"Owner Identity Id"},"agent_identity_id":{"type":"string","format":"uuid","title":"Agent Identity Id"},"target_chat_id":{"type":"string","format":"uuid","title":"Target Chat Id"},"execution_mode":{"type":"string","title":"Execution Mode"},"status":{"type":"string","title":"Status"},"trigger_reason":{"type":"string","title":"Trigger Reason"},"instruction":{"type":"string","title":"Instruction"},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completed At"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"skipped_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Skipped Reason"},"user_message_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"User Message Id"},"assistant_message_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Assistant Message Id"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","trigger_id","owner_identity_id","agent_identity_id","target_chat_id","execution_mode","status","trigger_reason","instruction","started_at","completed_at","duration_ms","result","error_message","skipped_reason","user_message_id","assistant_message_id","created_at"],"title":"AgentTaskRunResponse"},"AgentTaskRunsResponse":{"properties":{"runs":{"items":{"$ref":"#/components/schemas/AgentTaskRunResponse"},"type":"array","title":"Runs"}},"type":"object","required":["runs"],"title":"AgentTaskRunsResponse"},"AgentTriggerResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"owner_identity_id":{"type":"string","format":"uuid","title":"Owner Identity Id"},"agent_identity_id":{"type":"string","format":"uuid","title":"Agent Identity Id"},"target_chat_id":{"type":"string","format":"uuid","title":"Target Chat Id"},"trigger_kind":{"type":"string","title":"Trigger Kind"},"status":{"type":"string","title":"Status"},"execution_mode":{"type":"string","title":"Execution Mode"},"instruction":{"type":"string","title":"Instruction"},"context_mode":{"anyOf":[{"type":"string","enum":["adaptive","literal"]},{"type":"null"}],"title":"Context Mode"},"timezone":{"type":"string","title":"Timezone"},"run_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Run At"},"interval_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Interval Minutes"},"cron_expr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cron Expr"},"next_run_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Run At"},"last_run_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Run At"},"last_run_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Run Status"},"consecutive_failure_count":{"type":"integer","title":"Consecutive Failure Count"},"auto_paused_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auto Paused Reason"},"action_type":{"type":"string","title":"Action Type"},"email_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email To"},"email_subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email Subject"},"webhook_last_delivery_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Last Delivery At"},"webhook_signing_required":{"type":"boolean","title":"Webhook Signing Required"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"}},"type":"object","required":["id","owner_identity_id","agent_identity_id","target_chat_id","trigger_kind","status","execution_mode","instruction","context_mode","timezone","run_at","interval_minutes","cron_expr","next_run_at","last_run_at","last_run_status","consecutive_failure_count","auto_paused_reason","action_type","email_to","email_subject","webhook_last_delivery_at","webhook_signing_required","metadata","created_at","updated_at"],"title":"AgentTriggerResponse"},"AgentTriggersResponse":{"properties":{"triggers":{"items":{"$ref":"#/components/schemas/AgentTriggerResponse"},"type":"array","title":"Triggers"}},"type":"object","required":["triggers"],"title":"AgentTriggersResponse"},"AgentUpdateBody":{"properties":{"proxy_config":{"anyOf":[{"$ref":"#/components/schemas/ProxyConfiguration"},{"type":"null"}]},"charter":{"anyOf":[{"$ref":"#/components/schemas/CharterDoc"},{"type":"null"}]},"expected_charter_version":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Expected Charter Version"},"expected_inherited_boundaries_fingerprint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Inherited Boundaries Fingerprint"},"charter_inherited_boundaries_reviewed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Charter Inherited Boundaries Reviewed"},"charter_activate":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Charter Activate"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Description"},"tagline":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Tagline"},"visual_brand_guidelines":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Visual Brand Guidelines"},"visual_brand_logo_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Visual Brand Logo Url"},"system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt","description":"Mind Constitution: who the identity is. Distilled into identity, role, expertise, and trait beliefs in its Mind; instructions written here do NOT reach the model. Put rules in operating_instructions."},"operating_instructions":{"anyOf":[{"type":"string","maxLength":64000},{"type":"null"}],"title":"Operating Instructions","description":"Operating Instructions: rules injected verbatim into every turn this identity answers. Empty string clears them."},"operating_instructions_patch":{"anyOf":[{"$ref":"#/components/schemas/OperatingInstructionsPatchBody"},{"type":"null"}]},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config"},"status":{"anyOf":[{"type":"string","enum":["active","archived"]},{"type":"null"}],"title":"Status"},"connection_policy":{"anyOf":[{"type":"string","enum":["off","request","auto"]},{"type":"null"}],"title":"Connection Policy"},"tts_voice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tts Voice"},"tts_voice_backup":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tts Voice Backup"},"browser_automation_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Browser Automation Enabled"},"web_browse_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Web Browse Enabled"},"communication_profile":{"anyOf":[{"$ref":"#/components/schemas/CommunicationProfile"},{"type":"null"}]},"reply_workflow":{"anyOf":[{"$ref":"#/components/schemas/ReplyWorkflow"},{"type":"null"}]},"unreviewed_information_scope":{"anyOf":[{"$ref":"#/components/schemas/UnreviewedInformationScope"},{"type":"null"}]},"learning_scope":{"anyOf":[{"$ref":"#/components/schemas/LearningScope"},{"type":"null"}]},"self_improvement_policy":{"anyOf":[{"$ref":"#/components/schemas/SelfImprovementPolicy"},{"type":"null"}]},"default_mode":{"anyOf":[{"type":"string","enum":["human","agent_augmented","agent"]},{"type":"null"}],"title":"Default Mode"},"self_improvement_mode":{"anyOf":[{"type":"string","enum":["manual","augmented","autonomous"]},{"type":"null"}],"title":"Self Improvement Mode"},"self_improvement_auto_apply_fields":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Self Improvement Auto Apply Fields"},"self_improvement_max_tier":{"anyOf":[{"type":"integer","maximum":2.0,"minimum":0.0},{"type":"null"}],"title":"Self Improvement Max Tier"},"doctrine_library_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Doctrine Library Ids"},"archetype":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Archetype"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"listing":{"anyOf":[{"$ref":"#/components/schemas/ListingConsentUpdate"},{"type":"null"}]},"disclose_capabilities":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disclose Capabilities"},"disclose_reputation":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disclose Reputation"},"home_library_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Home Library Id"}},"additionalProperties":false,"type":"object","title":"AgentUpdateBody"},"AgentVersionListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AgentVersionResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"AgentVersionListResponse"},"AgentVersionResponse":{"properties":{"id":{"type":"string","title":"Id"},"version_number":{"type":"integer","title":"Version Number"},"config":{"additionalProperties":true,"type":"object","title":"Config"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"tagline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tagline"},"template_id":{"type":"string","title":"Template Id"},"template_version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Version Id"},"custom_overrides":{"additionalProperties":true,"type":"object","title":"Custom Overrides"},"rule_overrides":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Rule Overrides"},"system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt"},"default_mode":{"anyOf":[{"type":"string","enum":["human","agent_augmented","agent"]},{"type":"null"}],"title":"Default Mode"},"change_type":{"type":"string","title":"Change Type"},"change_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Change Summary"},"changed_by":{"type":"string","title":"Changed By"},"changed_by_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Changed By Name"},"changed_at":{"type":"string","title":"Changed At"}},"type":"object","required":["id","version_number","config","description","template_id","custom_overrides","system_prompt","change_type","change_summary","changed_by","changed_at"],"title":"AgentVersionResponse"},"AgentView":{"properties":{"id":{"type":"string","title":"Id"},"display_name":{"type":"string","title":"Display Name"}},"type":"object","required":["id","display_name"],"title":"AgentView"},"AggregateState":{"type":"string","enum":["setup_needed","verifying","connected","partially_connected","needs_attention","disabled","error"],"title":"AggregateState","description":"The single row-level state, computed from a definition's facet states."},"AiConfigGroupResponse":{"properties":{"group":{"type":"string","title":"Group"},"rows":{"items":{"$ref":"#/components/schemas/AiConfigRowResponse"},"type":"array","title":"Rows"}},"type":"object","required":["group","rows"],"title":"AiConfigGroupResponse"},"AiConfigPreviewBody":{"properties":{"template_id":{"type":"string","format":"uuid","title":"Template Id"},"template_version_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Version Id"},"drop_overrides":{"type":"boolean","title":"Drop Overrides","default":false}},"type":"object","required":["template_id"],"title":"AiConfigPreviewBody","description":"A candidate template selection to resolve WITHOUT saving.\n\n``drop_overrides`` is the \"reset\" branch of the keep-or-reset prompt: the\nsame candidate template resolved as if every stored override were removed.\nThe two branches are what the prompt compares, so both have to be\nrenderable before anything is written."},"AiConfigRecentActivityResponse":{"properties":{"at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"At"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"model_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id"},"params_summary":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Params Summary"}},"type":"object","required":["at","provider","model_id","params_summary"],"title":"AiConfigRecentActivityResponse","description":"TOS-1281 Task 6: the trust-loop read for one operation.\n\nAll four fields are `None` together when the op_key has no discoverable\n`model_runs.capability` mapping, or when it does but no run has landed\nyet - the UI hides the \"recent activity\" line in either case."},"AiConfigResponse":{"properties":{"bundle":{"$ref":"#/components/schemas/IdentityModelBundleResponse"},"groups":{"items":{"$ref":"#/components/schemas/AiConfigGroupResponse"},"type":"array","title":"Groups"},"override_count":{"type":"integer","title":"Override Count"},"overridden_op_keys":{"items":{"type":"string"},"type":"array","title":"Overridden Op Keys"},"rules":{"items":{"$ref":"#/components/schemas/RuleSummaryResponse"},"type":"array","title":"Rules"},"rules_source":{"type":"string","enum":["identity","template"],"title":"Rules Source"}},"type":"object","required":["bundle","groups","override_count","overridden_op_keys","rules","rules_source"],"title":"AiConfigResponse"},"AiConfigRowResponse":{"properties":{"op_key":{"type":"string","title":"Op Key"},"label":{"type":"string","title":"Label"},"description":{"type":"string","title":"Description"},"group":{"type":"string","title":"Group"},"locked":{"type":"boolean","title":"Locked"},"source":{"type":"string","enum":["override","bundle","platform"],"title":"Source"},"bundle_fill":{"type":"boolean","title":"Bundle Fill"},"provider":{"type":"string","title":"Provider"},"model_id":{"type":"string","title":"Model Id"},"model_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Display Name"},"params":{"additionalProperties":true,"type":"object","title":"Params"},"bundle_default":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Bundle Default"},"funding":{"type":"string","enum":["byok","credits","platform"],"title":"Funding"},"required_features":{"items":{"type":"string"},"type":"array","title":"Required Features"},"editable_params":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Editable Params"},"allowed_models":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Allowed Models"},"locked_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Locked Reason"},"vision_capable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Vision Capable"}},"type":"object","required":["op_key","label","description","group","locked","source","bundle_fill","provider","model_id","model_display_name","params","bundle_default","funding","required_features","editable_params","allowed_models","locked_reason"],"title":"AiConfigRowResponse","description":"One resolved operation row of the TOS-1281 Phase B \"one sheet\"."},"AiToolOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"kind":{"type":"string","enum":["capture","catalog"],"title":"Kind"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"install_modal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Install Modal"},"brand_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Color"},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"connected":{"type":"boolean","title":"Connected"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"item":{"anyOf":[{"$ref":"#/components/schemas/CatalogItemOut"},{"type":"null"}]},"featured":{"type":"boolean","title":"Featured","default":false},"account_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Label"},"connect":{"anyOf":[{"$ref":"#/components/schemas/ConnectCardOut"},{"type":"null"}]}},"type":"object","required":["id","name","description","kind","connected"],"title":"AiToolOut","description":"One tile in the AI-tools row of step 2.\n\n``kind`` says which setup path step 3 uses: ``capture`` opens the capture\ninstall modal for ``source``; ``catalog`` renders the catalog item's\nserver-driven setup. ``client_id`` is the connected-clients badge key."},"AmbientSyncAddedToChat":{"properties":{"chat_id":{"type":"string","title":"Chat Id"},"actor_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Id"},"actor_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Display Name"}},"type":"object","required":["chat_id"],"title":"AmbientSyncAddedToChat","description":"The caller was added to a chat since the cursor."},"AmbientSyncInboundMessage":{"properties":{"message_id":{"type":"string","title":"Message Id"},"chat_id":{"type":"string","title":"Chat Id"},"sender_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender Id"},"sender_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender Display Name"},"role":{"type":"string","title":"Role"},"preview":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview"},"preview_markdown":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Markdown"}},"type":"object","required":["message_id","chat_id","role"],"title":"AmbientSyncInboundMessage","description":"The minimum a toast needs, and nothing more.\n\nThis is the one place ambient sync returns content rather than a count, and\nit earns the exception: a \"new message\" toast has to name a sender and show\na preview, so a counts-only response would force a second round trip per\nchanged chat and give back the consolidation this endpoint exists for.\nBounded by ``_AMBIENT_SYNC_MAX_INBOUND`` and truncated server-side."},"AmbientSyncResponse":{"properties":{"cursor":{"type":"string","title":"Cursor"},"since_watermark":{"type":"string","format":"date-time","title":"Since Watermark"},"events":{"items":{"$ref":"#/components/schemas/RealtimeEventOut"},"type":"array","title":"Events"},"events_truncated":{"type":"boolean","title":"Events Truncated","default":false},"total_unread":{"type":"integer","title":"Total Unread"},"self_unread":{"type":"integer","title":"Self Unread"},"notification_open_count":{"type":"integer","title":"Notification Open Count"},"notification_latest_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Notification Latest At"},"agent_pending_total":{"type":"integer","title":"Agent Pending Total"},"agent_pending_by_agent":{"additionalProperties":{"type":"integer"},"type":"object","title":"Agent Pending By Agent"},"skills_pending_approval_count":{"type":"integer","title":"Skills Pending Approval Count","default":0},"mind_attention_total":{"type":"integer","title":"Mind Attention Total","default":0},"connection_requests_pending_count":{"type":"integer","title":"Connection Requests Pending Count","default":0},"connection_accepted_unseen_count":{"type":"integer","title":"Connection Accepted Unseen Count","default":0},"admin_pending_total":{"type":"integer","title":"Admin Pending Total","default":0},"changed_chat_ids":{"items":{"type":"string"},"type":"array","title":"Changed Chat Ids"},"inbound":{"items":{"$ref":"#/components/schemas/AmbientSyncInboundMessage"},"type":"array","title":"Inbound"},"added_to_chats":{"items":{"$ref":"#/components/schemas/AmbientSyncAddedToChat"},"type":"array","title":"Added To Chats"}},"type":"object","required":["cursor","since_watermark","total_unread","self_unread","notification_open_count","agent_pending_total"],"title":"AmbientSyncResponse","description":"One round trip covering every ambient badge surface (TOS-3494).\n\nDeliberately returns COUNTS and CHANGED IDS, not hydrated payloads. Each\nconsumer already owns a fetch for its own detail; what it lacked was a cheap\nway to learn whether that fetch is worth making. Returning the detail here\ninstead would recreate the fully-hydrated chat-list read this endpoint\nexists to avoid, and would couple four independent surfaces into one\nresponse shape that every one of them would have to agree on forever."},"AnalysisDetail":{"properties":{"id":{"type":"string","title":"Id"},"source_id":{"type":"string","title":"Source Id"},"vendor":{"type":"string","title":"Vendor"},"source_name":{"type":"string","title":"Source Name"},"source_url":{"type":"string","title":"Source Url"},"title":{"type":"string","title":"Title"},"recommendation_category":{"type":"string","title":"Recommendation Category"},"confidence":{"type":"string","title":"Confidence"},"urgency":{"type":"string","title":"Urgency"},"review_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Status"},"priority_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Priority Score"},"noise_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Noise Tier"},"is_duplicate":{"type":"boolean","title":"Is Duplicate"},"proposal_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proposal Status"},"created_at":{"type":"string","title":"Created At"},"what_changed":{"type":"string","title":"What Changed"},"why_it_matters":{"type":"string","title":"Why It Matters"},"themes":{"items":{"type":"string"},"type":"array","title":"Themes"},"swot":{"additionalProperties":true,"type":"object","title":"Swot"},"recommendation":{"type":"string","title":"Recommendation"},"evidence_urls":{"items":{"type":"string"},"type":"array","title":"Evidence Urls"},"digest_markdown":{"type":"string","title":"Digest Markdown"},"ticket_proposal":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Ticket Proposal"},"reviewed_by_identity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reviewed By Identity Id"},"reviewed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reviewed At"},"proposal_ticket_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proposal Ticket Ref"},"proposal_decided_by_identity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proposal Decided By Identity Id"},"proposal_decided_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proposal Decided At"}},"type":"object","required":["id","source_id","vendor","source_name","source_url","title","recommendation_category","confidence","urgency","review_status","priority_score","noise_tier","is_duplicate","proposal_status","created_at","what_changed","why_it_matters","themes","swot","recommendation","evidence_urls","digest_markdown","ticket_proposal","reviewed_by_identity_id","reviewed_at","proposal_ticket_ref","proposal_decided_by_identity_id","proposal_decided_at"],"title":"AnalysisDetail"},"AnalysisPage":{"properties":{"analyses":{"items":{"$ref":"#/components/schemas/AnalysisSummary"},"type":"array","title":"Analyses"},"total":{"type":"integer","title":"Total"},"offset":{"type":"integer","title":"Offset"},"limit":{"type":"integer","title":"Limit"}},"type":"object","required":["analyses","total","offset","limit"],"title":"AnalysisPage"},"AnalysisSummary":{"properties":{"id":{"type":"string","title":"Id"},"source_id":{"type":"string","title":"Source Id"},"vendor":{"type":"string","title":"Vendor"},"source_name":{"type":"string","title":"Source Name"},"source_url":{"type":"string","title":"Source Url"},"title":{"type":"string","title":"Title"},"recommendation_category":{"type":"string","title":"Recommendation Category"},"confidence":{"type":"string","title":"Confidence"},"urgency":{"type":"string","title":"Urgency"},"review_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Status"},"priority_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Priority Score"},"noise_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Noise Tier"},"is_duplicate":{"type":"boolean","title":"Is Duplicate"},"proposal_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proposal Status"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","source_id","vendor","source_name","source_url","title","recommendation_category","confidence","urgency","review_status","priority_score","noise_tier","is_duplicate","proposal_status","created_at"],"title":"AnalysisSummary"},"AppPageContext":{"properties":{"path":{"type":"string","maxLength":300,"title":"Path"},"title":{"type":"string","maxLength":200,"title":"Title","default":""},"text":{"type":"string","maxLength":6000,"title":"Text","default":""},"selection":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Selection"}},"additionalProperties":false,"type":"object","required":["path"],"title":"AppPageContext"},"AppearanceDefaultUpdate":{"properties":{"default_mode":{"$ref":"#/components/schemas/AppearanceMode"}},"type":"object","required":["default_mode"],"title":"AppearanceDefaultUpdate"},"AppearanceMode":{"type":"string","enum":["system","dark","light"]},"ApproveCleanupBatchIn":{"properties":{"plan_hash":{"type":"string","maxLength":128,"minLength":1,"title":"Plan Hash"},"exclude_positions":{"items":{"type":"integer"},"type":"array","maxItems":500,"title":"Exclude Positions"},"acknowledge_positions":{"items":{"type":"integer"},"type":"array","maxItems":500,"title":"Acknowledge Positions"}},"additionalProperties":false,"type":"object","required":["plan_hash"],"title":"ApproveCleanupBatchIn"},"ApproveRequest":{"properties":{"note":{"type":"string","title":"Note","default":""}},"type":"object","title":"ApproveRequest"},"AreaChartArtifact":{"properties":{"chart_type":{"type":"string","const":"area","title":"Chart Type"},"payload":{"$ref":"#/components/schemas/AreaChartPayloadResponse"}},"type":"object","required":["chart_type","payload"],"title":"AreaChartArtifact"},"AreaChartPayloadResponse":{"properties":{"title":{"type":"string","title":"Title"},"x_label":{"type":"string","title":"X Label"},"y_label":{"type":"string","title":"Y Label"},"series":{"items":{"$ref":"#/components/schemas/_LineSeries"},"type":"array","title":"Series"},"stacked":{"type":"boolean","title":"Stacked","default":false},"reference_lines":{"items":{"$ref":"#/components/schemas/_ReferenceLine"},"type":"array","title":"Reference Lines"},"y_scale":{"type":"string","title":"Y Scale","default":"linear"},"value_format":{"anyOf":[{"$ref":"#/components/schemas/_ValueFormat"},{"type":"null"}]}},"type":"object","required":["title","x_label","y_label","series"],"title":"AreaChartPayloadResponse"},"AssembleConfirmRequest":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"operations":{"additionalProperties":true,"type":"object","title":"Operations"},"rules":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Rules","default":[]}},"type":"object","required":["name","operations"],"title":"AssembleConfirmRequest"},"AssembleDraftResponse":{"properties":{"base_template_id":{"type":"string","format":"uuid","title":"Base Template Id"},"base_template_name":{"type":"string","title":"Base Template Name"},"operations":{"additionalProperties":true,"type":"object","title":"Operations"},"rules":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Rules"},"summary":{"type":"string","title":"Summary"},"changed_tiers":{"additionalProperties":{"type":"string"},"type":"object","title":"Changed Tiers"}},"type":"object","required":["base_template_id","base_template_name","operations","rules","summary","changed_tiers"],"title":"AssembleDraftResponse"},"AssembleRequest":{"properties":{"intent":{"type":"string","title":"Intent"}},"type":"object","required":["intent"],"title":"AssembleRequest","description":"No ``identity_id`` field (TOS-1912 Unit B gate fix): the resolving/paying\nidentity for the ``mindset_assemble`` AI pass is always the CALLER\n(``identity.id``), never caller-supplied. Previously this took a caller-\nsupplied ``identity_id`` and passed it straight to\n``assemble_mindset_draft`` as the identity that resolves and PAYS for the\ncall - any authenticated identity could name a victim identity_id and, under\nagent_required/agent_first/keyless-caller_first credential policy, spend the\nvictim's BYOK key running an arbitrary 800-char prompt. The UI only ever\nsent the caller's own id, so removing the field changes no legitimate\nbehavior."},"AttachSkillToAgentBody":{"properties":{"agent_id":{"type":"string","format":"uuid","title":"Agent Id"},"trust_mode":{"type":"string","enum":["auto_trust","review"],"title":"Trust Mode","default":"review"}},"type":"object","required":["agent_id"],"title":"AttachSkillToAgentBody"},"AttachSkillToAgentOut":{"properties":{"skill_id":{"type":"string","format":"uuid","title":"Skill Id"},"agent_id":{"type":"string","format":"uuid","title":"Agent Id"},"library_id":{"type":"string","format":"uuid","title":"Library Id"},"library_name":{"type":"string","title":"Library Name"},"trust_mode":{"type":"string","title":"Trust Mode"},"already_member":{"type":"boolean","title":"Already Member"},"skill_approved":{"type":"boolean","title":"Skill Approved"},"skill_live":{"type":"boolean","title":"Skill Live"}},"type":"object","required":["skill_id","agent_id","library_id","library_name","trust_mode","already_member","skill_approved","skill_live"],"title":"AttachSkillToAgentOut"},"AttachmentData":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"file_name":{"type":"string","title":"File Name"},"file_type":{"type":"string","title":"File Type"},"mime_type":{"type":"string","title":"Mime Type"},"file_size_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"File Size Bytes"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","file_name","file_type","mime_type","file_size_bytes","created_at"],"title":"AttachmentData"},"AttachmentInput":{"properties":{"name":{"type":"string","title":"Name"},"mime_type":{"type":"string","title":"Mime Type"},"data":{"type":"string","title":"Data"},"retention":{"anyOf":[{"type":"string","enum":["turn","chat","relationship"]},{"type":"null"}],"title":"Retention"},"capture_source":{"anyOf":[{"type":"string","enum":["glance_auto","embed_page","app_page","shared_tab","shared_window","shared_screen","camera"]},{"type":"null"}],"title":"Capture Source"}},"type":"object","required":["name","mime_type","data"],"title":"AttachmentInput"},"AttachmentResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"file_name":{"type":"string","title":"File Name"},"file_type":{"type":"string","title":"File Type"},"mime_type":{"type":"string","title":"Mime Type"},"file_size_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"File Size Bytes"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"generation_type":{"anyOf":[{"type":"string","enum":["document","image","code"]},{"type":"null"}],"title":"Generation Type"},"capture_source":{"anyOf":[{"type":"string","enum":["glance_auto","embed_page","app_page","shared_tab","shared_window","shared_screen","camera"]},{"type":"null"}],"title":"Capture Source"},"code":{"anyOf":[{"$ref":"#/components/schemas/CodeAttachmentInfo"},{"type":"null"}]}},"type":"object","required":["id","file_name","file_type","mime_type","file_size_bytes","created_at"],"title":"AttachmentResponse"},"AttachmentSourceTextResponse":{"properties":{"source_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Text"},"truncated":{"type":"boolean","title":"Truncated"}},"type":"object","required":["source_text","truncated"],"title":"AttachmentSourceTextResponse","description":"Markdown a generated document was rendered FROM (TOS-2470 stores it)."},"AttentionReasonOut":{"properties":{"code":{"type":"string","title":"Code"},"text":{"type":"string","title":"Text"}},"additionalProperties":false,"type":"object","required":["code","text"],"title":"AttentionReasonOut","description":"Typed item-level reason that explains why a connection needs attention."},"AudienceChangeOut":{"properties":{"changes":{"type":"boolean","title":"Changes"},"gains":{"items":{"$ref":"#/components/schemas/PrincipalOut"},"type":"array","title":"Gains"},"loses":{"items":{"$ref":"#/components/schemas/PrincipalOut"},"type":"array","title":"Loses"}},"type":"object","required":["changes","gains","loses"],"title":"AudienceChangeOut"},"AudioProviderStatusResponse":{"properties":{"provider":{"type":"string","title":"Provider","default":"elevenlabs"},"status":{"type":"string","title":"Status"},"key_source":{"type":"string","title":"Key Source"},"tts_enabled":{"type":"boolean","title":"Tts Enabled"},"stt_enabled":{"type":"boolean","title":"Stt Enabled"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"action_url":{"type":"string","title":"Action Url","default":"/wallet?provider=elevenlabs&status=audio"}},"type":"object","required":["status","key_source","tts_enabled","stt_enabled"],"title":"AudioProviderStatusResponse"},"AuthorityDoc":{"properties":{"decision_kind":{"type":"string","enum":["send_message","external_write","spend","contact_new_party","change_own_config","schedule_work","delegate"],"title":"Decision Kind"},"rung":{"type":"string","enum":["understand","recommend","prepare","act"],"title":"Rung"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},"additionalProperties":false,"type":"object","required":["decision_kind","rung"],"title":"AuthorityDoc"},"AutoContinueChainResponse":{"properties":{"chain_id":{"type":"string","title":"Chain Id"},"index":{"type":"integer","title":"Index"},"max_follow_ups":{"type":"integer","title":"Max Follow Ups"},"state":{"type":"string","title":"State"},"end_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Reason"},"next_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Index"},"follow_up_run_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Follow Up Run Id"},"root_user_message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Root User Message Id"}},"type":"object","required":["chain_id","index","max_follow_ups","state"],"title":"AutoContinueChainResponse","description":"TOS-2134: where this message sits in an automatic-continuation chain."},"AutonomousWorkState":{"properties":{"paused":{"type":"boolean","title":"Paused"}},"type":"object","required":["paused"],"title":"AutonomousWorkState"},"AutopilotEligibilityResponse":{"properties":{"allowed":{"type":"boolean","title":"Allowed"},"consecutive_non_human":{"type":"integer","title":"Consecutive Non Human"},"reason":{"anyOf":[{"type":"string","enum":["identity_auto_send_limit","conversation_loop_guard","time_budget_exhausted","agent_mode_expired"]},{"type":"null"}],"title":"Reason"},"identity_auto_sends":{"type":"integer","title":"Identity Auto Sends"},"auto_send_limit":{"type":"integer","title":"Auto Send Limit"},"auto_sends_remaining":{"type":"integer","title":"Auto Sends Remaining"},"auto_send_limit_source":{"type":"string","enum":["chat_override","identity_default","platform_default"],"title":"Auto Send Limit Source"},"conversation_non_human":{"type":"integer","title":"Conversation Non Human"},"conversation_loop_limit":{"type":"integer","title":"Conversation Loop Limit"},"auto_reply_limit":{"type":"integer","title":"Auto Reply Limit"},"agent_mode_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Agent Mode Expires At"},"window_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Window Seconds"},"window_source":{"type":"string","enum":["chat_override","identity_default","platform_default"],"title":"Window Source"},"replies_remaining":{"type":"integer","title":"Replies Remaining","default":0},"seconds_remaining":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seconds Remaining"},"streak_started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Streak Started At"}},"type":"object","required":["allowed","consecutive_non_human","reason","identity_auto_sends","auto_send_limit","auto_sends_remaining","auto_send_limit_source","conversation_non_human","conversation_loop_limit","auto_reply_limit","window_source"],"title":"AutopilotEligibilityResponse"},"AutopilotResumeRequest":{"properties":{"auto_reply_limit":{"anyOf":[{"type":"integer","maximum":50.0,"minimum":1.0},{"type":"null"}],"title":"Auto Reply Limit"},"window_seconds":{"anyOf":[{"type":"integer","maximum":86400.0,"minimum":0.0},{"type":"null"}],"title":"Window Seconds"}},"type":"object","title":"AutopilotResumeRequest","description":"Optional widening applied along with the reset.\n\nBoth default to null, which means \"reset the streak, keep my settings\" -\nthe plain \"keep going\" click."},"AutopilotResumeResponse":{"properties":{"resumed_at":{"type":"string","format":"date-time","title":"Resumed At"},"auto_reply_limit":{"type":"integer","title":"Auto Reply Limit"},"window_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Window Seconds"},"reply_enqueued":{"type":"boolean","title":"Reply Enqueued"}},"type":"object","required":["resumed_at","auto_reply_limit","window_seconds","reply_enqueued"],"title":"AutopilotResumeResponse"},"AvailabilityBody":{"properties":{"channel":{"type":"string","enum":["stable","canary"],"title":"Channel"},"bundle_version":{"type":"string","maxLength":200,"minLength":1,"title":"Bundle Version"},"git_sha":{"type":"string","maxLength":200,"minLength":1,"title":"Git Sha"},"manifest_digest":{"type":"string","maxLength":500,"minLength":1,"title":"Manifest Digest"}},"type":"object","required":["channel","bundle_version","git_sha","manifest_digest"],"title":"AvailabilityBody"},"AvailabilityView":{"properties":{"channel":{"type":"string","title":"Channel"},"bundle_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bundle Version"},"git_sha":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Git Sha"},"manifest_digest":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Manifest Digest"},"checked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Checked At"},"last_success_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Success At"},"last_failure_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Failure At"},"failure_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Detail"}},"type":"object","required":["channel","bundle_version","git_sha","manifest_digest","checked_at","last_success_at","last_failure_at","failure_detail"],"title":"AvailabilityView"},"AvailableToEntry":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"display_name":{"type":"string","title":"Display Name"},"kind":{"type":"string","title":"Kind"},"is_subject":{"type":"boolean","title":"Is Subject"},"is_owner":{"type":"boolean","title":"Is Owner"},"capability_role":{"type":"string","title":"Capability Role","default":"full"}},"type":"object","required":["identity_id","display_name","kind","is_subject","is_owner"],"title":"AvailableToEntry","description":"One identity that can actually use the connection, read from the live set."},"BarChartArtifact":{"properties":{"chart_type":{"type":"string","const":"bar","title":"Chart Type"},"payload":{"$ref":"#/components/schemas/BarChartPayloadResponse"}},"type":"object","required":["chart_type","payload"],"title":"BarChartArtifact"},"BarChartPayloadResponse":{"properties":{"title":{"type":"string","title":"Title"},"x_label":{"type":"string","title":"X Label"},"y_label":{"type":"string","title":"Y Label"},"categories":{"items":{"type":"string"},"type":"array","title":"Categories"},"series":{"items":{"$ref":"#/components/schemas/_BarSeries"},"type":"array","title":"Series"},"stacked":{"type":"boolean","title":"Stacked","default":false},"reference_lines":{"items":{"$ref":"#/components/schemas/_ReferenceLine"},"type":"array","title":"Reference Lines"},"y_scale":{"type":"string","title":"Y Scale","default":"linear"},"value_format":{"anyOf":[{"$ref":"#/components/schemas/_ValueFormat"},{"type":"null"}]}},"type":"object","required":["title","x_label","y_label","categories","series"],"title":"BarChartPayloadResponse"},"BeliefOut":{"properties":{"evaluation_id":{"type":"string","format":"uuid","title":"Evaluation Id"},"summary":{"type":"string","title":"Summary"},"confidence":{"type":"number","title":"Confidence"},"salience":{"type":"number","title":"Salience"},"confirmed":{"type":"boolean","title":"Confirmed"}},"type":"object","required":["evaluation_id","summary","confidence","salience","confirmed"],"title":"BeliefOut"},"BindLoginRequest":{"properties":{"expected_primary":{"type":"string","maxLength":4096,"minLength":1,"title":"Expected Primary"},"expected_subject":{"type":"string","maxLength":4096,"minLength":1,"title":"Expected Subject"},"id_token":{"type":"string","maxLength":65536,"minLength":1,"format":"password","title":"Id Token","writeOnly":true},"evidence":{"type":"string","maxLength":2000,"minLength":10,"title":"Evidence"}},"additionalProperties":false,"type":"object","required":["expected_primary","expected_subject","id_token","evidence"],"title":"BindLoginRequest"},"BindingCreateBody":{"properties":{"identity_ids":{"items":{"type":"string","format":"uuid"},"type":"array","maxItems":50,"minItems":1,"title":"Identity Ids"}},"type":"object","required":["identity_ids"],"title":"BindingCreateBody"},"Body_authorize_decision_oauth_authorize_post":{"properties":{"client_id":{"type":"string","title":"Client Id"},"redirect_uri":{"type":"string","title":"Redirect Uri"},"code_challenge":{"type":"string","title":"Code Challenge"},"code_challenge_method":{"type":"string","title":"Code Challenge Method"},"decision":{"type":"string","title":"Decision"},"state":{"type":"string","title":"State","default":""},"ticket":{"type":"string","title":"Ticket","default":""}},"type":"object","required":["client_id","redirect_uri","code_challenge","code_challenge_method","decision"],"title":"Body_authorize_decision_oauth_authorize_post"},"Body_choose_auto_continue_chain_api_chats__chat_id__auto_continue_choice_post":{"properties":{"choice":{"type":"string","enum":["keep_going","stop"],"title":"Choice"}},"type":"object","required":["choice"],"title":"Body_choose_auto_continue_chain_api_chats__chat_id__auto_continue_choice_post"},"Body_create_voice_clone_api_audio_voices_clone_post":{"properties":{"audio":{"type":"string","contentMediaType":"application/octet-stream","title":"Audio"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"consent_accepted":{"type":"boolean","title":"Consent Accepted","default":false},"remove_background_noise":{"type":"boolean","title":"Remove Background Noise","default":false},"target_identity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Identity Id"}},"type":"object","required":["audio"],"title":"Body_create_voice_clone_api_audio_voices_clone_post"},"Body_import_agent_zip_api_agents_import_zip_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_import_agent_zip_api_agents_import_zip_post"},"Body_import_folder_api_folders_import_post":{"properties":{"bundle":{"type":"string","contentMediaType":"application/octet-stream","title":"Bundle"},"parent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent Id"}},"type":"object","required":["bundle"],"title":"Body_import_folder_api_folders_import_post"},"Body_import_mind_artifact_api_agents_import_mind_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"target_agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Agent Id"},"mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode"}},"type":"object","required":["file"],"title":"Body_import_mind_artifact_api_agents_import_mind_post"},"Body_import_my_mind_api_me_mind_import_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"confirm":{"type":"boolean","title":"Confirm","default":false}},"type":"object","required":["file"],"title":"Body_import_my_mind_api_me_mind_import_post"},"Body_import_open_mind_artifact_api_agents_import_open_mind_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_import_open_mind_artifact_api_agents_import_open_mind_post"},"Body_import_skill_api_skills_import_post":{"properties":{"bundle":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Bundle"}},"type":"object","title":"Body_import_skill_api_skills_import_post"},"Body_import_vendor_export_upload_api_me_setup_import_export_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"vendor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vendor"}},"type":"object","required":["file"],"title":"Body_import_vendor_export_upload_api_me_setup_import_export_post"},"Body_opt_out_of_request_resolution_updates_api_notify_request_resolution_opt_out_post":{"properties":{"token":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Token"}},"type":"object","title":"Body_opt_out_of_request_resolution_updates_api_notify_request_resolution_opt_out_post"},"Body_post_admin_branding_favicon_api_admin_branding_favicon_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_post_admin_branding_favicon_api_admin_branding_favicon_post"},"Body_post_admin_branding_mark_api_admin_branding_mark_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_post_admin_branding_mark_api_admin_branding_mark_post"},"Body_preview_my_import_api_me_mind_import_preview_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_preview_my_import_api_me_mind_import_preview_post"},"Body_teach_imprint_api_imprints_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"belief_origin":{"type":"string","title":"Belief Origin","default":"declared"},"add_to_library":{"type":"boolean","title":"Add To Library","default":true}},"type":"object","required":["file"],"title":"Body_teach_imprint_api_imprints_post"},"Body_transcribe_audio_api_audio_transcribe_post":{"properties":{"audio":{"type":"string","contentMediaType":"application/octet-stream","title":"Audio"}},"type":"object","required":["audio"],"title":"Body_transcribe_audio_api_audio_transcribe_post"},"Body_unsubscribe_from_decision_digest_api_notify_decision_digest_unsubscribe_post":{"properties":{"token":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Token"}},"type":"object","title":"Body_unsubscribe_from_decision_digest_api_notify_decision_digest_unsubscribe_post"},"Body_update_imprint_version_api_imprints__imprint_id__put":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_update_imprint_version_api_imprints__imprint_id__put"},"Body_upload_agent_avatar_api_agents__agent_id__avatar_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_agent_avatar_api_agents__agent_id__avatar_post"},"Body_upload_my_avatar_api_me_avatar_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_my_avatar_api_me_avatar_post"},"Body_upload_organization_logo_api_me_organizations__tenant_id__logo_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_organization_logo_api_me_organizations__tenant_id__logo_post"},"Body_upload_registration_icon_api_integrations_instances__registration_id__icon_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_registration_icon_api_integrations_instances__registration_id__icon_post"},"BoundaryDoc":{"properties":{"kind":{"type":"string","enum":["action","channel","contact","data","decision","spend","time"],"title":"Kind"},"statement":{"type":"string","title":"Statement"},"binding":{"anyOf":[{"type":"null"},{"properties":{"control":{"type":"string","const":"spend_cap"},"usd_per_day":{"type":"number","minimum":0.0}},"additionalProperties":false,"type":"object","required":["control","usd_per_day"]},{"anyOf":[{"required":["deny"]},{"required":["deny_connections"]}],"properties":{"control":{"type":"string","const":"tool_policy"},"deny":{"items":{"type":"string","pattern":"\\S"},"type":"array","minItems":1},"deny_connections":{"items":{"type":"string","format":"uuid"},"type":"array","minItems":1}},"additionalProperties":false,"type":"object","required":["control"]},{"properties":{"control":{"type":"string","const":"reach"},"deny_folders":{"items":{"type":"string","format":"uuid"},"type":"array","minItems":1}},"additionalProperties":false,"type":"object","required":["control","deny_folders"]},{"properties":{"control":{"type":"string","const":"approval"},"effect_class":{"type":"string","enum":["metadata","read","draft","low_impact_write","external_communication","material_write","destructive","privileged","unknown"]},"mode":{"type":"string","enum":["always_refuse","pause"]}},"additionalProperties":false,"type":"object","required":["control","effect_class","mode"]},{"anyOf":[{"required":["max_tool_iterations"]},{"required":["max_turn_seconds"]}],"properties":{"control":{"type":"string","const":"budget"},"max_tool_iterations":{"type":"integer","minimum":1.0},"max_turn_seconds":{"type":"number","exclusiveMinimum":0.0}},"additionalProperties":false,"type":"object","required":["control"]}],"description":"A real supported control and its parameters, or null for wording only. Controls: spend_cap (usd_per_day >= 0), tool_policy (nonempty deny tool names or deny_connections UUIDs), reach (nonempty deny_folders UUIDs), approval (effect_class and mode pause/always_refuse), budget (positive max_tool_iterations or max_turn_seconds). The platform marker is reserved and unavailable to agent charters."},"enforcement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Enforcement","description":"Descriptive text only; enforcement is derived from the actual supported binding."},"machine_form":{"anyOf":[{"type":"null"},{"properties":{"kind":{"type":"string","enum":["approval","pattern","scope","spend","value"]}},"type":"object","required":["kind"],"description":"A value machine form also requires claim_key on the boundary."}]},"claim_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Claim Key"}},"additionalProperties":false,"type":"object","required":["kind","statement"],"title":"BoundaryDoc","description":"One of the identity's own boundaries (the owner layer)."},"BrandingUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Name"},"mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode"}},"type":"object","title":"BrandingUpdate"},"BrowserActionOutcome":{"properties":{"executed":{"type":"boolean","title":"Executed"},"proposal_id":{"type":"string","format":"uuid","title":"Proposal Id"},"tool":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool"},"outcome_unknown":{"type":"boolean","title":"Outcome Unknown","default":false}},"type":"object","required":["executed","proposal_id"],"title":"BrowserActionOutcome"},"BrowserActionProposalListResponse":{"properties":{"proposals":{"items":{"$ref":"#/components/schemas/BrowserActionProposalView"},"type":"array","title":"Proposals"}},"type":"object","required":["proposals"],"title":"BrowserActionProposalListResponse"},"BrowserActionProposalView":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"session_id":{"type":"string","format":"uuid","title":"Session Id"},"agent_identity_id":{"type":"string","format":"uuid","title":"Agent Identity Id"},"chat_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Chat Id"},"connection_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Connection Id"},"origin":{"type":"string","title":"Origin"},"tool":{"type":"string","title":"Tool"},"action_class":{"type":"string","enum":["authentication","communication","routine_mutation","reservation","purchase","payment","destructive","security","consent","publication","unknown"],"title":"Action Class"},"approval_mode":{"type":"string","enum":["human_takeover","scoped_or_one_shot","one_shot"],"title":"Approval Mode"},"safe_summary":{"$ref":"#/components/schemas/BrowserActionSummary"},"status":{"type":"string","enum":["requested","approved","denied","executing","executed","expired","canceled","failed"],"title":"Status"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"safe_outcome":{"anyOf":[{"$ref":"#/components/schemas/BrowserActionOutcome"},{"type":"null"}]},"failure_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Code"}},"type":"object","required":["id","session_id","agent_identity_id","origin","tool","action_class","approval_mode","safe_summary","status","expires_at"],"title":"BrowserActionProposalView"},"BrowserActionSummary":{"properties":{"description":{"type":"string","title":"Description"},"origin":{"type":"string","title":"Origin"}},"type":"object","required":["description","origin"],"title":"BrowserActionSummary"},"BrowserApprovalRequest":{"properties":{"scope_kind":{"type":"string","enum":["once","scoped"],"title":"Scope Kind","default":"once"},"scope_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scope Expires At"}},"type":"object","title":"BrowserApprovalRequest"},"BrowserApprovalResponse":{"properties":{"proposal":{"$ref":"#/components/schemas/BrowserActionProposalView"},"outcome":{"$ref":"#/components/schemas/BrowserActionOutcome"},"replayed":{"type":"boolean","title":"Replayed"},"resume":{"$ref":"#/components/schemas/BrowserResumeView"}},"type":"object","required":["proposal","outcome","replayed","resume"],"title":"BrowserApprovalResponse"},"BrowserAuthProfileResponse":{"properties":{"profile":{"$ref":"#/components/schemas/BrowserAuthProfileView"}},"type":"object","required":["profile"],"title":"BrowserAuthProfileResponse"},"BrowserAuthProfileSave":{"properties":{"origin":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Origin"},"label":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Label"}},"type":"object","required":["origin"],"title":"BrowserAuthProfileSave"},"BrowserAuthProfileView":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"agent_identity_id":{"type":"string","format":"uuid","title":"Agent Identity Id"},"origin":{"type":"string","title":"Origin"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"cookie_count":{"type":"integer","minimum":0.0,"title":"Cookie Count"},"last_seeded_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seeded At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"}},"type":"object","required":["id","agent_identity_id","origin","cookie_count"],"title":"BrowserAuthProfileView"},"BrowserAuthenticationCompletionResponse":{"properties":{"proposal":{"$ref":"#/components/schemas/BrowserActionProposalView"},"profile":{"$ref":"#/components/schemas/BrowserAuthProfileView"},"session":{"$ref":"#/components/schemas/BrowserSessionView"},"resume":{"$ref":"#/components/schemas/BrowserResumeView"}},"type":"object","required":["proposal","profile","session","resume"],"title":"BrowserAuthenticationCompletionResponse"},"BrowserClickInput":{"properties":{"type":{"type":"string","const":"click","title":"Type"},"x":{"type":"number","title":"X"},"y":{"type":"number","title":"Y"},"frame_version":{"type":"integer","minimum":1.0,"title":"Frame Version"}},"type":"object","required":["type","x","y","frame_version"],"title":"BrowserClickInput"},"BrowserControlRequest":{"properties":{"lease_seconds":{"type":"integer","maximum":1800.0,"minimum":30.0,"title":"Lease Seconds","default":300}},"type":"object","title":"BrowserControlRequest"},"BrowserDenialResponse":{"properties":{"proposal":{"$ref":"#/components/schemas/BrowserActionProposalView"},"resume":{"$ref":"#/components/schemas/BrowserResumeView"}},"type":"object","required":["proposal","resume"],"title":"BrowserDenialResponse"},"BrowserDragInput":{"properties":{"type":{"type":"string","const":"drag","title":"Type"},"x":{"type":"number","title":"X"},"y":{"type":"number","title":"Y"},"to_x":{"type":"number","title":"To X"},"to_y":{"type":"number","title":"To Y"},"frame_version":{"type":"integer","minimum":1.0,"title":"Frame Version"}},"type":"object","required":["type","x","y","to_x","to_y","frame_version"],"title":"BrowserDragInput"},"BrowserFormFieldListResponse":{"properties":{"fields":{"items":{"$ref":"#/components/schemas/BrowserFormFieldView"},"type":"array","title":"Fields"}},"type":"object","required":["fields"],"title":"BrowserFormFieldListResponse"},"BrowserFormFieldView":{"properties":{"index":{"type":"integer","minimum":0.0,"title":"Index"},"kind":{"type":"string","enum":["field","button"],"title":"Kind"},"tag":{"type":"string","title":"Tag"},"type":{"type":"string","title":"Type"},"name":{"type":"string","title":"Name","default":""},"id":{"type":"string","title":"Id","default":""},"placeholder":{"type":"string","maxLength":201,"title":"Placeholder","default":""},"autocomplete":{"type":"string","title":"Autocomplete","default":""},"label":{"type":"string","maxLength":201,"title":"Label","default":""}},"type":"object","required":["index","kind","tag","type"],"title":"BrowserFormFieldView"},"BrowserFormFillInput":{"properties":{"type":{"type":"string","const":"form_fill","title":"Type"},"index":{"type":"integer","minimum":0.0,"title":"Index"},"value":{"type":"string","maxLength":4096,"title":"Value"},"tag":{"type":"string","maxLength":20,"minLength":1,"title":"Tag"}},"type":"object","required":["type","index","value","tag"],"title":"BrowserFormFillInput"},"BrowserFormSubmitInput":{"properties":{"type":{"type":"string","const":"form_submit","title":"Type"},"index":{"type":"integer","minimum":0.0,"title":"Index"},"tag":{"type":"string","maxLength":20,"minLength":1,"title":"Tag"}},"type":"object","required":["type","index","tag"],"title":"BrowserFormSubmitInput"},"BrowserInputResponse":{"properties":{"applied":{"type":"boolean","title":"Applied"},"type":{"type":"string","enum":["click","text","key","scroll","drag","switch_tab","form_fill","form_submit"],"title":"Type"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"}},"type":"object","required":["applied","type"],"title":"BrowserInputResponse"},"BrowserKeyInput":{"properties":{"type":{"type":"string","const":"key","title":"Type"},"key":{"type":"string","maxLength":80,"minLength":1,"title":"Key"}},"type":"object","required":["type","key"],"title":"BrowserKeyInput"},"BrowserLaunchBody":{"properties":{"launch_id":{"type":"string","format":"uuid","title":"Launch Id"},"code_challenge":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$","title":"Code Challenge"}},"type":"object","required":["launch_id","code_challenge"],"title":"BrowserLaunchBody"},"BrowserLifecycleBody":{"properties":{"launch_id":{"type":"string","format":"uuid","title":"Launch Id"}},"type":"object","required":["launch_id"],"title":"BrowserLifecycleBody"},"BrowserResumeView":{"properties":{"run_id":{"type":"string","format":"uuid","title":"Run Id"},"status":{"type":"string","title":"Status"}},"type":"object","required":["run_id","status"],"title":"BrowserResumeView"},"BrowserScrollInput":{"properties":{"type":{"type":"string","const":"scroll","title":"Type"},"x":{"type":"number","maximum":5000.0,"minimum":-5000.0,"title":"X","default":0},"y":{"type":"number","maximum":5000.0,"minimum":-5000.0,"title":"Y","default":0}},"type":"object","required":["type"],"title":"BrowserScrollInput"},"BrowserSessionListResponse":{"properties":{"sessions":{"items":{"$ref":"#/components/schemas/BrowserSessionView"},"type":"array","title":"Sessions"}},"type":"object","required":["sessions"],"title":"BrowserSessionListResponse"},"BrowserSessionResponse":{"properties":{"session":{"$ref":"#/components/schemas/BrowserSessionView"}},"type":"object","required":["session"],"title":"BrowserSessionResponse"},"BrowserSessionStart":{"properties":{"chat_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Chat Id"},"start_url":{"anyOf":[{"type":"string","maxLength":2083,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Start Url"}},"type":"object","title":"BrowserSessionStart"},"BrowserSessionView":{"properties":{"session_id":{"type":"string","format":"uuid","title":"Session Id"},"agent_identity_id":{"type":"string","format":"uuid","title":"Agent Identity Id"},"chat_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Chat Id"},"current_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Url"},"page_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Page Title"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"control_mode":{"type":"string","enum":["agent","human"],"title":"Control Mode"},"controller_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Controller Identity Id"},"control_lease_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Control Lease Expires At"},"control_version":{"type":"integer","title":"Control Version","default":0},"frame_version":{"type":"integer","title":"Frame Version","default":0}},"type":"object","required":["session_id","agent_identity_id","expires_at","control_mode"],"title":"BrowserSessionView"},"BrowserSwitchTabInput":{"properties":{"type":{"type":"string","const":"switch_tab","title":"Type"},"index":{"type":"integer","minimum":0.0,"title":"Index"}},"type":"object","required":["type","index"],"title":"BrowserSwitchTabInput"},"BrowserTabListResponse":{"properties":{"tabs":{"items":{"$ref":"#/components/schemas/BrowserTabView"},"type":"array","title":"Tabs"}},"type":"object","required":["tabs"],"title":"BrowserTabListResponse"},"BrowserTabView":{"properties":{"index":{"type":"integer","minimum":0.0,"title":"Index"},"url":{"type":"string","title":"Url"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"active":{"type":"boolean","title":"Active"}},"type":"object","required":["index","url","active"],"title":"BrowserTabView"},"BrowserTextInput":{"properties":{"type":{"type":"string","const":"text","title":"Type"},"value":{"type":"string","maxLength":4096,"title":"Value"}},"type":"object","required":["type","value"],"title":"BrowserTextInput"},"BrowserTiming":{"properties":{"send_to_first_visible_us":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Send To First Visible Us"},"send_to_answer_complete_us":{"type":"integer","title":"Send To Answer Complete Us"},"observation_id":{"type":"string","title":"Observation Id"},"source":{"type":"string","title":"Source","default":"browser_monotonic"},"resolution_us":{"type":"integer","title":"Resolution Us","default":1000},"evidence":{"type":"string","title":"Evidence","default":"viewer_reported"},"completion_evidence":{"type":"string","title":"Completion Evidence","default":"legacy_unknown"},"displayed_estimates":{"items":{"$ref":"#/components/schemas/DisplayedEstimate"},"type":"array","maxItems":16,"title":"Displayed Estimates"}},"type":"object","required":["send_to_answer_complete_us","observation_id"],"title":"BrowserTiming"},"BulkAssignItemResponse":{"properties":{"agent_id":{"type":"string","format":"uuid","title":"Agent Id"},"agent_display_name":{"type":"string","title":"Agent Display Name"},"current_template_id":{"type":"string","format":"uuid","title":"Current Template Id"},"current_template_name":{"type":"string","title":"Current Template Name"},"override_count":{"type":"integer","title":"Override Count"},"overridden_op_keys":{"items":{"type":"string"},"type":"array","title":"Overridden Op Keys"},"has_rule_overrides":{"type":"boolean","title":"Has Rule Overrides"},"new_template_id":{"type":"string","format":"uuid","title":"New Template Id"}},"type":"object","required":["agent_id","agent_display_name","current_template_id","current_template_name","override_count","overridden_op_keys","has_rule_overrides","new_template_id"],"title":"BulkAssignItemResponse"},"BulkAssignRequest":{"properties":{"template_id":{"type":"string","format":"uuid","title":"Template Id"},"agent_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Agent Ids"}},"type":"object","required":["template_id","agent_ids"],"title":"BulkAssignRequest"},"BulkDeleteAgentProviderKeysRequest":{"properties":{"providers":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Providers"}},"type":"object","required":["providers"],"title":"BulkDeleteAgentProviderKeysRequest"},"BulkDeleteAgentProviderKeysResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true},"deleted":{"type":"integer","title":"Deleted"}},"type":"object","required":["deleted"],"title":"BulkDeleteAgentProviderKeysResponse"},"BulkDeleteProviderKeysRequest":{"properties":{"providers":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Providers"}},"type":"object","required":["providers"],"title":"BulkDeleteProviderKeysRequest"},"BulkDeleteProviderKeysResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true},"deleted":{"type":"integer","title":"Deleted"}},"type":"object","required":["deleted"],"title":"BulkDeleteProviderKeysResponse"},"BulkDeleteResponse":{"properties":{"deleted":{"type":"integer","title":"Deleted"},"errors":{"items":{"$ref":"#/components/schemas/BulkErrorItem"},"type":"array","title":"Errors"}},"type":"object","required":["deleted","errors"],"title":"BulkDeleteResponse"},"BulkDeleteResultV1":{"properties":{"deleted":{"type":"integer","title":"Deleted"}},"type":"object","required":["deleted"],"title":"BulkDeleteResultV1"},"BulkDeleteSkillsResponse":{"properties":{"deleted":{"type":"integer","title":"Deleted"},"errors":{"items":{"$ref":"#/components/schemas/SkillBulkErrorItem"},"type":"array","title":"Errors"}},"type":"object","required":["deleted","errors"],"title":"BulkDeleteSkillsResponse"},"BulkDocumentIdsRequest":{"properties":{"document_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Document Ids"}},"type":"object","required":["document_ids"],"title":"BulkDocumentIdsRequest"},"BulkErrorItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"reason":{"type":"string","title":"Reason"}},"type":"object","required":["id","reason"],"title":"BulkErrorItem"},"BulkInitFileRequest":{"properties":{"filename":{"type":"string","maxLength":400,"minLength":1,"title":"Filename"}},"type":"object","required":["filename"],"title":"BulkInitFileRequest"},"BulkInitFileResponse":{"properties":{"file_id":{"type":"string","format":"uuid","title":"File Id"},"filename":{"type":"string","title":"Filename"},"upload_url":{"type":"string","title":"Upload Url"}},"type":"object","required":["file_id","filename","upload_url"],"title":"BulkInitFileResponse"},"BulkInitRequest":{"properties":{"library_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Library Id"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"files":{"items":{"$ref":"#/components/schemas/BulkInitFileRequest"},"type":"array","maxItems":200,"minItems":1,"title":"Files"},"teach_mind":{"type":"boolean","title":"Teach Mind","default":true},"add_to_library":{"type":"boolean","title":"Add To Library","default":true}},"type":"object","required":["files"],"title":"BulkInitRequest"},"BulkInitResponse":{"properties":{"job_id":{"type":"string","format":"uuid","title":"Job Id"},"files":{"items":{"$ref":"#/components/schemas/BulkInitFileResponse"},"type":"array","title":"Files"}},"type":"object","required":["job_id","files"],"title":"BulkInitResponse"},"BulkJobFileSummary":{"properties":{"file_id":{"type":"string","title":"File Id"},"filename":{"type":"string","title":"Filename"},"status":{"type":"string","title":"Status"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"document_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Id"},"chunk_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Chunk Count"},"mind_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mind Status"}},"type":"object","required":["file_id","filename","status","error","document_id","chunk_count","mind_status"],"title":"BulkJobFileSummary"},"BulkJobStatusResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","title":"Status"},"total_files":{"type":"integer","title":"Total Files"},"succeeded_files":{"type":"integer","title":"Succeeded Files"},"failed_files":{"type":"integer","title":"Failed Files"},"files":{"items":{"$ref":"#/components/schemas/BulkJobFileSummary"},"type":"array","title":"Files"}},"type":"object","required":["job_id","status","total_files","succeeded_files","failed_files","files"],"title":"BulkJobStatusResponse"},"BulkMoveRequest":{"properties":{"document_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Document Ids"},"destination_library_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"string"},{"type":"null"}],"title":"Destination Library Id"}},"type":"object","required":["document_ids","destination_library_id"],"title":"BulkMoveRequest"},"BulkMoveResponse":{"properties":{"moved":{"type":"integer","title":"Moved"},"errors":{"items":{"$ref":"#/components/schemas/BulkErrorItem"},"type":"array","title":"Errors"}},"type":"object","required":["moved","errors"],"title":"BulkMoveResponse"},"BulkReindexResponse":{"properties":{"queued":{"type":"integer","title":"Queued"},"errors":{"items":{"$ref":"#/components/schemas/BulkErrorItem"},"type":"array","title":"Errors"}},"type":"object","required":["queued","errors"],"title":"BulkReindexResponse"},"BulkSkillIdsBody":{"properties":{"skill_ids":{"items":{"type":"string","format":"uuid"},"type":"array","maxItems":100,"minItems":1,"title":"Skill Ids"}},"type":"object","required":["skill_ids"],"title":"BulkSkillIdsBody"},"BulkTagRequest":{"properties":{"document_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Document Ids"},"add":{"items":{"type":"string"},"type":"array","title":"Add"},"remove":{"items":{"type":"string"},"type":"array","title":"Remove"}},"type":"object","required":["document_ids"],"title":"BulkTagRequest"},"BulkTagResponse":{"properties":{"updated":{"type":"integer","title":"Updated"},"errors":{"items":{"$ref":"#/components/schemas/BulkErrorItem"},"type":"array","title":"Errors"}},"type":"object","required":["updated","errors"],"title":"BulkTagResponse"},"BundleCreateRequest":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"provider_family":{"type":"string","enum":["anthropic","openai","google","openrouter","fireworks","xai"],"title":"Provider Family"},"operations":{"additionalProperties":true,"type":"object","title":"Operations"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"is_recommended":{"type":"boolean","title":"Is Recommended","default":false}},"type":"object","required":["slug","name","provider_family","operations"],"title":"BundleCreateRequest"},"BundleRollbackRequest":{"properties":{"version_id":{"type":"string","format":"uuid","title":"Version Id"}},"type":"object","required":["version_id"],"title":"BundleRollbackRequest"},"BundleUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"provider_family":{"anyOf":[{"type":"string","enum":["anthropic","openai","google","openrouter","fireworks","xai"]},{"type":"null"}],"title":"Provider Family"},"is_recommended":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Recommended"}},"type":"object","title":"BundleUpdateRequest"},"BundleVersionCreateRequest":{"properties":{"operations":{"additionalProperties":true,"type":"object","title":"Operations"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["operations"],"title":"BundleVersionCreateRequest"},"BundledReleaseNote":{"properties":{"schema_version":{"type":"integer","const":1,"title":"Schema Version","default":1},"release_id":{"type":"string","format":"uuid","title":"Release Id"},"bundle_version":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]*$","title":"Bundle Version"},"git_sha":{"type":"string","pattern":"^[0-9a-f]{40}$","title":"Git Sha"},"source":{"type":"string","enum":["backend","web","bridge","docs","full_stack"],"title":"Source","default":"full_stack"},"category":{"type":"string","enum":["feature","improvement","fix","performance","security","integration","admin","internal"],"title":"Category"},"title":{"type":"string","maxLength":200,"minLength":1,"title":"Title"},"summary":{"type":"string","maxLength":2000,"minLength":1,"title":"Summary"},"notes_markdown":{"type":"string","maxLength":100000,"title":"Notes Markdown","default":""},"notes_markdown_admin":{"type":"string","maxLength":100000,"title":"Notes Markdown Admin","default":""},"notify_users":{"type":"boolean","title":"Notify Users"},"published_at":{"type":"string","format":"date-time","title":"Published At"},"generated_by_ai":{"type":"boolean","title":"Generated By Ai","default":true}},"additionalProperties":false,"type":"object","required":["release_id","bundle_version","git_sha","category","title","summary","notify_users","published_at"],"title":"BundledReleaseNote","description":"Immutable release metadata carried inside the signed OCI bundle."},"CalendarCapture":{"properties":{"kind":{"type":"string","const":"calendar_event","title":"Kind","default":"calendar_event"},"calendar_id":{"type":"string","title":"Calendar Id"},"event_id":{"type":"string","title":"Event Id"},"title":{"type":"string","title":"Title"},"status":{"type":"string","title":"Status","default":"confirmed"},"start":{"anyOf":[{"$ref":"#/components/schemas/CalendarWhen"},{"type":"null"}]},"end":{"anyOf":[{"$ref":"#/components/schemas/CalendarWhen"},{"type":"null"}]},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"organizer":{"anyOf":[{"$ref":"#/components/schemas/CalendarPerson"},{"type":"null"}]},"attendees":{"items":{"$ref":"#/components/schemas/CalendarPerson"},"type":"array","title":"Attendees"},"recurrence":{"items":{"type":"string"},"type":"array","title":"Recurrence"},"recurring_event_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recurring Event Id"},"original_start_time":{"anyOf":[{"$ref":"#/components/schemas/CalendarWhen"},{"type":"null"}]},"updated":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated"},"sequence":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sequence"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"}},"type":"object","required":["calendar_id","event_id","title"],"title":"CalendarCapture"},"CalendarPerson":{"properties":{"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Displayname"},"responseStatus":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Responsestatus"}},"type":"object","title":"CalendarPerson"},"CalendarWhen":{"properties":{"date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date"},"dateTime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Datetime"},"timeZone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"}},"type":"object","title":"CalendarWhen"},"CancelIn":{"properties":{"immediate":{"type":"boolean","title":"Immediate","default":false}},"type":"object","title":"CancelIn"},"CancelOperationResponse":{"properties":{"canceled":{"type":"boolean","title":"Canceled"}},"type":"object","required":["canceled"],"title":"CancelOperationResponse","description":"Result of asking to cancel one operation."},"CancelSubscriptionRequest":{"properties":{"at_period_end":{"type":"boolean","title":"At Period End","default":true}},"type":"object","title":"CancelSubscriptionRequest"},"CancelTurnStreamRequest":{"properties":{"redirect_text":{"anyOf":[{"type":"string","maxLength":100000},{"type":"null"}],"title":"Redirect Text"}},"type":"object","title":"CancelTurnStreamRequest","description":"Body for ``POST /{chat_id}/turn-stream/cancel`` (TOS-2269).\n\n``redirect_text`` is present for a steer (the new message the user wants to\nsend instead), absent for a plain Stop. The endpoint writes the cancel\nsignal onto every live ``chat_stream_progress`` row for this chat; the\nrunning turn's ``TurnCancelWatcher`` observes it and cancels."},"CandidatesResponse":{"properties":{"candidates":{"items":{"$ref":"#/components/schemas/TargetInfo"},"type":"array","title":"Candidates"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["candidates","next_cursor"],"title":"CandidatesResponse"},"CapabilitiesListResponse":{"properties":{"capabilities":{"items":{"$ref":"#/components/schemas/CapabilityResponse"},"type":"array","title":"Capabilities"},"effective_capabilities":{"items":{"$ref":"#/components/schemas/EffectiveCapabilityResponse"},"type":"array","title":"Effective Capabilities"},"skills":{"items":{"$ref":"#/components/schemas/SkillCommandResponse"},"type":"array","title":"Skills"},"agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"}},"type":"object","required":["capabilities"],"title":"CapabilitiesListResponse"},"CapabilityAccessItem":{"properties":{"artifact_type":{"type":"string","title":"Artifact Type"},"artifact_id":{"type":"string","format":"uuid","title":"Artifact Id"},"display_name":{"type":"string","title":"Display Name"},"state":{"type":"string","title":"State"},"library_id":{"type":"string","format":"uuid","title":"Library Id"},"library_name":{"type":"string","title":"Library Name"},"trust_mode":{"type":"string","title":"Trust Mode"},"overridden_by_approval":{"type":"boolean","title":"Overridden By Approval"},"grant_capability_role":{"type":"string","title":"Grant Capability Role"},"capability_role":{"type":"string","title":"Capability Role"},"role_overridden_by_approval":{"type":"boolean","title":"Role Overridden By Approval"}},"type":"object","required":["artifact_type","artifact_id","display_name","state","library_id","library_name","trust_mode","overridden_by_approval","grant_capability_role","capability_role","role_overridden_by_approval"],"title":"CapabilityAccessItem","description":"One capability artifact in the per-identity \"what is live and why\" view."},"CapabilityAccessResponse":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"items":{"items":{"$ref":"#/components/schemas/CapabilityAccessItem"},"type":"array","title":"Items"}},"type":"object","required":["identity_id"],"title":"CapabilityAccessResponse"},"CapabilityMemberState":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"state":{"type":"string","title":"State"},"capability_role":{"type":"string","title":"Capability Role"},"role_overridden_by_approval":{"type":"boolean","title":"Role Overridden By Approval"}},"type":"object","required":["identity_id","state","capability_role","role_overridden_by_approval"],"title":"CapabilityMemberState","description":"Effective access state for one member against one capability."},"CapabilityRatingBody":{"properties":{"stars":{"type":"integer","maximum":5.0,"minimum":1.0,"title":"Stars"},"review":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Review"}},"type":"object","required":["stars"],"title":"CapabilityRatingBody","description":"Set-rating request. Originally TOS-1709's ``RatingBody``."},"CapabilityResponse":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"category":{"type":"string","title":"Category"},"user_summary":{"type":"string","title":"User Summary"},"example_prompts":{"items":{"type":"string"},"type":"array","title":"Example Prompts"},"icon":{"type":"string","title":"Icon"},"slash_command":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slash Command"},"slash_takes_arguments":{"type":"boolean","title":"Slash Takes Arguments","default":true},"keywords":{"items":{"type":"string"},"type":"array","title":"Keywords"}},"type":"object","required":["id","title","category","user_summary","icon"],"title":"CapabilityResponse","description":"One row in the slash-palette response."},"CapabilityRow":{"properties":{"artifact_id":{"type":"string","format":"uuid","title":"Artifact Id"},"artifact_type":{"type":"string","title":"Artifact Type"},"name":{"type":"string","title":"Name"},"members":{"items":{"$ref":"#/components/schemas/CapabilityMemberState"},"type":"array","title":"Members"}},"type":"object","required":["artifact_id","artifact_type","name","members"],"title":"CapabilityRow","description":"One capability (integration_instance or skill) and its per-member states."},"CaptureBulkDeleteResultV1":{"properties":{"deleted":{"type":"integer","title":"Deleted"}},"type":"object","required":["deleted"],"title":"CaptureBulkDeleteResultV1"},"CaptureConnectTargetPublic":{"properties":{"instance_id":{"type":"string","title":"Instance Id"},"instance_label":{"type":"string","title":"Instance Label"},"environment":{"type":"string","title":"Environment"},"connect_url":{"type":"string","title":"Connect Url"}},"type":"object","required":["instance_id","instance_label","environment","connect_url"],"title":"CaptureConnectTargetPublic"},"CaptureDeviceReceiptV1":{"properties":{"source":{"type":"string","title":"Source"},"machine_id":{"type":"string","title":"Machine Id"},"configuration_observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Configuration Observed At"},"native_hook_observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Native Hook Observed At"},"sweep_observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sweep Observed At"},"last_observed_at":{"type":"string","format":"date-time","title":"Last Observed At"}},"type":"object","required":["source","machine_id","last_observed_at"],"title":"CaptureDeviceReceiptV1"},"CaptureDevicesV1":{"properties":{"devices":{"items":{"$ref":"#/components/schemas/CaptureDeviceReceiptV1"},"type":"array","title":"Devices"}},"type":"object","required":["devices"],"title":"CaptureDevicesV1"},"CaptureDispositionJobListResponse":{"properties":{"jobs":{"items":{"$ref":"#/components/schemas/CaptureDispositionJobResponse"},"type":"array","title":"Jobs"}},"type":"object","required":["jobs"],"title":"CaptureDispositionJobListResponse"},"CaptureDispositionJobResponse":{"properties":{"job_id":{"type":"string","format":"uuid","title":"Job Id"},"connection_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Connection Id"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"actor_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Actor Identity Id"},"rule":{"type":"string","enum":["mark-existing-read","archive-existing"],"title":"Rule"},"status":{"type":"string","enum":["queued","running","completed","partial-failure"],"title":"Status"},"execution_requested":{"type":"boolean","title":"Execution Requested"},"batch_size":{"type":"integer","title":"Batch Size"},"cutoff_at":{"type":"string","format":"date-time","title":"Cutoff At"},"eligible_count":{"type":"integer","title":"Eligible Count"},"changed_count":{"type":"integer","title":"Changed Count"},"skipped_count":{"type":"integer","title":"Skipped Count"},"failure_count":{"type":"integer","title":"Failure Count"},"remaining_count":{"type":"integer","title":"Remaining Count"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["job_id","connection_id","source","identity_id","actor_identity_id","rule","status","execution_requested","batch_size","cutoff_at","eligible_count","changed_count","skipped_count","failure_count","remaining_count","started_at","completed_at","created_at","updated_at"],"title":"CaptureDispositionJobResponse"},"CaptureDispositionPreviewRequest":{"properties":{"rule":{"type":"string","enum":["mark-existing-read","archive-existing"],"title":"Rule"},"batch_size":{"type":"integer","maximum":1000.0,"minimum":1.0,"title":"Batch Size","default":100}},"type":"object","required":["rule"],"title":"CaptureDispositionPreviewRequest"},"CaptureDispositionResetResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true},"changed":{"type":"boolean","title":"Changed","default":false}},"type":"object","title":"CaptureDispositionResetResponse"},"CaptureDispositionRetryResponse":{"properties":{"job_id":{"type":"string","format":"uuid","title":"Job Id"},"connection_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Connection Id"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"actor_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Actor Identity Id"},"rule":{"type":"string","enum":["mark-existing-read","archive-existing"],"title":"Rule"},"status":{"type":"string","enum":["queued","running","completed","partial-failure"],"title":"Status"},"execution_requested":{"type":"boolean","title":"Execution Requested"},"batch_size":{"type":"integer","title":"Batch Size"},"cutoff_at":{"type":"string","format":"date-time","title":"Cutoff At"},"eligible_count":{"type":"integer","title":"Eligible Count"},"changed_count":{"type":"integer","title":"Changed Count"},"skipped_count":{"type":"integer","title":"Skipped Count"},"failure_count":{"type":"integer","title":"Failure Count"},"remaining_count":{"type":"integer","title":"Remaining Count"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"retried_count":{"type":"integer","title":"Retried Count"}},"type":"object","required":["job_id","connection_id","source","identity_id","actor_identity_id","rule","status","execution_requested","batch_size","cutoff_at","eligible_count","changed_count","skipped_count","failure_count","remaining_count","started_at","completed_at","created_at","updated_at","retried_count"],"title":"CaptureDispositionRetryResponse"},"CaptureDispositionSummary":{"properties":{"source":{"type":"string","title":"Source"},"using_connection_default":{"type":"boolean","title":"Using Connection Default"},"can_reset":{"type":"boolean","title":"Can Reset"},"override_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Override Reason"}},"type":"object","required":["source","using_connection_default","can_reset"],"title":"CaptureDispositionSummary","description":"TOS-3758: this viewer's capture mailbox state for one captured conversation.\n\n``using_connection_default`` is the field the UI renders. False means this\nconversation has diverged from the capture connection's archive/read policy\nand will no longer follow changes to it - a state that existed before this\nticket but was completely invisible, and had no undo.\n\n``can_reset`` is separate from ``not using_connection_default`` on purpose:\nan unbound source capture can only be handed back to a default when the\ncaller can supply that source's policy, so the client must not offer a\ncontrol that would no-op."},"CaptureExtractionTelemetryV1":{"properties":{"status_counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Status Counts"},"calls":{"type":"integer","title":"Calls"},"input_tokens":{"type":"integer","title":"Input Tokens"},"output_tokens":{"type":"integer","title":"Output Tokens"},"raw_spend_usd":{"type":"string","title":"Raw Spend Usd"},"charged_spend_usd":{"type":"string","title":"Charged Spend Usd"}},"type":"object","required":["status_counts","calls","input_tokens","output_tokens","raw_spend_usd","charged_spend_usd"],"title":"CaptureExtractionTelemetryV1"},"CaptureInstallReceiptV1":{"properties":{"configuration":{"type":"boolean","title":"Configuration"},"transport":{"type":"boolean","title":"Transport"},"native_hook":{"type":"boolean","title":"Native Hook"},"learning":{"type":"boolean","title":"Learning"},"server_observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Server Observed At"},"machine_ids":{"items":{"type":"string"},"type":"array","title":"Machine Ids"}},"type":"object","required":["configuration","transport","native_hook","learning","server_observed_at"],"title":"CaptureInstallReceiptV1","description":"Response for ``GET /api/captures/install-receipt`` (TOS-4487).\n\nFour independent facts that must never be collapsed into one boolean:\n``configuration`` (a ``thinqos_install`` marker with trigger\n``configuration`` arrived), ``transport`` (one with trigger\n``transport_probe`` arrived - proves the client could reach the API, not\nthat anything was installed), ``native_hook`` (one with trigger\n``native_hook`` arrived - the ONLY fact a genuine hook firing may set; a\n``sweep`` or ``transport_probe`` marker never sets it), and ``learning``\n(read from the matched capture's own extraction eligibility/status, and\nNOT implied by any of the other three - a probe or below-minimum capture\ncan satisfy every trigger fact and still never be eligible for personal\nlearning). ``server_observed_at`` is the server clock timestamp of the\nfreshest matching receipt, or ``null`` when nothing currently matches.\n``machine_ids`` reports which machines those receipts came from."},"CaptureMode":{"type":"string","enum":["manual","selective","automatic","scheduled","event"]},"CapturePolicyUpdateV1":{"properties":{"recall_searchable":{"type":"boolean","title":"Recall Searchable"},"extraction_mode":{"anyOf":[{"type":"string","enum":["none","owner"]},{"type":"null"}],"title":"Extraction Mode"}},"type":"object","required":["recall_searchable"],"title":"CapturePolicyUpdateV1"},"CapturePolicyV1":{"properties":{"recall_searchable":{"type":"boolean","title":"Recall Searchable"},"extraction_mode":{"type":"string","enum":["none","owner"],"title":"Extraction Mode"},"extraction_skip_reason":{"anyOf":[{"type":"string","enum":["mode_none","over_daily_cap","below_minimum"]},{"type":"null"}],"title":"Extraction Skip Reason"},"extraction_count":{"type":"integer","title":"Extraction Count"},"extraction_status":{"type":"string","enum":["queued","ineligible","deferred","processing","failed","integrated"],"title":"Extraction Status"}},"type":"object","required":["recall_searchable","extraction_mode","extraction_skip_reason","extraction_count","extraction_status"],"title":"CapturePolicyV1"},"CaptureReceiptV2":{"properties":{"source_external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source External Id"},"requested_revision":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Requested Revision"},"current_revision":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Revision"},"status":{"type":"string","enum":["accepted","duplicate","rejected"],"title":"Status"},"code":{"type":"string","title":"Code"},"retryable":{"type":"boolean","title":"Retryable"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"},"original_status":{"anyOf":[{"type":"string","const":"accepted"},{"type":"null"}],"title":"Original Status"},"original_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Code"},"original_current_revision":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Original Current Revision"}},"type":"object","required":["source_external_id","requested_revision","current_revision","status","code","retryable"],"title":"CaptureReceiptV2"},"CaptureReextractResultV1":{"properties":{"propositions_created":{"type":"integer","title":"Propositions Created"}},"type":"object","required":["propositions_created"],"title":"CaptureReextractResultV1"},"CaptureResultV2":{"properties":{"contract_version":{"type":"string","const":"2.0","title":"Contract Version","default":"2.0"},"accepted":{"type":"integer","title":"Accepted"},"duplicates":{"type":"integer","title":"Duplicates"},"rejected":{"type":"integer","title":"Rejected"},"receipts":{"items":{"$ref":"#/components/schemas/CaptureReceiptV2"},"type":"array","title":"Receipts"}},"type":"object","required":["accepted","duplicates","rejected","receipts"],"title":"CaptureResultV2"},"CaptureRetentionUpdateV1":{"properties":{"retention_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Retention Days"}},"type":"object","required":["retention_days"],"title":"CaptureRetentionUpdateV1"},"CaptureRetentionV1":{"properties":{"retention_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Retention Days"},"delete_after":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Delete After"}},"type":"object","required":["retention_days","delete_after"],"title":"CaptureRetentionV1"},"CaptureSourceInfoListV1":{"properties":{"sources":{"items":{"$ref":"#/components/schemas/CaptureSourceInfoV1"},"type":"array","title":"Sources"}},"type":"object","required":["sources"],"title":"CaptureSourceInfoListV1"},"CaptureSourceInfoV1":{"properties":{"source":{"type":"string","title":"Source"},"blocked":{"type":"boolean","title":"Blocked"},"capture_count":{"type":"integer","title":"Capture Count"},"last_capture_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Capture At"},"default_recall_searchable":{"type":"boolean","title":"Default Recall Searchable","default":true},"default_extraction_mode":{"type":"string","enum":["none","owner"],"title":"Default Extraction Mode","default":"none"},"extraction_context_budget_chars":{"type":"integer","title":"Extraction Context Budget Chars","default":500},"retention_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Retention Days"},"capture_mode":{"$ref":"#/components/schemas/CaptureMode","default":"manual"},"review_required":{"type":"boolean","title":"Review Required","default":false},"mark_new_captures_read":{"type":"boolean","title":"Mark New Captures Read","default":true},"archive_new_captures":{"type":"boolean","title":"Archive New Captures","default":false}},"type":"object","required":["source","blocked","capture_count","last_capture_at"],"title":"CaptureSourceInfoV1"},"CaptureSourceMetaOut":{"properties":{"key":{"type":"string","title":"Key"},"display_name":{"type":"string","title":"Display Name"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"}},"type":"object","required":["key","display_name"],"title":"CaptureSourceMetaOut","description":"One column of the org capture-status table (TOS-5372)."},"CaptureSourcePolicyUpdateV1":{"properties":{"default_recall_searchable":{"type":"boolean","title":"Default Recall Searchable"},"default_extraction_mode":{"anyOf":[{"type":"string","enum":["none","owner"]},{"type":"null"}],"title":"Default Extraction Mode"},"extraction_context_budget_chars":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Extraction Context Budget Chars"},"retention_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Retention Days"},"capture_mode":{"anyOf":[{"$ref":"#/components/schemas/CaptureMode"},{"type":"null"}]},"review_required":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Review Required"},"mark_new_captures_read":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Mark New Captures Read"},"archive_new_captures":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Archive New Captures"}},"type":"object","required":["default_recall_searchable","retention_days"],"title":"CaptureSourcePolicyUpdateV1"},"CaptureSourcePolicyV1":{"properties":{"default_recall_searchable":{"type":"boolean","title":"Default Recall Searchable"},"default_extraction_mode":{"type":"string","enum":["none","owner"],"title":"Default Extraction Mode"},"extraction_context_budget_chars":{"type":"integer","title":"Extraction Context Budget Chars"},"retention_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Retention Days"},"capture_mode":{"$ref":"#/components/schemas/CaptureMode"},"review_required":{"type":"boolean","title":"Review Required"},"mark_new_captures_read":{"type":"boolean","title":"Mark New Captures Read"},"archive_new_captures":{"type":"boolean","title":"Archive New Captures"}},"type":"object","required":["default_recall_searchable","default_extraction_mode","extraction_context_budget_chars","retention_days","capture_mode","review_required","mark_new_captures_read","archive_new_captures"],"title":"CaptureSourcePolicyV1"},"CaptureSourceRegistryEntryV1":{"properties":{"source":{"type":"string","title":"Source"},"agent_key":{"type":"string","title":"Agent Key"},"display_name":{"type":"string","title":"Display Name"},"short_description":{"type":"string","title":"Short Description"},"brand_color":{"type":"string","title":"Brand Color"},"avatar_svg_url":{"type":"string","title":"Avatar Svg Url"},"install_modal":{"type":"string","enum":["claude_code","codex_cli","grok_build","vscode","cline","cursor","generic_token","remote_connect","vendor_export","mcp_connector","account_capture"],"title":"Install Modal"},"docs_url":{"type":"string","title":"Docs Url"},"supports_in_app_reply":{"type":"boolean","title":"Supports In App Reply","default":false},"connect_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connect Url"},"connect_targets":{"items":{"$ref":"#/components/schemas/CaptureConnectTargetPublic"},"type":"array","title":"Connect Targets"}},"type":"object","required":["source","agent_key","display_name","short_description","brand_color","avatar_svg_url","install_modal","docs_url"],"title":"CaptureSourceRegistryEntryV1"},"CaptureSourceRegistryV1":{"properties":{"sources":{"items":{"$ref":"#/components/schemas/CaptureSourceRegistryEntryV1"},"type":"array","title":"Sources"}},"type":"object","required":["sources"],"title":"CaptureSourceRegistryV1"},"CaptureSourceStateUpdateV1":{"properties":{"blocked":{"type":"boolean","title":"Blocked"}},"type":"object","required":["blocked"],"title":"CaptureSourceStateUpdateV1"},"CaptureTestResultV1":{"properties":{"chat_id":{"type":"string","title":"Chat Id"},"source":{"type":"string","title":"Source"},"source_external_id":{"type":"string","title":"Source External Id"}},"type":"object","required":["chat_id","source","source_external_id"],"title":"CaptureTestResultV1"},"CardBlock":{"properties":{"type":{"type":"string","const":"card","title":"Type"},"title":{"type":"string","maxLength":120,"minLength":1,"title":"Title"},"subtitle":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Subtitle"},"body":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Body"},"badge":{"anyOf":[{"$ref":"#/components/schemas/UiBadge"},{"type":"null"}]},"actions":{"items":{"$ref":"#/components/schemas/UiButton"},"type":"array","maxItems":6,"title":"Actions"}},"additionalProperties":false,"type":"object","required":["type","title"],"title":"CardBlock"},"CatalogActionId":{"type":"string","enum":["connect","reconnect","disconnect","verify","configure","mint_observer_key","enable","disable","remove_from_library"],"title":"CatalogActionId","description":"Closed wire vocabulary for actions the generic UI may render."},"CatalogItemOut":{"properties":{"definition_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Definition Id"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"family_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Family Key"},"capabilities":{"items":{"type":"string"},"type":"array","title":"Capabilities"},"featured":{"type":"boolean","title":"Featured","default":false},"publisher_trust":{"type":"string","title":"Publisher Trust"},"vendor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vendor"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"catalog_key":{"type":"string","title":"Catalog Key"},"publication_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Publication Id"},"publication_series_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Publication Series Id"},"publication_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Publication Version"},"installed_publication_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Installed Publication Version"},"update_available":{"type":"boolean","title":"Update Available","default":false},"installed":{"type":"boolean","title":"Installed"},"installed_library_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Installed Library Ids"},"installation_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Installation Id"},"selected_installation_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Selected Installation Id"},"installation_count":{"type":"integer","title":"Installation Count","default":0},"installation_ambiguous":{"type":"boolean","title":"Installation Ambiguous","default":false},"installations":{"items":{"$ref":"#/components/schemas/InstallationSummaryOut"},"type":"array","title":"Installations"},"aggregate_state":{"anyOf":[{"$ref":"#/components/schemas/AggregateState"},{"type":"null"}]},"facets":{"items":{"$ref":"#/components/schemas/FacetStatusOut"},"type":"array","title":"Facets"},"connection_summaries":{"items":{"$ref":"#/components/schemas/ConnectionSummaryOut"},"type":"array","title":"Connection Summaries"},"connection_count":{"type":"integer","title":"Connection Count","default":0},"connection_noun":{"$ref":"#/components/schemas/ConnectionNoun","default":"account"},"setup":{"anyOf":[{"$ref":"#/components/schemas/SetupOut"},{"type":"null"}]},"attention_reasons":{"items":{"$ref":"#/components/schemas/AttentionReasonOut"},"type":"array","title":"Attention Reasons"},"viewer_setup_state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Viewer Setup State"},"viewer_setup_step":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Viewer Setup Step"},"connected_for_viewer":{"type":"boolean","title":"Connected For Viewer","default":false},"allowed_actions":{"items":{"$ref":"#/components/schemas/CatalogActionId"},"type":"array","title":"Allowed Actions"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"family_peer_installations":{"items":{"$ref":"#/components/schemas/FamilyPeerInstallationOut"},"type":"array","title":"Family Peer Installations"},"generated_at":{"type":"string","format":"date-time","title":"Generated At"}},"additionalProperties":false,"type":"object","required":["definition_id","slug","name","publisher_trust","catalog_key","installed","generated_at"],"title":"CatalogItemOut","description":"One catalog row: a definition plus its server-computed status for the viewer.\n\nThe three independent facts (decision D14): ``installed`` is a folder-level\nfact; ``connected_for_viewer`` is derived from the handler facets computed\nfrom the viewer's OWN evidence; and ``viewer_setup_state`` is derived from\nthat (``configured`` when connected, else ``None``; never stored, TOS-5190\nslice 3). Another member installing or connecting can never move the\nviewer's ``viewer_setup_state`` or ``connected_for_viewer``."},"CatchRate":{"properties":{"measured":{"type":"boolean","title":"Measured"},"label":{"type":"string","title":"Label"}},"additionalProperties":false,"type":"object","required":["measured","label"],"title":"CatchRate"},"CellReference":{"properties":{"installation_id":{"type":"string","format":"uuid","title":"Installation Id"},"scope_identity_id":{"type":"string","format":"uuid","title":"Scope Identity Id"},"relation":{"type":"string","enum":["connection_tool_catalog","integration_catalog_status","model_runs","messages"],"title":"Relation"},"key":{"anyOf":[{"$ref":"#/components/schemas/RowKey"},{"$ref":"#/components/schemas/UUIDRowKey"}],"title":"Key"},"column":{"type":"string","maxLength":63,"minLength":1,"title":"Column"},"json_path":{"items":{"type":"string"},"type":"array","maxItems":8,"title":"Json Path"}},"additionalProperties":false,"type":"object","required":["installation_id","scope_identity_id","relation","key","column"],"title":"CellReference"},"ChangeMemberRoleRequest":{"properties":{"role":{"type":"string","title":"Role"},"trust_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trust Mode"}},"type":"object","required":["role"],"title":"ChangeMemberRoleRequest"},"CharterDoc":{"properties":{"kind":{"type":"string","enum":["agent","organization","person","platform"],"title":"Kind","description":"Agent create/update accepts only agent. Other kinds are reserved for their corresponding identity APIs."},"purpose":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Purpose"},"accountabilities":{"items":{"$ref":"#/components/schemas/AccountabilityDoc"},"type":"array","title":"Accountabilities","default":[]},"authority":{"items":{"$ref":"#/components/schemas/AuthorityDoc"},"type":"array","title":"Authority","default":[]},"boundaries":{"items":{"$ref":"#/components/schemas/BoundaryDoc"},"type":"array","title":"Boundaries","default":[]},"delegate_purpose":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delegate Purpose"}},"additionalProperties":false,"type":"object","required":["kind"],"title":"CharterDoc"},"ChatCompletionRequest":{"properties":{"model":{"type":"string","title":"Model"},"messages":{"items":{"$ref":"#/components/schemas/GatewayChatMessage"},"type":"array","title":"Messages"},"stream":{"type":"boolean","title":"Stream","default":false},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature"},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens"},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P"},"stream_options":{"anyOf":[{"$ref":"#/components/schemas/GatewayStreamOptions"},{"type":"null"}]}},"type":"object","required":["model","messages"],"title":"ChatCompletionRequest"},"ChatDetail":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"container_kind":{"type":"string","title":"Container Kind"},"status":{"type":"string","title":"Status"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"default_agent_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Default Agent Identity Id"},"participants":{"items":{"$ref":"#/components/schemas/ParticipantData"},"type":"array","title":"Participants"},"messages":{"items":{"$ref":"#/components/schemas/MessageData"},"type":"array","title":"Messages"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"extraction_excluded":{"type":"boolean","title":"Extraction Excluded","default":false},"mind_context_disabled":{"type":"boolean","title":"Mind Context Disabled","default":false},"capture_disposition":{"anyOf":[{"$ref":"#/components/schemas/CaptureDispositionSummary"},{"type":"null"}]},"facilitation_mode":{"type":"string","enum":["natural","facilitated"],"title":"Facilitation Mode","default":"facilitated"},"facilitator_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Facilitator Identity Id"},"alternate_facilitator_identity_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Alternate Facilitator Identity Ids"},"max_responders":{"type":"integer","title":"Max Responders","default":3},"max_chain_depth":{"type":"integer","title":"Max Chain Depth","default":2},"top_k_claimants":{"type":"integer","title":"Top K Claimants","default":5},"max_concurrent_generations":{"type":"integer","title":"Max Concurrent Generations","default":3},"max_concurrent_generations_per_provider":{"type":"integer","title":"Max Concurrent Generations Per Provider","default":3},"max_root_container_spend_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Root Container Spend Usd"},"viewer_max_chat_spend_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Viewer Max Chat Spend Usd"},"viewer_chat_spend_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Viewer Chat Spend Usd"},"viewer_model_spend_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Viewer Model Spend Usd"},"viewer_agent_fees_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Viewer Agent Fees Usd"},"has_active_recipients":{"type":"boolean","title":"Has Active Recipients","default":true},"lifecycle":{"type":"string","enum":["live","concluded"],"title":"Lifecycle","default":"live"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"source_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Display Name"},"source_icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Icon Url"},"source_recognized":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Source Recognized"}},"type":"object","required":["id","title","container_kind","status"],"title":"ChatDetail"},"ChatLastMessagePreview":{"properties":{"sender_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender Name"},"sender_is_viewer":{"type":"boolean","title":"Sender Is Viewer","default":false},"text":{"type":"string","title":"Text"}},"type":"object","required":["text"],"title":"ChatLastMessagePreview","description":"TOS-7692: the latest visible message, flattened to plain text (<=140 chars)."},"ChatLearningDestination":{"properties":{"kind":{"type":"string","title":"Kind"},"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"display_name":{"type":"string","title":"Display Name"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"last_integrated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Integrated At"},"evaluation_count":{"type":"integer","title":"Evaluation Count"},"admission_rule":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admission Rule"},"audience":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audience"}},"type":"object","required":["kind","identity_id","display_name","status","last_integrated_at","evaluation_count","admission_rule","audience"],"title":"ChatLearningDestination"},"ChatLearningResponse":{"properties":{"destinations":{"items":{"$ref":"#/components/schemas/ChatLearningDestination"},"type":"array","title":"Destinations"}},"type":"object","required":["destinations"],"title":"ChatLearningResponse"},"ChatModelResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"provider":{"type":"string","title":"Provider"},"model_id":{"type":"string","title":"Model Id"},"display_name":{"type":"string","title":"Display Name"},"model_type":{"type":"string","title":"Model Type","default":"chat"},"has_contract":{"type":"boolean","title":"Has Contract","default":false},"recommended":{"type":"boolean","title":"Recommended","default":false},"is_supported":{"type":"boolean","title":"Is Supported","default":false},"supports_vision":{"type":"boolean","title":"Supports Vision","default":false},"recommended_vision":{"type":"boolean","title":"Recommended Vision","default":false},"params":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Params"}},"type":"object","required":["id","provider","model_id","display_name"],"title":"ChatModelResponse"},"ChatMuteOverrideListResponse":{"properties":{"overrides":{"items":{"$ref":"#/components/schemas/ChatMuteOverrideOut"},"type":"array","title":"Overrides"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["overrides"],"title":"ChatMuteOverrideListResponse","description":"A keyset-paginated page of per-conversation mute overrides (TOS-575, TOS-3280).\n\nOne row per chat the caller has explicitly muted/unmuted - bounded in\npractice by how many chats someone actively overrides, but with no\nenforced cap. ``next_cursor`` is ``None`` exactly when no older overrides\nremain; there is no separate ``truncated`` flag."},"ChatMuteOverrideOut":{"properties":{"chat_id":{"type":"string","format":"uuid","title":"Chat Id"},"override":{"type":"string","enum":["muted","unmuted"],"title":"Override"}},"type":"object","required":["chat_id","override"],"title":"ChatMuteOverrideOut"},"ChatNeedsYou":{"properties":{"reason":{"type":"string","enum":["approval","input","failed","question","mention"],"title":"Reason"},"since":{"type":"string","format":"date-time","title":"Since"}},"type":"object","required":["reason","since"],"title":"ChatNeedsYou","description":"TOS-7692: why the chat is waiting on the viewer, from structured state."},"ChatRepairImpact":{"properties":{"chat_id":{"type":"string","format":"uuid","title":"Chat Id"},"live_event_count":{"type":"integer","title":"Live Event Count"},"affected_mind_count":{"type":"integer","title":"Affected Mind Count"}},"type":"object","required":["chat_id","live_event_count","affected_mind_count"],"title":"ChatRepairImpact"},"ChatResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"container_kind":{"type":"string","title":"Container Kind"},"status":{"type":"string","title":"Status"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"root_container_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Root Container Id"},"topic_parent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Topic Parent Id"},"is_pinned":{"type":"boolean","title":"Is Pinned","default":false},"extraction_excluded":{"type":"boolean","title":"Extraction Excluded","default":false},"mind_context_disabled":{"type":"boolean","title":"Mind Context Disabled","default":false},"tenant_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Tenant Id"},"tenant_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Name"},"tenant_is_org":{"type":"boolean","title":"Tenant Is Org","default":false},"message_count":{"type":"integer","title":"Message Count"},"message_count_capped":{"type":"boolean","title":"Message Count Capped","default":false},"unread_count":{"type":"integer","title":"Unread Count","default":0},"last_message_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Message At"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"has_active_recipients":{"type":"boolean","title":"Has Active Recipients","default":true},"facilitation_mode":{"type":"string","enum":["natural","facilitated"],"title":"Facilitation Mode","default":"facilitated"},"facilitator_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Facilitator Identity Id"},"alternate_facilitator_identity_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Alternate Facilitator Identity Ids"},"max_responders":{"type":"integer","title":"Max Responders","default":3},"max_chain_depth":{"type":"integer","title":"Max Chain Depth","default":2},"top_k_claimants":{"type":"integer","title":"Top K Claimants","default":5},"max_concurrent_generations":{"type":"integer","title":"Max Concurrent Generations","default":3},"max_concurrent_generations_per_provider":{"type":"integer","title":"Max Concurrent Generations Per Provider","default":3},"max_root_container_spend_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Root Container Spend Usd"},"participant_count":{"type":"integer","title":"Participant Count","default":0},"participants":{"items":{"$ref":"#/components/schemas/ParticipantPreview"},"type":"array","title":"Participants"},"viewer_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Viewer Role"},"viewer_can_delete":{"type":"boolean","title":"Viewer Can Delete","default":false},"default_agent":{"anyOf":[{"$ref":"#/components/schemas/ParticipantPreview"},{"type":"null"}]},"muted":{"type":"boolean","title":"Muted","default":false},"group_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group Key"},"display_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Title"},"display_subtitle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Subtitle"},"lifecycle":{"type":"string","enum":["live","concluded"],"title":"Lifecycle","default":"live"},"concluded_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Concluded At"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"source_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Display Name"},"source_icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Icon Url"},"source_recognized":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Source Recognized"},"capture_connection_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Capture Connection Id"},"conversation_kind":{"anyOf":[{"type":"string","enum":["DIRECT","ROOM","TOPIC","RUN","CAPTURE","ASSISTANT"]},{"type":"null"}],"title":"Conversation Kind"},"is_person_conversation":{"type":"boolean","title":"Is Person Conversation","default":false},"last_message_preview":{"anyOf":[{"$ref":"#/components/schemas/ChatLastMessagePreview"},{"type":"null"}]},"needs_you":{"anyOf":[{"$ref":"#/components/schemas/ChatNeedsYou"},{"type":"null"}]},"working":{"anyOf":[{"$ref":"#/components/schemas/ChatWorking"},{"type":"null"}]}},"type":"object","required":["id","title","container_kind","status","message_count","last_message_at","started_at"],"title":"ChatResponse"},"ChatSearchHit":{"properties":{"chat_id":{"type":"string","format":"uuid","title":"Chat Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"last_message_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Message At"},"archived":{"type":"boolean","title":"Archived","default":false},"match_reason":{"type":"string","title":"Match Reason"},"matched_participant_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Matched Participant Name"}},"type":"object","required":["chat_id","match_reason"],"title":"ChatSearchHit","description":"A conversation that matched, carrying WHY it matched (TOS-3459)."},"ChatSearchResponse":{"properties":{"query":{"type":"string","title":"Query"},"people":{"items":{"$ref":"#/components/schemas/IdentitySearchHit"},"type":"array","title":"People"},"conversations":{"items":{"$ref":"#/components/schemas/ChatSearchHit"},"type":"array","title":"Conversations"},"did_you_mean":{"items":{"$ref":"#/components/schemas/IdentitySearchHit"},"type":"array","title":"Did You Mean"},"people_total":{"type":"integer","title":"People Total"},"conversations_total":{"type":"integer","title":"Conversations Total"},"people_truncated":{"type":"boolean","title":"People Truncated"},"conversations_truncated":{"type":"boolean","title":"Conversations Truncated"}},"type":"object","required":["query","people","conversations","did_you_mean","people_total","conversations_total","people_truncated","conversations_truncated"],"title":"ChatSearchResponse","description":"Tiered search results: people, then conversations, then near-misses."},"ChatTaskApprovalListResponse":{"properties":{"approvals":{"items":{"$ref":"#/components/schemas/ChatTaskApprovalResponse"},"type":"array","title":"Approvals"}},"type":"object","required":["approvals"],"title":"ChatTaskApprovalListResponse"},"ChatTaskApprovalResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"run_id":{"type":"string","format":"uuid","title":"Run Id"},"approval_type":{"type":"string","title":"Approval Type"},"status":{"type":"string","title":"Status"},"requested_by_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Requested By Identity Id"},"resolved_by_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Resolved By Identity Id"},"message":{"type":"string","title":"Message"},"payload":{"additionalProperties":true,"type":"object","title":"Payload"},"resolution_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution Note"},"requested_at":{"type":"string","format":"date-time","title":"Requested At"},"resolved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Resolved At"}},"type":"object","required":["id","run_id","approval_type","status","message","payload","requested_at"],"title":"ChatTaskApprovalResponse"},"ChatTaskArtifactListResponse":{"properties":{"artifacts":{"items":{"$ref":"#/components/schemas/ChatTaskArtifactResponse"},"type":"array","title":"Artifacts"}},"type":"object","required":["artifacts"],"title":"ChatTaskArtifactListResponse"},"ChatTaskArtifactResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"run_id":{"type":"string","format":"uuid","title":"Run Id"},"source":{"type":"string","title":"Source"},"title":{"type":"string","title":"Title"},"artifact_kind":{"type":"string","title":"Artifact Kind"},"uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uri"},"mime_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mime Type"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","run_id","source","title","artifact_kind","metadata","created_at"],"title":"ChatTaskArtifactResponse"},"ChatTaskEventListResponse":{"properties":{"events":{"items":{"$ref":"#/components/schemas/ChatTaskEventResponse"},"type":"array","title":"Events"},"next_before_seq":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Before Seq"},"has_more":{"type":"boolean","title":"Has More","default":false}},"type":"object","required":["events"],"title":"ChatTaskEventListResponse"},"ChatTaskEventResponse":{"properties":{"event_seq":{"type":"integer","title":"Event Seq","default":0},"id":{"type":"string","format":"uuid","title":"Id"},"run_id":{"type":"string","format":"uuid","title":"Run Id"},"event_type":{"type":"string","title":"Event Type"},"actor_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Actor Identity Id"},"runtime_actor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Runtime Actor"},"message":{"type":"string","title":"Message"},"payload":{"additionalProperties":true,"type":"object","title":"Payload"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","run_id","event_type","message","payload","created_at"],"title":"ChatTaskEventResponse"},"ChatTaskListResponse":{"properties":{"tasks":{"items":{"$ref":"#/components/schemas/ChatTaskResponse"},"type":"array","title":"Tasks"}},"type":"object","required":["tasks"],"title":"ChatTaskListResponse"},"ChatTaskResponse":{"properties":{"run_id":{"type":"string","format":"uuid","title":"Run Id"},"chat_id":{"type":"string","format":"uuid","title":"Chat Id"},"agent_identity_id":{"type":"string","format":"uuid","title":"Agent Identity Id"},"idempotency_key":{"type":"string","title":"Idempotency Key"},"status":{"type":"string","title":"Status"},"supervision_status":{"type":"string","title":"Supervision Status"},"runtime_kind":{"type":"string","title":"Runtime Kind"},"runtime_environment_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Runtime Environment Ref"},"runtime_external_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Runtime External Ref"},"supervision_metadata":{"additionalProperties":true,"type":"object","title":"Supervision Metadata"},"done":{"type":"boolean","title":"Done"},"response":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Response"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"user_message_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"User Message Id"},"assistant_message_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Assistant Message Id"},"progress":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Progress"},"contract":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Contract"},"outcome":{"anyOf":[{"type":"string","enum":["stopped_unfinished","continued"]},{"type":"null"}],"title":"Outcome"},"cancel_requested":{"type":"boolean","title":"Cancel Requested","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms"}},"type":"object","required":["run_id","chat_id","agent_identity_id","idempotency_key","status","supervision_status","runtime_kind","supervision_metadata","done","created_at"],"title":"ChatTaskResponse"},"ChatTaskRuntimeListResponse":{"properties":{"runtimes":{"items":{"$ref":"#/components/schemas/ChatTaskRuntimeResponse"},"type":"array","title":"Runtimes"}},"type":"object","required":["runtimes"],"title":"ChatTaskRuntimeListResponse"},"ChatTaskRuntimeResponse":{"properties":{"runtime_kind":{"type":"string","title":"Runtime Kind"},"label":{"type":"string","title":"Label"},"enabled":{"type":"boolean","title":"Enabled"},"default_environment_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Environment Ref"}},"type":"object","required":["runtime_kind","label","enabled"],"title":"ChatTaskRuntimeResponse"},"ChatWorking":{"properties":{"started_at":{"type":"string","format":"date-time","title":"Started At"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},"type":"object","required":["started_at"],"title":"ChatWorking","description":"TOS-7692: an agent turn or run in the chat is in progress right now."},"CheckRequest":{"properties":{"identity_ids":{"items":{"type":"string","format":"uuid"},"type":"array","maxItems":200,"title":"Identity Ids"}},"type":"object","required":["identity_ids"],"title":"CheckRequest"},"CheckResponse":{"properties":{"allowed_identity_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Allowed Identity Ids"},"recheck_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Recheck At"}},"type":"object","required":["allowed_identity_ids"],"title":"CheckResponse"},"CheckinView":{"properties":{"seq":{"type":"integer","title":"Seq"},"outcome":{"type":"string","title":"Outcome"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"},"payload":{"additionalProperties":true,"type":"object","title":"Payload"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["seq","outcome","detail","payload","created_at"],"title":"CheckinView","description":"One report this install sent about itself, verbatim.\n\nThe payload is returned exactly as it was sent rather than summarised. An\noperator who can only read our description of what we collected is being\nasked to take our word for it, which is the thing that makes telemetry\nobjectionable."},"ChecklistBlock":{"properties":{"type":{"type":"string","const":"checklist","title":"Type"},"items":{"items":{"$ref":"#/components/schemas/UiChecklistItem"},"type":"array","maxItems":20,"minItems":1,"title":"Items"},"interactive":{"type":"boolean","title":"Interactive","default":false}},"additionalProperties":false,"type":"object","required":["type","items"],"title":"ChecklistBlock"},"CheckoutSessionRequest":{"properties":{"amount_usd":{"type":"integer","title":"Amount Usd","description":"Whole dollars, 10 to 500"}},"additionalProperties":false,"type":"object","required":["amount_usd"],"title":"CheckoutSessionRequest"},"ClaimBody":{"properties":{"owner_token":{"type":"string","format":"uuid","title":"Owner Token"},"configured_channel":{"type":"string","enum":["stable","canary"],"title":"Configured Channel"},"force_install":{"type":"boolean","title":"Force Install","default":false}},"type":"object","required":["owner_token","configured_channel"],"title":"ClaimBody"},"ClaimResponse":{"properties":{"action":{"type":"string","enum":["busy","idle","check","install"],"title":"Action"},"request_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Request Id"},"channel":{"anyOf":[{"type":"string","enum":["stable","canary"]},{"type":"null"}],"title":"Channel"}},"type":"object","required":["action","request_id","channel"],"title":"ClaimResponse"},"CleanupRowIn":{"properties":{"id":{"type":"string","maxLength":200,"minLength":1,"title":"Id"},"action":{"type":"string","enum":["soft_delete","restore","purge","move_contents","move_connection","transfer_connection"],"title":"Action"},"kind":{"anyOf":[{"type":"string","enum":["folder","identity","connection"]},{"type":"null"}],"title":"Kind"},"destination":{"anyOf":[{"type":"string","maxLength":512,"minLength":1},{"type":"null"}],"title":"Destination"},"target_identity_id":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Target Identity Id"}},"additionalProperties":false,"type":"object","required":["id","action"],"title":"CleanupRowIn"},"CloneRequest":{"properties":{"source_template_id":{"type":"string","format":"uuid","title":"Source Template Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["source_template_id","name"],"title":"CloneRequest"},"CodeAttachmentInfo":{"properties":{"language":{"type":"string","title":"Language"},"line_count":{"type":"integer","title":"Line Count"},"run_command":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Run Command"},"group_size":{"type":"integer","title":"Group Size"},"previous_attachment_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Previous Attachment Id"}},"type":"object","required":["language","line_count","group_size"],"title":"CodeAttachmentInfo","description":"The ``code`` metadata block for a generate_code_file attachment (TOS-7015)."},"CommunicationPreset":{"type":"string","enum":["adaptive","clear_direct","warm_expressive","formal_precise"],"title":"CommunicationPreset"},"CommunicationProfile":{"properties":{"preset":{"$ref":"#/components/schemas/CommunicationPreset","default":"adaptive"},"schema_version":{"type":"integer","const":1,"title":"Schema Version","default":1},"overrides":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object","title":"Overrides"}},"additionalProperties":false,"type":"object","title":"CommunicationProfile"},"CompanyKnowledgeAudienceRequest":{"properties":{"audience":{"type":"string","title":"Audience"}},"type":"object","required":["audience"],"title":"CompanyKnowledgeAudienceRequest"},"CompleteBody":{"properties":{"owner_token":{"type":"string","format":"uuid","title":"Owner Token"},"request_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Request Id"},"channel":{"anyOf":[{"type":"string","enum":["stable","canary"]},{"type":"null"}],"title":"Channel"},"state":{"type":"string","enum":["succeeded","failed"],"title":"State"},"detail":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Detail"}},"type":"object","required":["owner_token","state"],"title":"CompleteBody"},"CompressionSummary":{"properties":{"messages_compressed":{"type":"integer","title":"Messages Compressed"},"summary_model":{"type":"string","title":"Summary Model"}},"type":"object","required":["messages_compressed","summary_model"],"title":"CompressionSummary","description":"Structured marker for a `role=\"system\"` compaction-summary message.\n\nSurfaced on `MessageData.compression_summary` so the UI can render the\n\"earlier conversation summarized\" divider without parsing raw metadata."},"CompressionSummaryResponse":{"properties":{"messages_compressed":{"type":"integer","title":"Messages Compressed"},"summary_model":{"type":"string","title":"Summary Model"}},"type":"object","required":["messages_compressed","summary_model"],"title":"CompressionSummaryResponse"},"ConciergeGuidanceAction":{"properties":{"kind":{"type":"string","enum":["navigation","highlight"],"title":"Kind"},"screen_id":{"type":"string","title":"Screen Id"},"screen_name":{"type":"string","title":"Screen Name"},"route":{"type":"string","title":"Route"},"target":{"type":"string","title":"Target"},"label":{"type":"string","title":"Label"},"reason":{"type":"string","title":"Reason","default":""},"requires_user_action":{"type":"boolean","title":"Requires User Action","default":true}},"type":"object","required":["kind","screen_id","screen_name","route","target","label"],"title":"ConciergeGuidanceAction"},"ConflictOut":{"properties":{"document_id":{"type":"string","format":"uuid","title":"Document Id"},"title":{"type":"string","title":"Title"},"path":{"type":"string","title":"Path"},"ours":{"type":"string","title":"Ours"},"theirs":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theirs"},"base":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Base"},"changed_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Changed By"},"changed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Changed At"},"changed_in_pr":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Changed In Pr"},"commit_sha":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Commit Sha"}},"type":"object","required":["document_id","title","path","ours","theirs","base"],"title":"ConflictOut"},"ConnectByCodeRequest":{"properties":{"code":{"type":"string","title":"Code"}},"type":"object","required":["code"],"title":"ConnectByCodeRequest"},"ConnectCardCopyOut":{"properties":{"label":{"type":"string","title":"Label"},"value":{"type":"string","title":"Value"}},"type":"object","required":["label","value"],"title":"ConnectCardCopyOut","description":"One copyable value on a connect card: a server URL or an install command."},"ConnectCardOut":{"properties":{"kind":{"type":"string","enum":["vendor_connector","cli_install","catalog_setup"],"title":"Kind"},"steps":{"items":{"type":"string"},"type":"array","title":"Steps"},"copy":{"anyOf":[{"$ref":"#/components/schemas/ConnectCardCopyOut"},{"type":"null"}]},"open_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Open Url"},"status":{"type":"string","enum":["not_connected","stale","connected"],"title":"Status"},"behavior_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Behavior Prompt"},"behavior_prompt_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Behavior Prompt Note"},"vendor_export":{"anyOf":[{"type":"string","enum":["openai","anthropic"]},{"type":"null"}],"title":"Vendor Export"}},"type":"object","required":["kind","steps","status"],"title":"ConnectCardOut","description":"TOS-4817 §3/§4: the data behind one tile's connect card.\n\n``kind`` picks the card layout: ``vendor_connector`` (ChatGPT/Claude - the\nsteps happen inside the vendor's own settings), ``cli_install`` (a coding\nagent - one terminal command), or ``catalog_setup`` (a generic catalog\nitem with no first-party copy, falling back to its own setup descriptor).\n``status`` is always derived from the same connection evidence the tile's\nown badge uses - see ``_connect_status_for_capture`` /\n``_connect_status_for_catalog_item`` for exactly which evidence maps to\nwhich value; never a default-to-connected guess."},"ConnectCodeResponse":{"properties":{"code":{"type":"string","title":"Code"}},"type":"object","required":["code"],"title":"ConnectCodeResponse"},"ConnectTargetRegistrationRequest":{"properties":{"source":{"type":"string","minLength":1,"title":"Source"},"instance_id":{"type":"string","maxLength":63,"minLength":1,"pattern":"^[a-z0-9][a-z0-9-]*$","title":"Instance Id"},"instance_label":{"type":"string","minLength":1,"title":"Instance Label"},"environment":{"type":"string","minLength":1,"title":"Environment"},"connect_url":{"type":"string","minLength":1,"title":"Connect Url"},"oauth_redirect_uris":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Oauth Redirect Uris"}},"type":"object","required":["source","instance_id","instance_label","environment","connect_url","oauth_redirect_uris"],"title":"ConnectTargetRegistrationRequest"},"ConnectedClientStatus":{"properties":{"client_id":{"type":"string","title":"Client Id"},"status":{"type":"string","enum":["connected","not_yet","stale"],"title":"Status"},"last_seen_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen At"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},"type":"object","required":["client_id","status"],"title":"ConnectedClientStatus"},"ConnectedClientsResponse":{"properties":{"clients":{"items":{"$ref":"#/components/schemas/ConnectedClientStatus"},"type":"array","title":"Clients"}},"type":"object","required":["clients"],"title":"ConnectedClientsResponse"},"ConnectionAccessItem":{"properties":{"instance_id":{"type":"string","format":"uuid","title":"Instance Id"},"configured_for_identity_id":{"type":"string","format":"uuid","title":"Configured For Identity Id"},"connection_mode":{"type":"string","title":"Connection Mode"},"connection_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Connection Id"},"account_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Label"},"owner_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner Identity Id"},"owner_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Display Name"},"owner_is_caller":{"type":"boolean","title":"Owner Is Caller","default":false},"subject_uses_owner_connection":{"type":"boolean","title":"Subject Uses Owner Connection","default":false},"access_scope":{"type":"string","title":"Access Scope"},"capability_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capability Role"},"available_to":{"items":{"$ref":"#/components/schemas/AvailableToEntry"},"type":"array","title":"Available To"},"available_to_truncated":{"type":"boolean","title":"Available To Truncated","default":false},"last_test_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Test At"},"last_test_success":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Last Test Success"}},"type":"object","required":["instance_id","configured_for_identity_id","connection_mode","access_scope"],"title":"ConnectionAccessItem"},"ConnectionAccountAccessOut":{"properties":{"instance_id":{"type":"string","format":"uuid","title":"Instance Id"},"selected_connection_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Selected Connection Id"},"capability_roles":{"items":{"type":"string"},"type":"array","title":"Capability Roles"},"available_tools":{"items":{"$ref":"#/components/schemas/ConnectionToolOptionOut"},"type":"array","title":"Available Tools"},"accounts":{"items":{"$ref":"#/components/schemas/ConnectionAccountChoiceOut"},"type":"array","title":"Accounts"}},"type":"object","required":["instance_id","selected_connection_id","capability_roles","available_tools","accounts"],"title":"ConnectionAccountAccessOut"},"ConnectionAccountChoiceOut":{"properties":{"connection_id":{"type":"string","format":"uuid","title":"Connection Id"},"owner_identity_id":{"type":"string","format":"uuid","title":"Owner Identity Id"},"owner_display_name":{"type":"string","title":"Owner Display Name"},"status":{"type":"string","title":"Status"},"authorization_kind":{"type":"string","enum":["owner","grant"],"title":"Authorization Kind"},"grant_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Grant Id"},"allowed_tools":{"items":{"type":"string"},"type":"array","title":"Allowed Tools"},"allowed_capabilities":{"items":{"type":"string"},"type":"array","title":"Allowed Capabilities"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"account_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Email"}},"type":"object","required":["connection_id","owner_identity_id","owner_display_name","status","authorization_kind","grant_id","allowed_tools","allowed_capabilities","expires_at"],"title":"ConnectionAccountChoiceOut"},"ConnectionAccountSelectionBody":{"properties":{"connection_id":{"type":"string","format":"uuid","title":"Connection Id"}},"type":"object","required":["connection_id"],"title":"ConnectionAccountSelectionBody"},"ConnectionActionRequest":{"properties":{"connection_ref":{"type":"string","maxLength":200,"minLength":1,"title":"Connection Ref"}},"additionalProperties":false,"type":"object","required":["connection_ref"],"title":"ConnectionActionRequest","description":"Select one opaque viewer-scoped connection summary for an action."},"ConnectionActionResultOut":{"properties":{"installation_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Installation Id"},"connection_ref":{"type":"string","title":"Connection Ref"},"action":{"$ref":"#/components/schemas/CatalogActionId"},"external_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Url"}},"additionalProperties":false,"type":"object","required":["installation_id","connection_ref","action"],"title":"ConnectionActionResultOut","description":"Authorized per-connection action result without a fake connection verdict.\n\n``external_url`` is present only when the server resolves a trusted target\nfrom stored connection evidence. It is never accepted from the caller."},"ConnectionCheckCard":{"properties":{"subject_identity_id":{"type":"string","title":"Subject Identity Id"},"subject_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject Name"},"viewer_identity_id":{"type":"string","title":"Viewer Identity Id"},"checked_at":{"type":"string","title":"Checked At"},"counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Counts"},"groups":{"items":{"$ref":"#/components/schemas/ConnectionCheckGroup"},"type":"array","title":"Groups"}},"type":"object","required":["subject_identity_id","viewer_identity_id","checked_at","counts"],"title":"ConnectionCheckCard","description":"The result of ``test_connections``, rendered under the reply (TOS-7418).\n\nBuilt by ``services/integrations/connection_check.py`` and never phrased by\nthe model, so the rows are exactly what the probes and the Connections\npage's own health read found."},"ConnectionCheckConnection":{"properties":{"instance_id":{"type":"string","title":"Instance Id"},"account":{"type":"string","title":"Account"},"status":{"type":"string","enum":["working","limited","broken"],"title":"Status"},"label":{"type":"string","title":"Label"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"next_action":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Action"},"can_repair":{"type":"boolean","title":"Can Repair","default":true},"tested_now":{"type":"boolean","title":"Tested Now","default":false},"last_tested_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Tested At"},"affected_agents":{"items":{"type":"string"},"type":"array","title":"Affected Agents"}},"type":"object","required":["instance_id","account","status","label"],"title":"ConnectionCheckConnection","description":"One connection's row on a connection-check card (TOS-7418)."},"ConnectionCheckGroup":{"properties":{"connector":{"type":"string","title":"Connector"},"name":{"type":"string","title":"Name"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"definition_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Definition Id"},"status":{"type":"string","enum":["working","limited","broken"],"title":"Status"},"connections":{"items":{"$ref":"#/components/schemas/ConnectionCheckConnection"},"type":"array","title":"Connections"}},"type":"object","required":["connector","name","status"],"title":"ConnectionCheckGroup","description":"One connector's connections on a connection-check card (TOS-7418)."},"ConnectionConversationPageResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ConnectionConversationResponse"},"type":"array","title":"Items"},"next_offset":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Offset"},"archived_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Archived Count"}},"type":"object","required":["items","next_offset"],"title":"ConnectionConversationPageResponse"},"ConnectionConversationResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"container_kind":{"type":"string","enum":["direct_chat","topic","room"],"title":"Container Kind"},"message_count":{"type":"integer","title":"Message Count"},"message_count_capped":{"type":"boolean","title":"Message Count Capped","default":false},"last_message_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Message At"},"last_message_preview":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Message Preview"},"unread_count":{"type":"integer","title":"Unread Count","default":0},"archived":{"type":"boolean","title":"Archived","default":false},"participants":{"items":{"$ref":"#/components/schemas/ParticipantPreview"},"type":"array","title":"Participants"},"participant_count":{"type":"integer","title":"Participant Count","default":0}},"type":"object","required":["id","title","container_kind","message_count","last_message_at","last_message_preview"],"title":"ConnectionConversationResponse"},"ConnectionConversationScope":{"type":"string","enum":["direct","rooms","archived"]},"ConnectionDefaultsResponse":{"properties":{"show_status":{"type":"boolean","title":"Show Status"},"read_receipts":{"type":"boolean","title":"Read Receipts"},"typing_indicators":{"type":"boolean","title":"Typing Indicators"}},"type":"object","required":["show_status","read_receipts","typing_indicators"],"title":"ConnectionDefaultsResponse"},"ConnectionDispositionUpdateRequest":{"properties":{"mark_new_captures_read":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Mark New Captures Read"},"archive_new_captures":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Archive New Captures"}},"type":"object","title":"ConnectionDispositionUpdateRequest"},"ConnectionFailureDetail":{"properties":{"code":{"type":"string","title":"Code"},"failed_check":{"type":"string","title":"Failed Check"},"cause":{"type":"string","title":"Cause"},"preserved":{"type":"string","title":"Preserved"},"diagnostic_reference":{"type":"string","title":"Diagnostic Reference"},"next_action":{"type":"string","title":"Next Action"}},"type":"object","required":["code","failed_check","cause","preserved","diagnostic_reference","next_action"],"title":"ConnectionFailureDetail","description":"The four named fields the connection-failure screen renders, plus the action.\n\nPopulated from the closed ``IntegrationFailureCode`` taxonomy (TOS-2708), so\nevery failure category — OAuth denial, wrong account, invalid/expired key,\nmissing scopes, failed safe probe, rate limit, unreachable endpoint,\npartially unavailable tools — resolves to named copy rather than an error\nstring the user has to interpret."},"ConnectionGrantCreateBody":{"properties":{"requires_owner_presence":{"type":"boolean","title":"Requires Owner Presence","default":false},"recipient_identity_id":{"type":"string","format":"uuid","title":"Recipient Identity Id"},"allowed_tools":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Allowed Tools"},"allowed_capabilities":{"items":{"type":"string"},"type":"array","maxItems":100,"title":"Allowed Capabilities"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"scope_tenant_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Scope Tenant Id"}},"type":"object","required":["recipient_identity_id","allowed_tools"],"title":"ConnectionGrantCreateBody"},"ConnectionGrantOut":{"properties":{"requires_owner_presence":{"type":"boolean","title":"Requires Owner Presence","default":false},"id":{"type":"string","format":"uuid","title":"Id"},"connection_id":{"type":"string","format":"uuid","title":"Connection Id"},"instance_id":{"type":"string","format":"uuid","title":"Instance Id"},"recipient_identity_id":{"type":"string","format":"uuid","title":"Recipient Identity Id"},"recipient_display_name":{"type":"string","title":"Recipient Display Name"},"allowed_tools":{"items":{"type":"string"},"type":"array","title":"Allowed Tools"},"allowed_capabilities":{"items":{"type":"string"},"type":"array","title":"Allowed Capabilities"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"scope_tenant_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Scope Tenant Id"},"scope_tenant_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope Tenant Name"}},"type":"object","required":["id","connection_id","instance_id","recipient_identity_id","recipient_display_name","allowed_tools","allowed_capabilities","expires_at","revoked_at","created_at"],"title":"ConnectionGrantOut"},"ConnectionGrantUpdateBody":{"properties":{"allowed_tools":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1},{"type":"null"}],"title":"Allowed Tools"},"allowed_capabilities":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":100},{"type":"null"}],"title":"Allowed Capabilities"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"scope_tenant_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Scope Tenant Id"},"requires_owner_presence":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Requires Owner Presence"}},"additionalProperties":false,"type":"object","title":"ConnectionGrantUpdateBody"},"ConnectionHealthOut":{"properties":{"status":{"type":"string","enum":["ready","degraded","needs_attention","unknown"],"title":"Status"},"credential_status":{"type":"string","enum":["connected","needs_reconnect","admin_repair","unreachable","missing"],"title":"Credential Status"},"healthy_tools":{"type":"integer","title":"Healthy Tools"},"total_tools":{"type":"integer","title":"Total Tools"},"affected_tools":{"items":{"$ref":"#/components/schemas/AffectedToolOut"},"type":"array","title":"Affected Tools"},"healthy_summary":{"type":"string","title":"Healthy Summary"},"summary":{"type":"string","title":"Summary"},"checked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Checked At"},"failure":{"anyOf":[{"$ref":"#/components/schemas/ConnectionFailureDetail"},{"type":"null"}]}},"type":"object","required":["status","credential_status","healthy_tools","total_tools","healthy_summary","summary"],"title":"ConnectionHealthOut","description":"Health of one connection, rendered without the client inventing anything.\n\n``status`` carries the Connected-filter buckets directly (``ready`` /\n``degraded`` / ``needs_attention`` / ``unknown``), so the list filters and\nthe degraded/failure screens all read one field. ``credential_status`` keeps\nthe underlying evidence-ladder value for callers that need it.\n\n``unknown`` means CONNECTED BUT NOT YET MEASURED — a credential-free\nintegration that owns no connection row, or a connection probed before the\nrollup existed. There is no evidence of a problem, so it belongs in the\n**Ready** filter bucket; render the detail as \"Not checked yet\" rather than\nshowing ``summary`` (which would read \"0 of 0 tools available\"). It is a\ndistinct value rather than being folded into ``ready`` because claiming \"no\ncapability is failing\" when nothing was measured is a fabrication."},"ConnectionNoun":{"type":"string","enum":["account","agent","environment","server"],"title":"ConnectionNoun","description":"User-facing noun for one separately manageable connection."},"ConnectionPermissionOut":{"properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"}},"type":"object","required":["key","label"],"title":"ConnectionPermissionOut","description":"TOS-6943: one permission a connection holds, from connector permission data."},"ConnectionRegisterRequest":{"properties":{"source":{"type":"string","minLength":1,"title":"Source"},"instance_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Instance Id"},"external_org_id":{"type":"string","minLength":1,"title":"External Org Id"},"org_name":{"type":"string","minLength":1,"title":"Org Name"},"agency_user_subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agency User Subject"}},"type":"object","required":["source","external_org_id","org_name"],"title":"ConnectionRegisterRequest"},"ConnectionRequestListResponse":{"properties":{"requests":{"items":{"$ref":"#/components/schemas/ConnectionRequestResponse"},"type":"array","title":"Requests"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["requests"],"title":"ConnectionRequestListResponse","description":"A keyset-paginated page of connection requests (TOS-3280).\n\nUnfiltered, this walks every request ever sent or received - accepted,\ndeclined, and cancelled included - so it is unbounded even though\n``status='pending'`` alone stays small. ``next_cursor`` is ``None``\nexactly when no older requests remain; there is no separate ``truncated``\nflag."},"ConnectionRequestResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"from_identity_id":{"type":"string","format":"uuid","title":"From Identity Id"},"to_identity_id":{"type":"string","format":"uuid","title":"To Identity Id"},"from_identity_display_name":{"type":"string","title":"From Identity Display Name"},"to_identity_display_name":{"type":"string","title":"To Identity Display Name"},"from_identity_avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Identity Avatar Url"},"to_identity_avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Identity Avatar Url"},"from_identity_kind":{"type":"string","title":"From Identity Kind"},"to_identity_kind":{"type":"string","title":"To Identity Kind"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"responded_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Responded At"},"can_ask_again_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Can Ask Again At"}},"type":"object","required":["id","from_identity_id","to_identity_id","from_identity_display_name","to_identity_display_name","from_identity_avatar_url","to_identity_avatar_url","from_identity_kind","to_identity_kind","message","status","created_at","responded_at"],"title":"ConnectionRequestResponse"},"ConnectionRow":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"state":{"type":"string","enum":["live","broken"],"title":"State"},"account_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Label"},"connection_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Connection Id"},"capability_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Capability Id"},"blocker":{"type":"string","enum":["none","needs_credentials","needs_reconnect"],"title":"Blocker","default":"none"}},"additionalProperties":false,"type":"object","required":["slug","name","state"],"title":"ConnectionRow"},"ConnectionSettingsResponse":{"properties":{"connection_id":{"type":"string","format":"uuid","title":"Connection Id"},"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"show_status":{"type":"boolean","title":"Show Status"},"read_receipts":{"type":"boolean","title":"Read Receipts"},"typing_indicators":{"type":"boolean","title":"Typing Indicators"}},"type":"object","required":["connection_id","identity_id","show_status","read_receipts","typing_indicators"],"title":"ConnectionSettingsResponse"},"ConnectionSummaryOut":{"properties":{"ref":{"type":"string","title":"Ref"},"label":{"type":"string","title":"Label"},"state":{"$ref":"#/components/schemas/FacetState"},"scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope"},"evidence_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Evidence At"},"personal":{"type":"boolean","title":"Personal","default":true},"actions":{"items":{"$ref":"#/components/schemas/CatalogActionId"},"type":"array","title":"Actions"},"capture_connection_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Capture Connection Id"}},"additionalProperties":false,"type":"object","required":["ref","label","state"],"title":"ConnectionSummaryOut","description":"A safe, opaque view of one viewer-scoped connection (from ``ConnectionSummary``).\n\nNever carries credential material; ``ref`` is the opaque handle action routes\naccept, ``personal`` marks the viewer's own connection versus a shared one."},"ConnectionTaskSelectionRequest":{"properties":{"account_id":{"type":"string","format":"uuid","title":"Account Id"}},"type":"object","required":["account_id"],"title":"ConnectionTaskSelectionRequest"},"ConnectionTestResult":{"properties":{"success":{"type":"boolean","title":"Success"},"tool_count":{"type":"integer","title":"Tool Count","default":0},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"duration_ms":{"type":"integer","title":"Duration Ms"},"failure_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Kind"},"evidence":{"type":"string","enum":["credential","transport","none"],"title":"Evidence","default":"credential"},"http_status":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Http Status"},"provider_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Reason"},"missing_scopes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Missing Scopes"},"probe_is_error":{"type":"boolean","title":"Probe Is Error","default":false},"account_mismatch":{"type":"boolean","title":"Account Mismatch","default":false},"failure_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Code"},"diagnostic_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Diagnostic Reference"},"tool_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tool Names"},"health":{"anyOf":[{"$ref":"#/components/schemas/ConnectionHealthOut"},{"type":"null"}]}},"type":"object","required":["success","duration_ms"],"title":"ConnectionTestResult","description":"Returned by RegistrationService.test_connection."},"ConnectionToolOptionOut":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"tier":{"type":"string","title":"Tier"}},"type":"object","required":["name","description","tier"],"title":"ConnectionToolOptionOut"},"ConnectionsListResponse":{"properties":{"connections":{"items":{"$ref":"#/components/schemas/thinqos__api__connections__ConnectionResponse"},"type":"array","title":"Connections"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["connections"],"title":"ConnectionsListResponse","description":"A keyset-paginated page of the caller's network (TOS-3280).\n\nOwned agents and owners are bounded by the ownership graph, not the\nnetwork, so they are returned in full on the FIRST page only (no\n``cursor``); they do not repeat on later pages. The literal \"connection\"\nbucket - the one that grows to hundreds for a networked account - is\nkeyset-paginated. ``next_cursor`` is ``None`` exactly when no further\nconnections remain; there is no separate ``truncated`` flag."},"ConsentOptionsOut":{"properties":{"declared":{"type":"boolean","title":"Declared"},"is_new":{"type":"boolean","title":"Is New"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"purpose":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Purpose"},"permissions":{"items":{"$ref":"#/components/schemas/ConsentPermissionOut"},"type":"array","title":"Permissions"},"current":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Current"},"provider_scope_notes":{"additionalProperties":{"type":"string"},"type":"object","title":"Provider Scope Notes"},"try_it":{"items":{"type":"string"},"type":"array","title":"Try It"}},"type":"object","required":["declared","is_new"],"title":"ConsentOptionsOut","description":"What the \"Choose what it can do\" step renders for one connection (TOS-6946).\n\n``declared`` false means the connector declares no permissions and the\npage keeps today's connect flow. ``permissions`` lists only what can be\nasked for (what today's profile scopes already grant). ``current`` is what\na reconnect keeps when the person changes nothing; ``None`` for a new\nconnection, which starts blank."},"ConsentPermissionOut":{"properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"description":{"type":"string","title":"Description"},"implies":{"items":{"type":"string"},"type":"array","title":"Implies"},"risk":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Risk"},"provider_scopes":{"items":{"type":"string"},"type":"array","title":"Provider Scopes"}},"type":"object","required":["key","label","description","implies","risk","provider_scopes"],"title":"ConsentPermissionOut"},"ContextItem":{"properties":{"kind":{"type":"string","title":"Kind"},"title":{"type":"string","title":"Title"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"},"status_label":{"type":"string","title":"Status Label"},"status_tone":{"type":"string","title":"Status Tone"},"mind_repair_evaluation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mind Repair Evaluation Id"},"mind_repair_proposition_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mind Repair Proposition Id"},"mind_context_owner_identity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mind Context Owner Identity Id"}},"type":"object","required":["kind","title","detail","status_label","status_tone"],"title":"ContextItem"},"ContextUsageResponse":{"properties":{"context_window":{"type":"integer","title":"Context Window"},"used_tokens":{"type":"integer","title":"Used Tokens"},"usage_percent":{"type":"integer","title":"Usage Percent"},"floor_tokens":{"type":"integer","title":"Floor Tokens","default":0},"history_tokens":{"type":"integer","title":"History Tokens","default":0}},"type":"object","required":["context_window","used_tokens","usage_percent"],"title":"ContextUsageResponse","description":"The logged-in viewer's OWN context-window usage for a chat (TOS-761).\n\nStrictly scoped to the caller's identity: every identity maintains its own\ncontext window (humans included, via augmented/agent mode), keyed by\n``(chat, identity)``, so you never see another participant's. ``usage_percent``\nis honest *token fill*: it uses the post-boundary high-water chat model-run\nprompt tokens when available, otherwise the viewer's active rolling summary\n+ bounded raw window (``used_tokens``), measured against the resolved model\ninput ceiling (``context_window``). ``floor_tokens`` is the chat-independent\nfixed prompt cost and ``history_tokens`` is the chat's summary plus bounded\nraw-window contribution. The token figures are a UI gauge, not billing numbers."},"ContractInfo":{"properties":{"current_version":{"type":"string","title":"Current Version"},"supported_versions":{"items":{"type":"string"},"type":"array","title":"Supported Versions"},"schema_url":{"type":"string","title":"Schema Url"},"limits":{"$ref":"#/components/schemas/IngestContractLimits"},"v2_schema_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"V2 Schema Url"},"v2_limits":{"anyOf":[{"$ref":"#/components/schemas/IngestContractV2Limits"},{"type":"null"}]}},"type":"object","required":["current_version","supported_versions","schema_url"],"title":"ContractInfo"},"ConversationContainerResponse":{"properties":{"container_id":{"type":"string","format":"uuid","title":"Container Id"},"container_kind":{"type":"string","title":"Container Kind"},"display_title":{"type":"string","title":"Display Title"},"display_subtitle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Subtitle"},"group_key":{"type":"string","title":"Group Key"},"participant_count":{"type":"integer","title":"Participant Count"},"participant_preview":{"items":{"$ref":"#/components/schemas/ParticipantPreviewResponse"},"type":"array","title":"Participant Preview"},"last_message_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Message At"},"unread_count":{"type":"integer","title":"Unread Count"},"message_count":{"type":"integer","title":"Message Count"},"message_count_capped":{"type":"boolean","title":"Message Count Capped","default":false},"is_pinned":{"type":"boolean","title":"Is Pinned"},"root_container_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Root Container Id"},"topic_parent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Topic Parent Id"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["container_id","container_kind","display_title","display_subtitle","group_key","participant_count","participant_preview","last_message_at","unread_count","message_count","is_pinned","root_container_id","topic_parent_id","updated_at"],"title":"ConversationContainerResponse"},"ConversationContainersResponse":{"properties":{"containers":{"items":{"$ref":"#/components/schemas/ConversationContainerResponse"},"type":"array","title":"Containers"}},"type":"object","required":["containers"],"title":"ConversationContainersResponse"},"ConversationExportChatResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"container_kind":{"type":"string","title":"Container Kind"}},"type":"object","required":["id","title","container_kind"],"title":"ConversationExportChatResponse"},"ConversationExportResponse":{"properties":{"format_version":{"type":"string","const":"conversation-export-v1","title":"Format Version","default":"conversation-export-v1"},"chat":{"$ref":"#/components/schemas/ConversationExportChatResponse"},"messages":{"items":{"$ref":"#/components/schemas/MessageResponse"},"type":"array","title":"Messages"},"message_count":{"type":"integer","title":"Message Count"},"exported_at":{"type":"string","format":"date-time","title":"Exported At"}},"type":"object","required":["chat","message_count","exported_at"],"title":"ConversationExportResponse"},"ConvertToRoomRequest":{"properties":{"title":{"type":"string","maxLength":200,"minLength":1,"title":"Title"}},"type":"object","required":["title"],"title":"ConvertToRoomRequest"},"CostLine":{"properties":{"capability":{"type":"string","title":"Capability"},"model":{"type":"string","title":"Model"},"provider":{"type":"string","title":"Provider"},"input_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Input Tokens"},"output_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Tokens"},"cache_read_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cache Read Tokens"},"cache_creation_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cache Creation Tokens"},"cost_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cost Usd"},"cost_usd_charged":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cost Usd Charged"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms"},"turn_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Turn Id"}},"type":"object","required":["capability","model","provider","input_tokens","output_tokens","cost_usd","duration_ms"],"title":"CostLine"},"CostReportRowOut":{"properties":{"environment_id":{"type":"string","title":"Environment Id"},"environment_name":{"type":"string","title":"Environment Name"},"ownership_kind":{"type":"string","title":"Ownership Kind"},"owner_identity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Identity Id"},"statement_count":{"type":"integer","title":"Statement Count"},"total_statement_duration_ms":{"type":"number","title":"Total Statement Duration Ms"},"ai4o_infra_cost_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ai4O Infra Cost Usd"},"ai4o_infra_cost_note":{"type":"string","title":"Ai4O Infra Cost Note"}},"type":"object","required":["environment_id","environment_name","ownership_kind","owner_identity_id","statement_count","total_statement_duration_ms","ai4o_infra_cost_usd","ai4o_infra_cost_note"],"title":"CostReportRowOut"},"CountBucket":{"properties":{"key":{"type":"string","title":"Key"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["key","count"],"title":"CountBucket"},"CoverageOut":{"properties":{"source_id":{"type":"string","format":"uuid","title":"Source Id"},"status":{"type":"string","title":"Status"},"swept_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Swept At"},"discovered":{"type":"integer","title":"Discovered"},"indexed":{"type":"integer","title":"Indexed"},"unchanged":{"type":"integer","title":"Unchanged"},"skipped":{"type":"integer","title":"Skipped"},"failed":{"type":"integer","title":"Failed"},"archived_this_sweep":{"type":"integer","title":"Archived This Sweep"},"restored_this_sweep":{"type":"integer","title":"Restored This Sweep"},"reconciled":{"type":"boolean","title":"Reconciled"},"reconcile_skipped_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reconcile Skipped Reason"},"last_full_reconcile_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Full Reconcile At"},"failed_reasons":{"additionalProperties":{"type":"integer"},"type":"object","title":"Failed Reasons"},"skipped_reasons":{"additionalProperties":{"type":"integer"},"type":"object","title":"Skipped Reasons"},"bytes_used":{"type":"integer","title":"Bytes Used"},"max_pages":{"type":"integer","title":"Max Pages"},"max_bytes":{"type":"integer","title":"Max Bytes"},"last_manual_refresh_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Manual Refresh At"}},"type":"object","required":["source_id","status","swept_at","discovered","indexed","unchanged","skipped","failed","archived_this_sweep","restored_this_sweep","reconciled","reconcile_skipped_reason","last_full_reconcile_at","failed_reasons","skipped_reasons","bytes_used","max_pages","max_bytes","last_manual_refresh_at"],"title":"CoverageOut","description":"TOS-5067: what a website's last sweep actually found, not just whether it ran."},"CoverageSummaryOut":{"properties":{"status":{"type":"string","title":"Status"},"swept_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Swept At"},"discovered":{"type":"integer","title":"Discovered"},"indexed":{"type":"integer","title":"Indexed"},"unchanged":{"type":"integer","title":"Unchanged"},"skipped":{"type":"integer","title":"Skipped"},"failed":{"type":"integer","title":"Failed"}},"type":"object","required":["status","swept_at","discovered","indexed","unchanged","skipped","failed"],"title":"CoverageSummaryOut","description":"What a website's last sweep found (TOS-5067), for the sync list.\n\n``status`` is ``ok`` only when reconciliation actually ran that sweep,\nnever merely because the fetch worked; see ``web_source_coverage._status``."},"CreateAgentFromInstance":{"properties":{"display_name":{"type":"string","title":"Display Name"}},"type":"object","required":["display_name"],"title":"CreateAgentFromInstance"},"CreateAgentTriggerRequest":{"properties":{"agent_identity_id":{"type":"string","format":"uuid","title":"Agent Identity Id"},"target_chat_id":{"type":"string","format":"uuid","title":"Target Chat Id"},"instruction":{"type":"string","maxLength":8000,"minLength":1,"title":"Instruction"},"trigger_kind":{"type":"string","enum":["time_once","time_recurring"],"title":"Trigger Kind"},"run_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Run At"},"interval_minutes":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Interval Minutes"},"cron_expr":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Cron Expr"},"timezone":{"type":"string","title":"Timezone","default":"UTC"},"action_type":{"type":"string","const":"chat","title":"Action Type","default":"chat"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"context_mode":{"type":"string","enum":["adaptive","literal"],"title":"Context Mode","default":"adaptive"}},"type":"object","required":["agent_identity_id","target_chat_id","instruction","trigger_kind"],"title":"CreateAgentTriggerRequest"},"CreateChatRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"container_kind":{"anyOf":[{"type":"string","enum":["room","direct_chat","self_chat","system"]},{"type":"null"}],"title":"Container Kind"},"agent_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Identity Id"},"member_identity_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Member Identity Ids"},"org_tenant_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Org Tenant Id"}},"type":"object","title":"CreateChatRequest"},"CreateChatResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"container_kind":{"type":"string","title":"Container Kind"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["id","title","container_kind"],"title":"CreateChatResponse"},"CreateCleanupBatchIn":{"properties":{"rows":{"anyOf":[{"items":{"$ref":"#/components/schemas/CleanupRowIn"},"type":"array","maxItems":2000},{"type":"null"}],"title":"Rows"},"ids":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":2000},{"type":"null"}],"title":"Ids"},"action":{"anyOf":[{"type":"string","enum":["soft_delete","restore","purge","move_contents","move_connection","transfer_connection"]},{"type":"null"}],"title":"Action"},"kind":{"anyOf":[{"type":"string","enum":["folder","identity","connection"]},{"type":"null"}],"title":"Kind"},"destination":{"anyOf":[{"type":"string","maxLength":512,"minLength":1},{"type":"null"}],"title":"Destination"},"target_identity_id":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Target Identity Id"}},"additionalProperties":false,"type":"object","title":"CreateCleanupBatchIn","description":"Either ``rows`` (an action per row) or ``ids`` with one ``action`` for all.\n\n``destination`` with ``ids`` applies to every row (move_contents only), and\nso does ``target_identity_id`` (transfer_connection only)."},"CreateDirectChatRequest":{"properties":{"other_identity_id":{"type":"string","format":"uuid","title":"Other Identity Id"},"force_new":{"type":"boolean","title":"Force New","default":false},"primary":{"type":"boolean","title":"Primary","default":false}},"type":"object","required":["other_identity_id"],"title":"CreateDirectChatRequest"},"CreateKBRequest":{"properties":{"name":{"type":"string","title":"Name"},"organization_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Organization Id","description":"Optional. The id of an organization you are an owner or admin of. When set, the new folder belongs to that organization instead of your personal account; you still become its admin."}},"type":"object","required":["name"],"title":"CreateKBRequest"},"CreateKeyRequest":{"properties":{"name":{"type":"string","title":"Name"},"kind":{"type":"string","const":"tq","title":"Kind","default":"tq"}},"type":"object","required":["name"],"title":"CreateKeyRequest"},"CreateKeyResponse":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"key_prefix":{"type":"string","title":"Key Prefix"},"last_used_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Used At"},"created_at":{"type":"string","title":"Created At"},"kind":{"type":"string","const":"tq","title":"Kind"},"raw_key":{"type":"string","title":"Raw Key"}},"type":"object","required":["id","name","key_prefix","last_used_at","created_at","kind","raw_key"],"title":"CreateKeyResponse"},"CreateLifecycleProfileRequest":{"properties":{"manager_identity_id":{"type":"string","format":"uuid","title":"Manager Identity Id"},"slug":{"type":"string","maxLength":64,"minLength":1,"title":"Slug"},"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Description"},"definition":{"additionalProperties":true,"type":"object","title":"Definition"},"note":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Note"}},"type":"object","required":["manager_identity_id","slug","name","definition"],"title":"CreateLifecycleProfileRequest"},"CreateNamespaceIn":{"properties":{"environment_id":{"type":"string","title":"Environment Id"},"name":{"type":"string","title":"Name"},"parent_library_id":{"type":"string","title":"Parent Library Id"}},"type":"object","required":["environment_id","name","parent_library_id"],"title":"CreateNamespaceIn"},"CreateOrganizationIn":{"properties":{"display_name":{"type":"string","maxLength":200,"minLength":1,"title":"Display Name"},"mindset_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Mindset Id"},"reply_workflow":{"anyOf":[{"type":"string","enum":["manual","send"]},{"type":"null"}],"title":"Reply Workflow"},"confirm_reply_workflow":{"type":"boolean","title":"Confirm Reply Workflow","default":false}},"type":"object","required":["display_name"],"title":"CreateOrganizationIn"},"CreateRequest":{"properties":{"target_identity_id":{"type":"string","format":"uuid","title":"Target Identity Id"},"chat_id":{"type":"string","format":"uuid","title":"Chat Id"},"reason":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Reason"},"proposed_duration":{"type":"string","enum":["one_session","timed","indefinite"],"title":"Proposed Duration"}},"type":"object","required":["target_identity_id","chat_id","proposed_duration"],"title":"CreateRequest"},"CreateRoomRequest":{"properties":{"title":{"type":"string","maxLength":200,"minLength":1,"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"agent_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Identity Id"},"member_identity_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Member Identity Ids"},"org_tenant_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Org Tenant Id"}},"type":"object","required":["title"],"title":"CreateRoomRequest"},"CreateRuntimeEnvironmentRequest":{"properties":{"runtime_kind":{"type":"string","maxLength":80,"minLength":1,"title":"Runtime Kind"},"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"library_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Library Id"},"environment_ref":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Environment Ref"},"registration_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Registration Id"},"config":{"additionalProperties":true,"type":"object","title":"Config"},"policy_defaults":{"additionalProperties":true,"type":"object","title":"Policy Defaults"},"setup_recipe":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Setup Recipe"},"repository":{"anyOf":[{"$ref":"#/components/schemas/DevelopmentRepositoryRequest"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["runtime_kind","name"],"title":"CreateRuntimeEnvironmentRequest"},"CreateSkillBody":{"properties":{"skill_md":{"type":"string","title":"Skill Md"}},"type":"object","required":["skill_md"],"title":"CreateSkillBody"},"CreateSkillSourceBody":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"kind":{"type":"string","enum":["github_repo","json_index","skills_sh"],"title":"Kind"},"config":{"additionalProperties":true,"type":"object","title":"Config"},"trust_default":{"type":"string","enum":["none","allowed_tools_review","verified"],"title":"Trust Default","default":"allowed_tools_review"},"priority":{"type":"integer","title":"Priority","default":0},"enabled":{"type":"boolean","title":"Enabled","default":true}},"type":"object","required":["slug","name","kind"],"title":"CreateSkillSourceBody"},"CreateSubdomainRequest":{"properties":{"name":{"type":"string","title":"Name"}},"type":"object","required":["name"],"title":"CreateSubdomainRequest","description":"TOS-2002: a subfolder under an existing folder."},"CreateSyncIn":{"properties":{"kind":{"type":"string","enum":["github_folder","website","google_drive_folder"],"title":"Kind","default":"github_folder"},"interval_seconds":{"anyOf":[{"type":"integer","minimum":900.0},{"type":"null"}],"title":"Interval Seconds"},"installation_instance_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Installation Instance Id"},"owner":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Owner"},"name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Name"},"branch":{"type":"string","maxLength":255,"minLength":1,"title":"Branch","default":"main"},"path":{"type":"string","maxLength":1024,"title":"Path","default":""},"auto_merge":{"type":"boolean","title":"Auto Merge","default":false},"on_remove":{"type":"string","enum":["leave","remove"],"title":"On Remove","default":"leave"},"write_note":{"type":"boolean","title":"Write Note","default":true},"url":{"anyOf":[{"type":"string","maxLength":2048,"minLength":1},{"type":"null"}],"title":"Url"},"source_kind":{"type":"string","title":"Source Kind","default":"sitemap"},"mode":{"type":"string","title":"Mode","default":"synced"},"destination":{"type":"string","title":"Destination","default":"memory"},"discovery":{"type":"string","title":"Discovery","default":"sitemap"},"crawl_depth":{"type":"integer","title":"Crawl Depth","default":1},"path_prefix":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Path Prefix"},"max_pages":{"type":"integer","title":"Max Pages","default":200},"max_bytes":{"type":"integer","title":"Max Bytes","default":52428800},"instance_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Instance Id"},"resource_id":{"anyOf":[{"type":"string","maxLength":1024,"minLength":1},{"type":"null"}],"title":"Resource Id"},"resource_name":{"type":"string","maxLength":1024,"title":"Resource Name","default":""},"arrive_published":{"type":"boolean","title":"Arrive Published","default":true}},"type":"object","title":"CreateSyncIn","description":"A new sync. ``kind`` picks which group of fields applies.\n\n``github_folder`` needs ``installation_instance_id``, ``owner`` and\n``name``. ``google_drive_folder`` needs ``instance_id`` (the caller's own\nGoogle Drive connection) and ``resource_id`` (the Drive folder id, from\n``/google/folders``). ``website`` needs ``url``; its range checks (source kind, mode,\ndestination, discovery, depth, caps) and the SSRF guard run in\n``register_source`` and answer 422 with the guard's own message, so a\nrefused URL says why."},"CreateSyncLinkRequest":{"properties":{"peer_base_url":{"type":"string","title":"Peer Base Url"},"peer_label":{"type":"string","title":"Peer Label","default":""},"api_key":{"type":"string","title":"Api Key"},"layers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Layers"}},"type":"object","required":["peer_base_url","api_key"],"title":"CreateSyncLinkRequest"},"CreateTopicRequest":{"properties":{"title":{"type":"string","maxLength":200,"minLength":1,"title":"Title"},"probe_kind":{"anyOf":[{"type":"string","const":"post_deploy_capability_smoke"},{"type":"null"}],"title":"Probe Kind"}},"type":"object","required":["title"],"title":"CreateTopicRequest"},"CreateWebhookTriggerRequest":{"properties":{"agent_identity_id":{"type":"string","format":"uuid","title":"Agent Identity Id"},"target_chat_id":{"type":"string","format":"uuid","title":"Target Chat Id"},"instruction":{"type":"string","maxLength":8000,"minLength":1,"title":"Instruction"},"timezone":{"type":"string","title":"Timezone","default":"UTC"},"action_type":{"type":"string","const":"chat","title":"Action Type","default":"chat"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"webhook_secret_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Secret Ref"}},"type":"object","required":["agent_identity_id","target_chat_id","instruction"],"title":"CreateWebhookTriggerRequest","description":"TOS-2025. A webhook trigger takes no schedule at all."},"CreateWebhookTriggerResponse":{"properties":{"trigger":{"$ref":"#/components/schemas/AgentTriggerResponse"},"delivery_token":{"type":"string","title":"Delivery Token"},"delivery_url":{"type":"string","title":"Delivery Url"}},"type":"object","required":["trigger","delivery_token","delivery_url"],"title":"CreateWebhookTriggerResponse"},"CreditsDisclosureAcceptRequest":{"properties":{"content_sha256":{"type":"string","title":"Content Sha256","description":"content_sha256 the user was shown, from GET /credits-disclosure"}},"type":"object","required":["content_sha256"],"title":"CreditsDisclosureAcceptRequest"},"CreditsDisclosureStatusResponse":{"properties":{"accepted":{"type":"boolean","title":"Accepted"},"version_label":{"type":"string","title":"Version Label"},"content_sha256":{"type":"string","title":"Content Sha256"},"text":{"type":"string","title":"Text"}},"type":"object","required":["accepted","version_label","content_sha256","text"],"title":"CreditsDisclosureStatusResponse"},"CutoverPersonOut":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"primary_principal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Primary Principal"},"active":{"type":"boolean","title":"Active"},"deleted":{"type":"boolean","title":"Deleted"},"platform_admin":{"type":"boolean","title":"Platform Admin"},"logins":{"items":{"$ref":"#/components/schemas/LoginBindingOut"},"type":"array","title":"Logins"}},"type":"object","required":["identity_id","primary_principal","active","deleted","platform_admin","logins"],"title":"CutoverPersonOut"},"DecayRunsResponse":{"properties":{"runs":{"items":{"$ref":"#/components/schemas/DecayStageRunOut"},"type":"array","title":"Runs"}},"type":"object","required":["runs"],"title":"DecayRunsResponse"},"DecayStageRunOut":{"properties":{"id":{"type":"string","title":"Id"},"started_at":{"type":"string","title":"Started At"},"ended_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ended At"},"outcome":{"type":"string","title":"Outcome"},"error_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Class"},"rows_decayed":{"type":"integer","title":"Rows Decayed","default":0},"rows_archived":{"type":"integer","title":"Rows Archived","default":0}},"type":"object","required":["id","started_at","ended_at","outcome","error_class"],"title":"DecayStageRunOut","description":"One decay stage attempt, flattened for the admin Decay panel.\n\nThe standalone ``decay`` job was retired in TOS-1979 Phase C; decay now\nruns as a per-Mind stage of ``sleep-cycle-dispatcher`` and is recorded\nin ``mind_sleep_stage_runs``. This reads that telemetry instead of the\nremoved job's ``job_runs`` rows."},"DecideToolApprovalRequest":{"properties":{"decision":{"type":"string","enum":["approve","deny","cancel"],"title":"Decision"},"note":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Note"}},"type":"object","required":["decision"],"title":"DecideToolApprovalRequest"},"DecideToolApprovalResponse":{"properties":{"approval":{"$ref":"#/components/schemas/ToolApprovalView"},"continuation_run_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Continuation Run Id"}},"type":"object","required":["approval","continuation_run_id"],"title":"DecideToolApprovalResponse"},"DecisionDigestDefaultUpdate":{"properties":{"default_enabled":{"type":"boolean","title":"Default Enabled"}},"additionalProperties":false,"type":"object","required":["default_enabled"],"title":"DecisionDigestDefaultUpdate"},"DecisionPathStep":{"properties":{"key":{"type":"string","title":"Key"},"status":{"type":"string","title":"Status"},"status_label":{"type":"string","title":"Status Label"},"status_tone":{"type":"string","title":"Status Tone"},"title":{"type":"string","title":"Title"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"},"count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Count"}},"type":"object","required":["key","status","status_label","status_tone","title","detail","count"],"title":"DecisionPathStep"},"DecisionRequest":{"properties":{"version":{"type":"integer","minimum":1.0,"title":"Version"},"decision":{"type":"string","enum":["approve","reject","cancel"],"title":"Decision"},"duration_mode":{"anyOf":[{"type":"string","enum":["one_session","timed","indefinite"]},{"type":"null"}],"title":"Duration Mode"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"expiry_timezone":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Expiry Timezone"}},"type":"object","required":["version","decision"],"title":"DecisionRequest"},"DeclineRequest":{"properties":{"reason":{"type":"string","title":"Reason"}},"type":"object","required":["reason"],"title":"DeclineRequest"},"DeleteAgentLite":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"display_name":{"type":"string","title":"Display Name"}},"type":"object","required":["id","display_name"],"title":"DeleteAgentLite"},"DeleteBlockerAgentOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"display_name":{"type":"string","title":"Display Name"}},"type":"object","required":["id","display_name"],"title":"DeleteBlockerAgentOut"},"DeleteBlockerMindsetOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"DeleteBlockerMindsetOut"},"DeleteCredentialBody":{"properties":{"target_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Identity Id"}},"type":"object","title":"DeleteCredentialBody"},"DeleteMindsetLite":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"DeleteMindsetLite"},"DeletePreflightOut":{"properties":{"can_delete":{"type":"boolean","title":"Can Delete"},"clerk_will_be_deleted":{"type":"boolean","title":"Clerk Will Be Deleted"},"solely_owned_agents":{"items":{"$ref":"#/components/schemas/DeleteAgentLite"},"type":"array","title":"Solely Owned Agents"},"owned_mindsets":{"items":{"$ref":"#/components/schemas/DeleteMindsetLite"},"type":"array","title":"Owned Mindsets"},"self_delete":{"type":"boolean","title":"Self Delete"},"is_last_admin":{"type":"boolean","title":"Is Last Admin"},"is_agent":{"type":"boolean","title":"Is Agent","default":false},"agent_block":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Block"}},"type":"object","required":["can_delete","clerk_will_be_deleted","solely_owned_agents","owned_mindsets","self_delete","is_last_admin"],"title":"DeletePreflightOut"},"DeletedOrganizationOut":{"properties":{"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"display_name":{"type":"string","title":"Display Name"},"role":{"type":"string","title":"Role"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"retention_days":{"type":"integer","title":"Retention Days"}},"type":"object","required":["tenant_id","display_name","role","logo_url","retention_days"],"title":"DeletedOrganizationOut","description":"A binned organization, with the days it stays restorable (TOS-6767)."},"DetachSkillFromAgentBody":{"properties":{"agent_id":{"type":"string","format":"uuid","title":"Agent Id"}},"type":"object","required":["agent_id"],"title":"DetachSkillFromAgentBody"},"DevelopmentRepositoryRequest":{"properties":{"provider":{"type":"string","maxLength":80,"minLength":1,"title":"Provider"},"repository_id":{"type":"string","maxLength":200,"minLength":1,"title":"Repository Id"},"owner":{"type":"string","maxLength":200,"minLength":1,"title":"Owner"},"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"base_branch":{"type":"string","maxLength":500,"minLength":1,"title":"Base Branch"},"installation_instance_id":{"type":"string","format":"uuid","title":"Installation Instance Id"},"manager_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Manager Identity Id"},"lifecycle_profile_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Lifecycle Profile Id"}},"additionalProperties":false,"type":"object","required":["provider","repository_id","owner","name","base_branch","installation_instance_id"],"title":"DevelopmentRepositoryRequest"},"DevelopmentRepositoryResponse":{"properties":{"provider":{"type":"string","title":"Provider"},"repository_id":{"type":"string","title":"Repository Id"},"owner":{"type":"string","title":"Owner"},"name":{"type":"string","title":"Name"},"base_branch":{"type":"string","title":"Base Branch"},"installation_instance_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Installation Instance Id"},"manager_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Manager Identity Id"},"lifecycle_profile_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Lifecycle Profile Id"}},"type":"object","required":["provider","repository_id","owner","name","base_branch"],"title":"DevelopmentRepositoryResponse"},"DiffStatsIn":{"properties":{"filesChanged":{"type":"integer","minimum":0.0,"title":"Fileschanged","default":0},"linesAdded":{"type":"integer","minimum":0.0,"title":"Linesadded","default":0},"linesRemoved":{"type":"integer","minimum":0.0,"title":"Linesremoved","default":0},"commitCount":{"type":"integer","minimum":0.0,"title":"Commitcount","default":0}},"type":"object","title":"DiffStatsIn"},"DigestRecord":{"properties":{"id":{"type":"string","title":"Id"},"period_start":{"type":"string","title":"Period Start"},"period_end":{"type":"string","title":"Period End"},"markdown":{"type":"string","title":"Markdown"},"item_count":{"type":"integer","title":"Item Count"},"minor_count":{"type":"integer","title":"Minor Count"},"duplicate_count":{"type":"integer","title":"Duplicate Count"},"proposal_count":{"type":"integer","title":"Proposal Count"},"analysis_ids":{"items":{"type":"string"},"type":"array","title":"Analysis Ids"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","period_start","period_end","markdown","item_count","minor_count","duplicate_count","proposal_count","analysis_ids","created_at"],"title":"DigestRecord"},"DiscoverabilityResponse":{"properties":{"discoverable_by_username":{"type":"boolean","title":"Discoverable By Username"},"discoverable_by_email":{"type":"boolean","title":"Discoverable By Email"},"auto_accept":{"type":"boolean","title":"Auto Accept"},"connection_policy":{"type":"string","title":"Connection Policy"}},"type":"object","required":["discoverable_by_username","discoverable_by_email","auto_accept","connection_policy"],"title":"DiscoverabilityResponse"},"DiscoverableOrganizationOut":{"properties":{"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"display_name":{"type":"string","title":"Display Name"},"slug":{"type":"string","title":"Slug"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"member_count":{"type":"integer","title":"Member Count"},"is_member":{"type":"boolean","title":"Is Member"},"has_pending_request":{"type":"boolean","title":"Has Pending Request"}},"type":"object","required":["tenant_id","display_name","slug","logo_url","member_count","is_member","has_pending_request"],"title":"DiscoverableOrganizationOut","description":"One organization in the directory (TOS-4113 Lane A)."},"DisplayedEstimate":{"properties":{"activity_id":{"type":"string","maxLength":200,"minLength":1,"title":"Activity Id"},"label":{"type":"string","maxLength":160,"minLength":1,"title":"Label"},"observed_after_send_us":{"type":"integer","maximum":86400000000.0,"minimum":0.0,"title":"Observed After Send Us"},"lower_seconds":{"type":"number","minimum":0.0,"title":"Lower Seconds"},"upper_seconds":{"type":"number","minimum":0.0,"title":"Upper Seconds"},"estimate_observed_at":{"type":"string","maxLength":100,"title":"Estimate Observed At"},"cohort_version":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Cohort Version"},"cohort_scope":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Cohort Scope"},"sample_size":{"anyOf":[{"type":"integer","maximum":1000000.0,"minimum":0.0},{"type":"null"}],"title":"Sample Size"}},"type":"object","required":["activity_id","label","observed_after_send_us","lower_seconds","upper_seconds","estimate_observed_at"],"title":"DisplayedEstimate","description":"A viewer-reported painted estimate, never a server calibration sample."},"DisputeIn":{"properties":{"kind":{"type":"string","enum":["inaccurate","should_not_be_held"],"title":"Kind"},"note":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Note"}},"type":"object","required":["kind"],"title":"DisputeIn"},"DisputeOut":{"properties":{"dispute_id":{"type":"string","format":"uuid","title":"Dispute Id"},"record_id":{"type":"string","format":"uuid","title":"Record Id"},"kind":{"type":"string","title":"Kind"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"resolved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Resolved At"},"resolution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution"}},"type":"object","required":["dispute_id","record_id","kind","note","created_at","resolved_at","resolution"],"title":"DisputeOut"},"DocumentContentSaveResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"source_id":{"type":"string","title":"Source Id"},"title":{"type":"string","title":"Title","default":""},"status":{"type":"string","title":"Status"},"chunk_count":{"type":"integer","title":"Chunk Count"},"indexed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Indexed At"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"scope":{"type":"string","title":"Scope"},"library_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Library Id"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"modified_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Modified At"},"size_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Size Bytes"},"has_original":{"type":"boolean","title":"Has Original","default":false},"document_kind":{"type":"string","title":"Document Kind","default":"text"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"original_content_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Content Type"},"original_filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Filename"},"title_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title Source"},"has_fit":{"type":"boolean","title":"Has Fit","default":false},"deleted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Deleted At"},"mind_extraction":{"anyOf":[{"$ref":"#/components/schemas/MindExtractionScopeResponse"},{"type":"null"}]},"source_time":{"anyOf":[{"$ref":"#/components/schemas/SourceTime"},{"type":"null"}]},"published":{"type":"boolean","title":"Published","default":true},"sync_excluded":{"type":"boolean","title":"Sync Excluded","default":false},"mind_mode":{"type":"string","enum":["immediate","first_save","never"],"title":"Mind Mode","default":"immediate"},"mind_refresh_status":{"type":"string","enum":["current","queued","failed"],"title":"Mind Refresh Status","default":"current"},"full_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Text"},"content_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Hash"},"draft_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Draft Content"},"draft_saved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Draft Saved At"},"draft_based_on_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Draft Based On Hash"},"synced_to":{"anyOf":[{"$ref":"#/components/schemas/DocumentSyncedTo"},{"type":"null"}]},"imprints_refreshed":{"type":"integer","title":"Imprints Refreshed","default":0},"mind_refresh_failed":{"type":"boolean","title":"Mind Refresh Failed","default":false},"version_number":{"type":"integer","title":"Version Number","default":0}},"type":"object","required":["id","source_id","status","chunk_count","indexed_at","error_message","scope","created_at","full_text"],"title":"DocumentContentSaveResponse"},"DocumentDetailResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"source_id":{"type":"string","title":"Source Id"},"title":{"type":"string","title":"Title","default":""},"status":{"type":"string","title":"Status"},"chunk_count":{"type":"integer","title":"Chunk Count"},"indexed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Indexed At"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"scope":{"type":"string","title":"Scope"},"library_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Library Id"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"modified_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Modified At"},"size_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Size Bytes"},"has_original":{"type":"boolean","title":"Has Original","default":false},"document_kind":{"type":"string","title":"Document Kind","default":"text"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"original_content_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Content Type"},"original_filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Filename"},"title_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title Source"},"has_fit":{"type":"boolean","title":"Has Fit","default":false},"deleted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Deleted At"},"mind_extraction":{"anyOf":[{"$ref":"#/components/schemas/MindExtractionScopeResponse"},{"type":"null"}]},"source_time":{"anyOf":[{"$ref":"#/components/schemas/SourceTime"},{"type":"null"}]},"published":{"type":"boolean","title":"Published","default":true},"sync_excluded":{"type":"boolean","title":"Sync Excluded","default":false},"mind_mode":{"type":"string","enum":["immediate","first_save","never"],"title":"Mind Mode","default":"immediate"},"mind_refresh_status":{"type":"string","enum":["current","queued","failed"],"title":"Mind Refresh Status","default":"current"},"full_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Text"},"content_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Hash"},"draft_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Draft Content"},"draft_saved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Draft Saved At"},"draft_based_on_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Draft Based On Hash"},"synced_to":{"anyOf":[{"$ref":"#/components/schemas/DocumentSyncedTo"},{"type":"null"}]}},"type":"object","required":["id","source_id","status","chunk_count","indexed_at","error_message","scope","created_at","full_text"],"title":"DocumentDetailResponse"},"DocumentLearnerItem":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"display_name":{"type":"string","title":"Display Name"},"kind":{"type":"string","title":"Kind"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"via_library_switch":{"type":"boolean","title":"Via Library Switch"},"learned_at":{"type":"string","format":"date-time","title":"Learned At"}},"type":"object","required":["identity_id","display_name","kind","avatar_url","via_library_switch","learned_at"],"title":"DocumentLearnerItem"},"DocumentLearnersResponse":{"properties":{"learners":{"items":{"$ref":"#/components/schemas/DocumentLearnerItem"},"type":"array","title":"Learners"}},"type":"object","required":["learners"],"title":"DocumentLearnersResponse"},"DocumentListResponse":{"properties":{"documents":{"items":{"$ref":"#/components/schemas/DocumentResponse"},"type":"array","title":"Documents"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["documents"],"title":"DocumentListResponse","description":"A keyset-paginated page of a caller's documents (TOS-3280).\n\n``next_cursor`` is ``None`` exactly when no older rows remain; pass it\nback as ``cursor`` to fetch the next page. A non-``None`` value IS the\ntruncation signal - there is no separate ``truncated`` flag to check."},"DocumentResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"source_id":{"type":"string","title":"Source Id"},"title":{"type":"string","title":"Title","default":""},"status":{"type":"string","title":"Status"},"chunk_count":{"type":"integer","title":"Chunk Count"},"indexed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Indexed At"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"scope":{"type":"string","title":"Scope"},"library_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Library Id"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"modified_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Modified At"},"size_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Size Bytes"},"has_original":{"type":"boolean","title":"Has Original","default":false},"document_kind":{"type":"string","title":"Document Kind","default":"text"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"original_content_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Content Type"},"original_filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Filename"},"title_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title Source"},"has_fit":{"type":"boolean","title":"Has Fit","default":false},"deleted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Deleted At"},"mind_extraction":{"anyOf":[{"$ref":"#/components/schemas/MindExtractionScopeResponse"},{"type":"null"}]},"source_time":{"anyOf":[{"$ref":"#/components/schemas/SourceTime"},{"type":"null"}]},"published":{"type":"boolean","title":"Published","default":true},"sync_excluded":{"type":"boolean","title":"Sync Excluded","default":false},"mind_mode":{"type":"string","enum":["immediate","first_save","never"],"title":"Mind Mode","default":"immediate"},"mind_refresh_status":{"type":"string","enum":["current","queued","failed"],"title":"Mind Refresh Status","default":"current"}},"type":"object","required":["id","source_id","status","chunk_count","indexed_at","error_message","scope","created_at"],"title":"DocumentResponse"},"DocumentStatusResponse":{"properties":{"document_kind":{"type":"string","title":"Document Kind"},"version_label":{"type":"string","title":"Version Label"},"content_sha256":{"type":"string","title":"Content Sha256"},"accepted":{"type":"boolean","title":"Accepted"},"previously_accepted":{"type":"boolean","title":"Previously Accepted"}},"type":"object","required":["document_kind","version_label","content_sha256","accepted","previously_accepted"],"title":"DocumentStatusResponse"},"DocumentSyncedTo":{"properties":{"sync_id":{"type":"string","format":"uuid","title":"Sync Id"},"library_id":{"type":"string","format":"uuid","title":"Library Id"},"repo":{"type":"string","title":"Repo"},"path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path"}},"type":"object","required":["sync_id","library_id","repo"],"title":"DocumentSyncedTo","description":"TOS-7114: the out sync that sends this document's folder to GitHub.\n\n``path`` is the file's place in the repository, or ``None`` when the sync\nhas no file for it (kept out of syncs, removed, or not sent yet).\n``library_id`` is the folder the sync belongs to, which may be a folder\nabove the document's own."},"DocumentVersionContentResponse":{"properties":{"version_number":{"type":"integer","title":"Version Number"},"edit_source":{"type":"string","title":"Edit Source"},"edited_by_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Edited By Identity Id"},"edited_by_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Edited By Name"},"edited_by_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Edited By Kind"},"content_hash":{"type":"string","title":"Content Hash"},"content_length":{"type":"integer","title":"Content Length"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"content":{"type":"string","title":"Content"}},"type":"object","required":["version_number","edit_source","edited_by_identity_id","content_hash","content_length","created_at","content"],"title":"DocumentVersionContentResponse"},"DocumentVersionListResponse":{"properties":{"versions":{"items":{"$ref":"#/components/schemas/DocumentVersionMeta"},"type":"array","title":"Versions"},"current_content_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Content Hash"}},"type":"object","required":["versions","current_content_hash"],"title":"DocumentVersionListResponse"},"DocumentVersionMeta":{"properties":{"version_number":{"type":"integer","title":"Version Number"},"edit_source":{"type":"string","title":"Edit Source"},"edited_by_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Edited By Identity Id"},"edited_by_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Edited By Name"},"edited_by_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Edited By Kind"},"content_hash":{"type":"string","title":"Content Hash"},"content_length":{"type":"integer","title":"Content Length"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["version_number","edit_source","edited_by_identity_id","content_hash","content_length","created_at"],"title":"DocumentVersionMeta"},"DomainDefaultResponse":{"properties":{"library_id":{"type":"string","format":"uuid","title":"Library Id"},"default_template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Default Template Id"}},"type":"object","required":["library_id","default_template_id"],"title":"DomainDefaultResponse"},"DoneForYouRow":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"summary":{"type":"string","title":"Summary"},"occurred_at":{"type":"string","format":"date-time","title":"Occurred At"},"source_kind":{"type":"string","title":"Source Kind"},"agent":{"anyOf":[{"$ref":"#/components/schemas/AgentRef"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["id","summary","occurred_at","source_kind"],"title":"DoneForYouRow"},"DonutChartArtifact":{"properties":{"chart_type":{"type":"string","const":"donut","title":"Chart Type"},"payload":{"$ref":"#/components/schemas/DonutChartPayloadResponse"}},"type":"object","required":["chart_type","payload"],"title":"DonutChartArtifact"},"DonutChartPayloadResponse":{"properties":{"title":{"type":"string","title":"Title"},"slices":{"items":{"$ref":"#/components/schemas/_DonutSlice"},"type":"array","title":"Slices"},"value_format":{"anyOf":[{"$ref":"#/components/schemas/_ValueFormat"},{"type":"null"}]}},"type":"object","required":["title","slices"],"title":"DonutChartPayloadResponse"},"DossierOut":{"properties":{"target_identity_id":{"type":"string","format":"uuid","title":"Target Identity Id"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"disclosed_facts":{"items":{"$ref":"#/components/schemas/thinqos__api__knowledge_dossier__FactOut"},"type":"array","title":"Disclosed Facts"},"beliefs":{"items":{"$ref":"#/components/schemas/BeliefOut"},"type":"array","title":"Beliefs"},"last_interaction_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Interaction At"}},"type":"object","required":["target_identity_id","summary","disclosed_facts","beliefs","last_interaction_at"],"title":"DossierOut"},"DraftRequest":{"properties":{"responder_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Responder Identity Id"},"force_new":{"type":"boolean","title":"Force New","default":false}},"type":"object","title":"DraftRequest","description":"Body for POST /api/chats/{chat_id}/draft."},"DraftResponse":{"properties":{"suggestion_id":{"type":"string","format":"uuid","title":"Suggestion Id"},"status":{"type":"string","title":"Status"},"candidate_text":{"type":"string","title":"Candidate Text","default":""},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["suggestion_id","status"],"title":"DraftResponse","description":"A draft's current state.\n\n``status`` is one of:\n\n- ``pending`` - the pipeline is still running; poll again.\n- ``ready`` - terminal. ``candidate_text`` holds the draft, and an EMPTY\n  string means the responder ABSTAINED (TOS-2651): it had nothing\n  substantive to say. Abstention is a SUCCESS - render nothing and show no\n  error. A draft is offered as the user's own words, so a fluent but\n  off-target line is worse than no draft at all.\n- ``failed`` - terminal. The pipeline errored; ``error`` says how."},"DuplicateHomeGroupOut":{"properties":{"owner_identity_id":{"type":"string","title":"Owner Identity Id"},"library_ids":{"items":{"type":"string"},"type":"array","title":"Library Ids"}},"type":"object","required":["owner_identity_id","library_ids"],"title":"DuplicateHomeGroupOut"},"DurableMessageSubmissionResponse":{"properties":{"status":{"type":"string","title":"Status"},"message_id":{"type":"string","format":"uuid","title":"Message Id"},"run_id":{"type":"string","format":"uuid","title":"Run Id"},"chat_id":{"type":"string","format":"uuid","title":"Chat Id"},"done":{"type":"boolean","title":"Done"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"poll_with":{"type":"string","const":"chat_messages_list","title":"Poll With","default":"chat_messages_list"},"status_poll_with":{"type":"string","const":"chat_message_status","title":"Status Poll With","default":"chat_message_status"},"poll_after_ms":{"type":"integer","title":"Poll After Ms","default":1500},"retry_guidance":{"type":"string","title":"Retry Guidance","default":"Poll chat_messages_list and the chat task status. Do not retry blindly; reuse the same idempotency_key."}},"type":"object","required":["status","message_id","run_id","chat_id","done"],"title":"DurableMessageSubmissionResponse"},"EditMessageRequest":{"properties":{"content":{"type":"string","title":"Content"},"result_blocks":{"anyOf":[{"items":{"$ref":"#/components/schemas/ResultBlock"},"type":"array"},{"type":"null"}],"title":"Result Blocks"}},"type":"object","required":["content"],"title":"EditMessageRequest"},"EffectiveCapabilityResponse":{"properties":{"capability_id":{"type":"string","title":"Capability Id"},"owner_granted":{"type":"boolean","title":"Owner Granted"},"status":{"type":"string","title":"Status"},"blocking_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blocking Reason"},"prompt_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt Text"},"tool_names":{"items":{"type":"string"},"type":"array","title":"Tool Names"}},"type":"object","required":["capability_id","owner_granted","status","blocking_reason","prompt_text","tool_names"],"title":"EffectiveCapabilityResponse","description":"Owner grant and actual runner readiness for one platform capability."},"EffectiveToolItem":{"properties":{"tool_name":{"type":"string","title":"Tool Name"},"tier":{"type":"string","title":"Tier"},"permitted":{"type":"boolean","title":"Permitted"},"unclassified":{"type":"boolean","title":"Unclassified"}},"type":"object","required":["tool_name","tier","permitted","unclassified"],"title":"EffectiveToolItem","description":"One declared tool of a connection, and whether the role admits it."},"EffectiveToolSetResponse":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"artifact_id":{"type":"string","format":"uuid","title":"Artifact Id"},"capability_role":{"type":"string","title":"Capability Role"},"permitted_count":{"type":"integer","title":"Permitted Count"},"total_count":{"type":"integer","title":"Total Count"},"permitted_by_role":{"additionalProperties":{"type":"integer"},"type":"object","title":"Permitted By Role"},"tools":{"items":{"$ref":"#/components/schemas/EffectiveToolItem"},"type":"array","title":"Tools"},"catalog_empty_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Catalog Empty Reason"}},"type":"object","required":["identity_id","artifact_id","capability_role","permitted_count","total_count"],"title":"EffectiveToolSetResponse"},"EmbedAction":{"properties":{"label":{"type":"string","maxLength":80,"minLength":1,"title":"Label"},"url":{"type":"string","title":"Url"}},"type":"object","required":["label","url"],"title":"EmbedAction"},"EmbedAuthorization":{"properties":{"url":{"type":"string","title":"Url"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At"}},"type":"object","required":["url"],"title":"EmbedAuthorization"},"EmbedDiagnosisBody":{"properties":{"published_url":{"type":"string","maxLength":2048,"minLength":1,"title":"Published Url"}},"additionalProperties":false,"type":"object","required":["published_url"],"title":"EmbedDiagnosisBody"},"EmbedDiagnosisOut":{"properties":{"origin":{"type":"string","title":"Origin"},"configured":{"type":"boolean","title":"Configured"},"eligible":{"type":"boolean","title":"Eligible"},"enabled":{"type":"boolean","title":"Enabled"},"matching_origin":{"type":"boolean","title":"Matching Origin"},"messages":{"items":{"type":"string"},"type":"array","title":"Messages"},"verification":{"type":"string","title":"Verification","default":"configuration_only"}},"type":"object","required":["origin","configured","eligible","enabled","matching_origin","messages"],"title":"EmbedDiagnosisOut"},"EmbedEntryProfile":{"properties":{"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"introduction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Introduction"},"starter_prompts":{"items":{"type":"string"},"type":"array","title":"Starter Prompts"}},"type":"object","required":["display_name","introduction","starter_prompts"],"title":"EmbedEntryProfile"},"EmbedEventBody":{"properties":{"event_key":{"$ref":"#/components/schemas/EmbedEventKey"},"platform":{"anyOf":[{"$ref":"#/components/schemas/EmbedPlatform"},{"type":"null"}]},"mode":{"anyOf":[{"$ref":"#/components/schemas/EmbedMode"},{"type":"null"}]},"failure_category":{"anyOf":[{"$ref":"#/components/schemas/EmbedFailureCategory"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["event_key"],"title":"EmbedEventBody"},"EmbedEventKey":{"type":"string","enum":["setup_failed","setup_opened","platform_selected","settings_saved","snippet_copied","installation_detected","session_ready","answer_complete"]},"EmbedFailureCategory":{"type":"string","enum":["configuration","origin","csp","storage","limits","network","provider","unknown"]},"EmbedMode":{"type":"string","enum":["floating","inline","iframe","button","react","ai"]},"EmbedPageAwareness":{"type":"string","enum":["manual","text","text_and_picture"]},"EmbedPageContext":{"properties":{"agent_id":{"type":"string","format":"uuid","title":"Agent Id"},"origin":{"type":"string","maxLength":300,"title":"Origin"},"path":{"type":"string","maxLength":300,"title":"Path","default":"/"},"title":{"type":"string","maxLength":200,"title":"Title","default":""},"text":{"type":"string","maxLength":6000,"title":"Text","default":""}},"additionalProperties":false,"type":"object","required":["agent_id","origin"],"title":"EmbedPageContext"},"EmbedPlatform":{"type":"string","enum":["custom","react","ai","wix","webflow","framer","wordpress","squarespace","shopify","html"]},"EmbedRef":{"properties":{"message_id":{"type":"string","format":"uuid","title":"Message Id"},"artifact_index":{"type":"integer","maximum":64.0,"minimum":0.0,"title":"Artifact Index"}},"additionalProperties":false,"type":"object","required":["message_id","artifact_index"],"title":"EmbedRef"},"EmbedRefresh":{"properties":{"name":{"type":"string","pattern":"^[A-Za-z0-9_.\\-]{1,128}$","title":"Name"},"arguments":{"additionalProperties":true,"type":"object","title":"Arguments"}},"type":"object","required":["name"],"title":"EmbedRefresh"},"EmbedSettingsBody":{"properties":{"expected_revision":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Expected Revision"},"enabled":{"type":"boolean","title":"Enabled","default":false},"allowed_origins":{"items":{"type":"string"},"type":"array","maxItems":50,"title":"Allowed Origins"},"display_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Display Name"},"greeting":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Greeting"},"starter_prompts":{"items":{"type":"string","maxLength":200,"minLength":1},"type":"array","maxItems":3,"title":"Starter Prompts"},"daily_turn_limit":{"type":"integer","maximum":1000000.0,"minimum":0.0,"title":"Daily Turn Limit","default":500},"visitor_turn_limit":{"type":"integer","maximum":10000.0,"minimum":0.0,"title":"Visitor Turn Limit","default":50},"page_awareness":{"$ref":"#/components/schemas/EmbedPageAwareness","default":"manual"},"visitor_screen_share":{"type":"boolean","title":"Visitor Screen Share","default":false},"acknowledge_public_exposure":{"type":"boolean","title":"Acknowledge Public Exposure","default":false}},"additionalProperties":false,"type":"object","title":"EmbedSettingsBody"},"EmbedSettingsOut":{"properties":{"revision":{"type":"string","title":"Revision"},"eligible":{"type":"boolean","title":"Eligible"},"eligibility_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eligibility Message"},"app_url":{"type":"string","title":"App Url"},"agent_identity_id":{"type":"string","title":"Agent Identity Id"},"enabled":{"type":"boolean","title":"Enabled"},"allowed_origins":{"items":{"type":"string"},"type":"array","title":"Allowed Origins"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"greeting":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Greeting"},"starter_prompts":{"items":{"type":"string"},"type":"array","title":"Starter Prompts"},"daily_turn_limit":{"type":"integer","title":"Daily Turn Limit"},"visitor_turn_limit":{"type":"integer","title":"Visitor Turn Limit"},"page_awareness":{"$ref":"#/components/schemas/EmbedPageAwareness"},"visitor_screen_share":{"type":"boolean","title":"Visitor Screen Share"},"snippet":{"type":"string","title":"Snippet"}},"type":"object","required":["revision","eligible","eligibility_message","app_url","agent_identity_id","enabled","allowed_origins","display_name","greeting","starter_prompts","daily_turn_limit","visitor_turn_limit","page_awareness","visitor_screen_share","snippet"],"title":"EmbedSettingsOut"},"EndRequest":{"properties":{"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"}},"type":"object","title":"EndRequest"},"EnforcementOut":{"properties":{"managed_mode":{"type":"boolean","title":"Managed Mode"},"eligible_active_person_count":{"type":"integer","title":"Eligible Active Person Count"},"active_grant_count":{"type":"integer","title":"Active Grant Count"},"missing_grant_count":{"type":"integer","title":"Missing Grant Count"},"enforcement_enabled":{"type":"boolean","title":"Enforcement Enabled"}},"type":"object","required":["managed_mode","eligible_active_person_count","active_grant_count","missing_grant_count","enforcement_enabled"],"title":"EnforcementOut"},"EntitlementOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"agent_identity_id":{"type":"string","format":"uuid","title":"Agent Identity Id"},"plan_id":{"type":"string","format":"uuid","title":"Plan Id"},"state":{"type":"string","title":"State"},"trial_started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Trial Started At"},"trial_ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Trial Ends At"},"trial_runs_used":{"type":"integer","title":"Trial Runs Used"},"current_period_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Current Period Start"},"current_period_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Current Period End"},"cancel_at_period_end":{"type":"boolean","title":"Cancel At Period End"},"units_used_period":{"type":"integer","title":"Units Used Period"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"},"plan_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Model"},"plan_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Plan Version"},"per_use_price_usd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Per Use Price Usd"},"sub_price_usd_month":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sub Price Usd Month"},"included_units_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Included Units Month"},"overage_policy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Overage Policy"},"overage_price_usd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Overage Price Usd"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"past_due_since":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Past Due Since"}},"type":"object","required":["id","agent_identity_id","plan_id","state","trial_started_at","trial_ends_at","trial_runs_used","current_period_start","current_period_end","cancel_at_period_end","units_used_period","created_at","updated_at"],"title":"EntitlementOut","description":"One row of the buyer's own entitlement list.\n\n``buyer_identity_id`` is deliberately absent - it is always the caller, and\nechoing it back invites a client to believe it is a parameter it could set."},"EntitlementStatusOut":{"properties":{"agent_identity_id":{"type":"string","format":"uuid","title":"Agent Identity Id"},"monetized":{"type":"boolean","title":"Monetized"},"entitled":{"type":"boolean","title":"Entitled"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"},"plan_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Plan Id"},"plan_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Plan Version"},"trial_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trial Kind"},"trial_available":{"type":"boolean","title":"Trial Available"},"trial_runs_used":{"type":"integer","title":"Trial Runs Used"},"trial_runs_total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Trial Runs Total"},"trial_ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Trial Ends At"},"current_period_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Current Period End"},"cancel_at_period_end":{"type":"boolean","title":"Cancel At Period End"},"offer":{"anyOf":[{"$ref":"#/components/schemas/AgentOfferOut"},{"type":"null"}]}},"type":"object","required":["agent_identity_id","monetized","entitled","state","plan_id","plan_version","trial_kind","trial_available","trial_runs_used","trial_runs_total","trial_ends_at","current_period_end","cancel_at_period_end","offer"],"title":"EntitlementStatusOut","description":"Held plan/trial terms (or current terms before acquisition), plus the current\npurchasable ``offer``. Confirm purchases using offer.plan_id/plan_version."},"EntityDetail":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"kind":{"type":"string","title":"Kind"},"summary":{"type":"string","title":"Summary"},"identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Identity Id"},"scope_kind":{"type":"string","title":"Scope Kind"},"owner_mind_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner Mind Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"has_embedding":{"type":"boolean","title":"Has Embedding"}},"type":"object","required":["id","kind","summary","identity_id","scope_kind","owner_mind_id","created_at","has_embedding"],"title":"EntityDetail"},"EntityLineage":{"properties":{"entity":{"$ref":"#/components/schemas/EntityDetail"},"referencing_propositions":{"items":{"$ref":"#/components/schemas/PropositionRef"},"type":"array","title":"Referencing Propositions"}},"type":"object","required":["entity","referencing_propositions"],"title":"EntityLineage"},"EntryEventBody":{"properties":{"event_key":{"type":"string","enum":["entry_website_sign_in_selected","entry_website_request_access_selected","entry_request_form_viewed"],"title":"Event Key"},"placement":{"type":"string","enum":["header","mobile_menu","hero","content","footer","direct","legacy_sign_up","app_connect"],"title":"Placement"}},"additionalProperties":false,"type":"object","required":["event_key","placement"],"title":"EntryEventBody"},"EnvironmentDetailOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"kind":{"type":"string","title":"Kind"},"owner_identity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Identity Id"},"status":{"type":"string","title":"Status"},"ownership_kind":{"type":"string","title":"Ownership Kind"},"detached_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detached At"},"verification":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Verification"},"verified_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verified At"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","name","kind","owner_identity_id","status","ownership_kind","detached_at","verification","verified_at","created_at"],"title":"EnvironmentDetailOut"},"EnvironmentOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"kind":{"type":"string","title":"Kind"},"owner_identity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Identity Id"},"status":{"type":"string","title":"Status"},"ownership_kind":{"type":"string","title":"Ownership Kind"},"detached_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detached At"},"verification":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Verification"},"verified_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verified At"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","name","kind","owner_identity_id","status","ownership_kind","detached_at","verification","verified_at","created_at"],"title":"EnvironmentOut"},"EnvironmentPickerOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"status":{"type":"string","title":"Status"},"detached_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detached At"}},"type":"object","required":["id","name","status","detached_at"],"title":"EnvironmentPickerOut"},"EscalateRequestBody":{"properties":{"reason":{"type":"string","title":"Reason","default":""}},"type":"object","title":"EscalateRequestBody"},"EvaluationPrompt":{"properties":{"prompt":{"type":"string","maxLength":4000,"minLength":1,"title":"Prompt"}},"additionalProperties":false,"type":"object","required":["prompt"],"title":"EvaluationPrompt"},"EvaluationResponse":{"properties":{"response":{"type":"string","title":"Response"}},"type":"object","required":["response"],"title":"EvaluationResponse"},"EvaluationSettings":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":false},"public_instructions":{"type":"string","maxLength":8000,"title":"Public Instructions","default":""}},"additionalProperties":false,"type":"object","title":"EvaluationSettings"},"EventBody":{"properties":{"event_id":{"type":"string","format":"uuid","title":"Event Id"},"owner_token":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner Token"},"decision":{"type":"string","enum":["installed","already_current","refused_older","failed","paused","policy_blocked"],"title":"Decision"},"bundle_version":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Bundle Version"},"git_sha":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Git Sha"},"channel":{"type":"string","enum":["stable","canary"],"title":"Channel"},"phase":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Phase"},"duration_ms":{"type":"integer","maximum":2147483647.0,"minimum":0.0,"title":"Duration Ms"},"migrations_since_epoch":{"type":"integer","maximum":253402300799.0,"minimum":0.0,"title":"Migrations Since Epoch"},"detail":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Detail"},"manifest_digest":{"anyOf":[{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},{"type":"null"}],"title":"Manifest Digest"}},"type":"object","required":["event_id","decision","channel","duration_ms","migrations_since_epoch"],"title":"EventBody"},"ExecuteDraftRequest":{"properties":{"suggestion_id":{"type":"string","format":"uuid","title":"Suggestion Id"}},"type":"object","required":["suggestion_id"],"title":"ExecuteDraftRequest"},"ExecuteDraftResponse":{"properties":{"suggestion_id":{"type":"string","format":"uuid","title":"Suggestion Id"},"result":{"additionalProperties":true,"type":"object","title":"Result"}},"type":"object","required":["suggestion_id","result"],"title":"ExecuteDraftResponse"},"ExecuteRunRequest":{"properties":{"run_id":{"type":"string","format":"uuid","title":"Run Id"},"lease_owner":{"type":"string","title":"Lease Owner","default":"worker:consult-http"}},"type":"object","required":["run_id"],"title":"ExecuteRunRequest"},"ExecuteRunResponse":{"properties":{"run_id":{"type":"string","format":"uuid","title":"Run Id"},"result":{"additionalProperties":true,"type":"object","title":"Result"}},"type":"object","required":["run_id","result"],"title":"ExecuteRunResponse"},"ExplainabilityEnvelope":{"properties":{"schema_version":{"type":"string","title":"Schema Version","default":"2.3.0"},"message_id":{"type":"string","title":"Message Id"},"receipt":{"$ref":"#/components/schemas/ReceiptMetrics"},"trace_tree":{"anyOf":[{"$ref":"#/components/schemas/TraceTree"},{"type":"null"}]},"decision_path":{"items":{"$ref":"#/components/schemas/DecisionPathStep"},"type":"array","title":"Decision Path"},"context_items":{"items":{"$ref":"#/components/schemas/ContextItem"},"type":"array","title":"Context Items"},"mind_path":{"items":{"$ref":"#/components/schemas/MindPathStage"},"type":"array","title":"Mind Path"},"grounding_boundaries":{"items":{"$ref":"#/components/schemas/GroundingBoundary"},"type":"array","title":"Grounding Boundaries"},"gap_cards":{"items":{"$ref":"#/components/schemas/GapCard"},"type":"array","title":"Gap Cards"},"limits_card":{"anyOf":[{"$ref":"#/components/schemas/GapCard"},{"type":"null"}]}},"type":"object","required":["message_id","receipt","decision_path","context_items","mind_path","grounding_boundaries","gap_cards","limits_card"],"title":"ExplainabilityEnvelope"},"ExtendPeriodRequest":{"properties":{"new_period_end":{"type":"string","format":"date-time","title":"New Period End"}},"type":"object","required":["new_period_end"],"title":"ExtendPeriodRequest"},"ExtractionExcludedRequest":{"properties":{"excluded":{"type":"boolean","title":"Excluded"}},"type":"object","required":["excluded"],"title":"ExtractionExcludedRequest"},"ExtractionRecoverResponse":{"properties":{"recovered":{"type":"integer","title":"Recovered"},"examined":{"type":"integer","title":"Examined"}},"type":"object","required":["recovered","examined"],"title":"ExtractionRecoverResponse"},"ExtractionStaleCountResponse":{"properties":{"stale_count":{"type":"integer","title":"Stale Count"}},"type":"object","required":["stale_count"],"title":"ExtractionStaleCountResponse"},"FacetDirection":{"type":"string","enum":["provides_tools","uses_mind","feeds_mind"],"title":"FacetDirection","description":"The capability direction a facet reports on."},"FacetState":{"type":"string","enum":["setup_needed","verifying","connected","stale","needs_reauthorization","disabled","error","unsupported"],"title":"FacetState","description":"One capability direction's status, as a handler reports it."},"FacetStatusOut":{"properties":{"direction":{"$ref":"#/components/schemas/FacetDirection"},"state":{"$ref":"#/components/schemas/FacetState"},"reason_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason Code"},"reason_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason Text"},"evidence_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Evidence At"},"allowed_actions":{"items":{"$ref":"#/components/schemas/CatalogActionId"},"type":"array","title":"Allowed Actions"}},"additionalProperties":false,"type":"object","required":["direction","state"],"title":"FacetStatusOut","description":"One capability direction's status for the viewer (from ``FacetStatus``)."},"FactLedgerEntryResponse":{"properties":{"key":{"type":"string","title":"Key"},"value":{"type":"string","title":"Value"}},"type":"object","required":["key","value"],"title":"FactLedgerEntryResponse","description":"One structured fact carried on the rolling-summary row (TOS-1189)."},"FailureBody":{"properties":{"channel":{"type":"string","enum":["stable","canary"],"title":"Channel"},"detail":{"type":"string","maxLength":1000,"minLength":1,"title":"Detail"},"after_successful_check":{"type":"boolean","title":"After Successful Check","default":false}},"type":"object","required":["channel","detail"],"title":"FailureBody"},"FamilyPeerInstallationOut":{"properties":{"definition_id":{"type":"string","format":"uuid","title":"Definition Id"},"name":{"type":"string","title":"Name"},"library_id":{"type":"string","format":"uuid","title":"Library Id"},"library_name":{"type":"string","title":"Library Name"},"connection_noun":{"$ref":"#/components/schemas/ConnectionNoun"}},"additionalProperties":false,"type":"object","required":["definition_id","name","library_id","library_name","connection_noun"],"title":"FamilyPeerInstallationOut","description":"An existing, reachable installation of a DIFFERENT definition in the same\nprovider family (TOS-5130) - e.g. a folder-wide Gmail connector when the\nviewer is about to connect a personal one under the same provider."},"FanoutCancelResponse":{"properties":{"fanout_id":{"type":"string","format":"uuid","title":"Fanout Id"},"canceled":{"type":"integer","title":"Canceled"},"draining":{"type":"integer","title":"Draining"},"already_terminal":{"type":"integer","title":"Already Terminal"}},"type":"object","required":["fanout_id","canceled","draining","already_terminal"],"title":"FanoutCancelResponse","description":"Deliberately three separate numbers, never one \"canceled\" total.\n\nCancel is a SPLIT, not a stop: unstarted children cancel immediately,\nin-flight ones drain (killing a hosted turn mid-provider-call would orphan\nits spend and its partial transcript). Collapsing these into one figure\nwould let the UI imply an instant stop that did not happen."},"FanoutChildResponse":{"properties":{"run_id":{"type":"string","format":"uuid","title":"Run Id"},"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Index"},"chat_id":{"type":"string","format":"uuid","title":"Chat Id"},"chat_title":{"type":"string","title":"Chat Title"},"status":{"type":"string","title":"Status"},"supervision_status":{"type":"string","title":"Supervision Status"},"done":{"type":"boolean","title":"Done"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"created_at":{"type":"string","title":"Created At"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completed At"}},"type":"object","required":["run_id","index","chat_id","chat_title","status","supervision_status","done","error","created_at","completed_at"],"title":"FanoutChildResponse"},"FanoutChildrenResponse":{"properties":{"fanout_id":{"type":"string","format":"uuid","title":"Fanout Id"},"children":{"items":{"$ref":"#/components/schemas/FanoutChildResponse"},"type":"array","title":"Children"}},"type":"object","required":["fanout_id","children"],"title":"FanoutChildrenResponse"},"FanoutSummaryResponse":{"properties":{"fanout_id":{"type":"string","format":"uuid","title":"Fanout Id"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"agent_identity_id":{"type":"string","format":"uuid","title":"Agent Identity Id"},"agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"},"parent_chat_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent Chat Id"},"total":{"type":"integer","title":"Total"},"done":{"type":"integer","title":"Done"},"pending":{"type":"integer","title":"Pending"},"running":{"type":"integer","title":"Running"},"succeeded":{"type":"integer","title":"Succeeded"},"failed":{"type":"integer","title":"Failed"},"canceled":{"type":"integer","title":"Canceled"},"other":{"type":"integer","title":"Other"},"counts_by_status":{"additionalProperties":{"type":"integer"},"type":"object","title":"Counts By Status"},"max_concurrency":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Concurrency"},"first_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Error"},"complete":{"type":"boolean","title":"Complete"},"cancelable":{"type":"boolean","title":"Cancelable"},"activity_state":{"type":"string","enum":["active","recent"],"title":"Activity State"},"created_at":{"type":"string","title":"Created At"},"last_activity_at":{"type":"string","title":"Last Activity At"}},"type":"object","required":["fanout_id","label","agent_identity_id","agent_name","parent_chat_id","total","done","pending","running","succeeded","failed","canceled","other","counts_by_status","max_concurrency","first_error","complete","cancelable","activity_state","created_at","last_activity_at"],"title":"FanoutSummaryResponse"},"FeedbackLoopOverview":{"properties":{"lanes":{"items":{"$ref":"#/components/schemas/StreamLane"},"type":"array","title":"Lanes"},"total_pending":{"type":"integer","title":"Total Pending"}},"type":"object","required":["lanes","total_pending"],"title":"FeedbackLoopOverview"},"FeedbackRequest":{"properties":{"vote":{"type":"string","pattern":"^(up|down)$","title":"Vote"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["vote"],"title":"FeedbackRequest"},"FeedbackResponse":{"properties":{"vote":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vote"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"evaluation_queued":{"type":"boolean","title":"Evaluation Queued","default":false}},"type":"object","title":"FeedbackResponse"},"FileRetentionResponse":{"properties":{"policy":{"type":"string","enum":["ask","chat","relationship","never"],"title":"Policy"}},"type":"object","required":["policy"],"title":"FileRetentionResponse"},"FileRetentionUpdate":{"properties":{"policy":{"type":"string","enum":["ask","chat","relationship","never"],"title":"Policy"}},"type":"object","required":["policy"],"title":"FileRetentionUpdate"},"FileRuntimeEnvironmentRequest":{"properties":{"library_id":{"type":"string","format":"uuid","title":"Library Id"}},"additionalProperties":false,"type":"object","required":["library_id"],"title":"FileRuntimeEnvironmentRequest"},"FindingEvidence":{"properties":{"href":{"type":"string","title":"Href"},"label":{"type":"string","title":"Label"},"external":{"type":"boolean","title":"External"}},"additionalProperties":false,"type":"object","required":["href","label","external"],"title":"FindingEvidence"},"FirstJobIn":{"properties":{"key":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Key"},"text":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Text"}},"additionalProperties":false,"type":"object","title":"FirstJobIn"},"FirstJobStartedOut":{"properties":{"run_id":{"type":"string","format":"uuid","title":"Run Id"},"job_key":{"type":"string","title":"Job Key"},"job":{"$ref":"#/components/schemas/JobCardOut"},"send_capable":{"type":"boolean","title":"Send Capable"}},"type":"object","required":["run_id","job_key","job","send_capable"],"title":"FirstJobStartedOut"},"FirstJobStatusOut":{"properties":{"status":{"type":"string","enum":["none","pending","running","completed","failed","canceled"],"title":"Status"},"run_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Run Id"},"job_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Key"},"progress_lines":{"items":{"type":"string"},"type":"array","title":"Progress Lines"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result"},"decisions":{"additionalProperties":true,"type":"object","title":"Decisions"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"send_capable":{"type":"boolean","title":"Send Capable","default":false}},"type":"object","required":["status"],"title":"FirstJobStatusOut","description":"``status`` is ``none`` when setup has no first job yet."},"FolderBoundaryListResponse":{"properties":{"boundaries":{"items":{"$ref":"#/components/schemas/FolderBoundaryView"},"type":"array","title":"Boundaries"}},"type":"object","required":["boundaries"],"title":"FolderBoundaryListResponse"},"FolderBoundaryView":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"folder_id":{"type":"string","format":"uuid","title":"Folder Id"},"kind":{"type":"string","title":"Kind"},"statement":{"type":"string","title":"Statement"},"binding":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Binding"},"enforcement":{"type":"string","title":"Enforcement"},"status":{"type":"string","title":"Status"},"created_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","folder_id","kind","statement","binding","enforcement","status","created_by","created_at"],"title":"FolderBoundaryView"},"FolderImportOut":{"properties":{"folder_id":{"type":"string","format":"uuid","title":"Folder Id"},"name":{"type":"string","title":"Name"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"documents_queued":{"type":"integer","title":"Documents Queued"},"job_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Job Ids"},"subfolders_created":{"type":"integer","title":"Subfolders Created"},"members_added":{"type":"integer","title":"Members Added"},"skills_imported":{"type":"integer","title":"Skills Imported"},"connections_imported":{"type":"integer","title":"Connections Imported"},"agents_imported":{"type":"integer","title":"Agents Imported"},"skipped":{"items":{"$ref":"#/components/schemas/FolderImportSkippedOut"},"type":"array","title":"Skipped"}},"type":"object","required":["folder_id","name","address","documents_queued","job_ids","subfolders_created","members_added","skills_imported","connections_imported","agents_imported","skipped"],"title":"FolderImportOut"},"FolderImportSkippedOut":{"properties":{"kind":{"type":"string","title":"Kind"},"name":{"type":"string","title":"Name"},"reason":{"type":"string","title":"Reason"}},"type":"object","required":["kind","name","reason"],"title":"FolderImportSkippedOut"},"FolderItemOut":{"properties":{"kind":{"type":"string","title":"Kind"},"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"folder_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Folder Id"},"modified_at":{"type":"string","format":"date-time","title":"Modified At"},"size_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Size Bytes"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"definition_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Definition Id"},"is_shortcut":{"type":"boolean","title":"Is Shortcut","default":false},"home_folder_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Home Folder Id"},"home_folder_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Home Folder Name"},"home_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Home Address"}},"type":"object","required":["kind","id","name","folder_id","modified_at","size_bytes","detail","tags"],"title":"FolderItemOut"},"FolderItemsResponse":{"properties":{"folder":{"anyOf":[{"$ref":"#/components/schemas/FolderOut"},{"type":"null"}]},"items":{"items":{"$ref":"#/components/schemas/FolderItemOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"type_counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Type Counts"}},"type":"object","required":["folder","items","total","next_cursor","type_counts"],"title":"FolderItemsResponse"},"FolderOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"parent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent Id"},"role":{"type":"string","title":"Role"},"can_administer":{"type":"boolean","title":"Can Administer"}},"type":"object","required":["id","name","address","parent_id","role","can_administer"],"title":"FolderOut"},"ForeignMemberViolationOut":{"properties":{"library_id":{"type":"string","title":"Library Id"},"owner_identity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Identity Id"},"foreign_member_count":{"type":"integer","title":"Foreign Member Count"}},"type":"object","required":["library_id","owner_identity_id","foreign_member_count"],"title":"ForeignMemberViolationOut"},"ForgetResult":{"properties":{"forgotten_count":{"type":"integer","title":"Forgotten Count"},"cascaded_count":{"type":"integer","title":"Cascaded Count"}},"type":"object","required":["forgotten_count","cascaded_count"],"title":"ForgetResult"},"FreshnessRequirement":{"type":"string","enum":["any","recent","current","live"],"title":"FreshnessRequirement"},"FundingAllocation":{"properties":{"funding_source":{"type":"string","title":"Funding Source"},"amount_usd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amount Usd"},"provider_cost_usd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Cost Usd"},"payer":{"type":"string","title":"Payer"},"billable_record_ids":{"items":{"type":"string"},"type":"array","title":"Billable Record Ids"},"scope":{"type":"string","title":"Scope"}},"type":"object","required":["funding_source","amount_usd","provider_cost_usd","payer","billable_record_ids","scope"],"title":"FundingAllocation"},"FunnelLane":{"properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"description":{"type":"string","title":"Description"},"state":{"type":"string","enum":["on","next"],"title":"State"},"state_label":{"type":"string","title":"State Label"},"count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Count"},"count_label":{"type":"string","title":"Count Label"},"unavailable_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unavailable Reason"},"partial_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Partial Note"},"href":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Href"}},"additionalProperties":false,"type":"object","required":["key","label","description","state","state_label","count","count_label","unavailable_reason","partial_note","href"],"title":"FunnelLane"},"FunnelResponse":{"properties":{"last_run_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Run At"},"headline":{"type":"string","title":"Headline"},"health_label":{"type":"string","title":"Health Label"},"health_tone":{"type":"string","enum":["","warn","bad","ok"],"title":"Health Tone"},"lanes":{"items":{"$ref":"#/components/schemas/FunnelLane"},"type":"array","title":"Lanes"},"stages":{"items":{"$ref":"#/components/schemas/thinqos__services__feedback_loop__landing__LoopStage"},"type":"array","title":"Stages"},"catch_rate":{"$ref":"#/components/schemas/CatchRate"},"findings":{"items":{"$ref":"#/components/schemas/RankedFinding"},"type":"array","title":"Findings"},"findings_total":{"type":"integer","title":"Findings Total"}},"additionalProperties":false,"type":"object","required":["last_run_at","headline","health_label","health_tone","lanes","stages","catch_rate","findings","findings_total"],"title":"FunnelResponse"},"GapCard":{"properties":{"title":{"type":"string","title":"Title"},"body":{"type":"string","title":"Body"}},"type":"object","required":["title","body"],"title":"GapCard"},"GatewayChatMessage":{"properties":{"role":{"type":"string","title":"Role"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"}},"type":"object","required":["role"],"title":"GatewayChatMessage","description":"One inbound OpenAI-format chat message. P0 supports string content only."},"GatewayStreamOptions":{"properties":{"include_usage":{"type":"boolean","title":"Include Usage","default":false}},"type":"object","title":"GatewayStreamOptions"},"GenerateRequest":{"properties":{"kind":{"type":"string","enum":["agent","person","kb","integration"],"title":"Kind"},"prompt":{"type":"string","maxLength":1200,"minLength":1,"title":"Prompt"},"subject_gender":{"anyOf":[{"type":"string","enum":["male","female","nonbinary"]},{"type":"null"}],"title":"Subject Gender"}},"type":"object","required":["kind","prompt"],"title":"GenerateRequest"},"GitHubConnectionOut":{"properties":{"instance_id":{"type":"string","format":"uuid","title":"Instance Id"},"label":{"type":"string","title":"Label"}},"type":"object","required":["instance_id","label"],"title":"GitHubConnectionOut"},"GithubAppInstallRequest":{"properties":{"redirect_after":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Redirect After"}},"type":"object","title":"GithubAppInstallRequest","description":"Body for POST /api/integrations/github-app/install."},"GithubAppInstallResponse":{"properties":{"install_url":{"type":"string","title":"Install Url"}},"type":"object","required":["install_url"],"title":"GithubAppInstallResponse","description":"Returned after a successful install-initiate."},"GmailCapture":{"properties":{"kind":{"type":"string","const":"gmail_message","title":"Kind","default":"gmail_message"},"message_id":{"type":"string","title":"Message Id"},"thread_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thread Id"},"subject":{"type":"string","title":"Subject"},"from_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Address"},"to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To"},"cc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cc"},"bcc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bcc"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"}},"type":"object","required":["message_id","subject"],"title":"GmailCapture"},"GoogleConnectionOut":{"properties":{"instance_id":{"type":"string","format":"uuid","title":"Instance Id"},"label":{"type":"string","title":"Label"},"kind":{"type":"string","title":"Kind"},"icon_url":{"type":"string","title":"Icon Url"}},"type":"object","required":["instance_id","label","kind","icon_url"],"title":"GoogleConnectionOut"},"GoogleResourceOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"}},"type":"object","required":["id","name","detail"],"title":"GoogleResourceOut"},"GoogleSyncOut":{"properties":{"product":{"type":"string","title":"Product"},"instance_id":{"type":"string","format":"uuid","title":"Instance Id"},"connection_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connection Label"},"icon_url":{"type":"string","title":"Icon Url"},"resource_id":{"type":"string","title":"Resource Id"},"resource_name":{"type":"string","title":"Resource Name"},"arrive_published":{"type":"boolean","title":"Arrive Published"}},"type":"object","required":["product","instance_id","connection_label","icon_url","resource_id","resource_name","arrive_published"],"title":"GoogleSyncOut","description":"A Google import's settings: which connection, which resource."},"GovernanceResponse":{"properties":{"library_id":{"type":"string","format":"uuid","title":"Library Id"},"caller_is_admin":{"type":"boolean","title":"Caller Is Admin"},"members":{"items":{"$ref":"#/components/schemas/MemberRow"},"type":"array","title":"Members"},"capabilities":{"items":{"$ref":"#/components/schemas/CapabilityRow"},"type":"array","title":"Capabilities"},"scope_note":{"type":"string","title":"Scope Note"}},"type":"object","required":["library_id","caller_is_admin","members","capabilities","scope_note"],"title":"GovernanceResponse","description":"Full governance matrix for one folder."},"GrantCreate":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"granted_usd":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string"}],"title":"Granted Usd"},"duration_days":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Duration Days","default":30},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["identity_id","granted_usd"],"title":"GrantCreate"},"GrantLite":{"properties":{"granted_usd":{"type":"string","title":"Granted Usd"},"used_usd":{"type":"string","title":"Used Usd"},"source":{"type":"string","title":"Source"},"granted_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Granted At"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At"}},"type":"object","required":["granted_usd","used_usd","source","granted_at","expires_at"],"title":"GrantLite"},"GrantOwnerBody":{"properties":{"owner_identity_id":{"type":"string","format":"uuid","title":"Owner Identity Id"}},"type":"object","required":["owner_identity_id"],"title":"GrantOwnerBody"},"GroundingBoundary":{"properties":{"raw":{"type":"string","title":"Raw"},"label":{"type":"string","title":"Label"},"kind":{"type":"string","title":"Kind"}},"type":"object","required":["raw","label","kind"],"title":"GroundingBoundary"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HarnessExecutionPacket":{"properties":{"schema_version":{"type":"string","const":"1","title":"Schema Version","default":"1"},"packet_id":{"type":"string","format":"uuid","title":"Packet Id"},"run_id":{"type":"string","format":"uuid","title":"Run Id"},"objective":{"type":"string","maxLength":100000,"minLength":1,"title":"Objective"},"acceptance_criteria":{"items":{"type":"string"},"type":"array","title":"Acceptance Criteria","default":[]},"requester_identity_id":{"type":"string","format":"uuid","title":"Requester Identity Id"},"acting_identity_id":{"type":"string","format":"uuid","title":"Acting Identity Id"},"authority_snapshot_ref":{"type":"string","maxLength":500,"minLength":1,"title":"Authority Snapshot Ref"},"runtime_environment_ref":{"type":"string","maxLength":500,"minLength":1,"title":"Runtime Environment Ref"},"working_directory":{"type":"string","maxLength":2000,"minLength":1,"title":"Working Directory"},"skill_snapshot_refs":{"items":{"type":"string"},"type":"array","title":"Skill Snapshot Refs","default":[]},"instruction_snapshot_refs":{"items":{"type":"string"},"type":"array","title":"Instruction Snapshot Refs","default":[]},"mind_snapshot_ref":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Mind Snapshot Ref"},"profile_snapshot_ref":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Profile Snapshot Ref"},"model_operation_key":{"type":"string","maxLength":200,"minLength":1,"title":"Model Operation Key"},"model_budget_policy_ref":{"type":"string","maxLength":500,"minLength":1,"title":"Model Budget Policy Ref"},"model_budget_ceiling_usd":{"type":"string","maxLength":40,"minLength":1,"title":"Model Budget Ceiling Usd"},"mcp_grants":{"items":{"$ref":"#/components/schemas/HarnessMcpGrant"},"type":"array","title":"Mcp Grants","default":[]},"secret_refs":{"items":{"type":"string"},"type":"array","title":"Secret Refs","default":[]},"egress_policy_ref":{"type":"string","maxLength":500,"minLength":1,"title":"Egress Policy Ref"},"resource_policy_ref":{"type":"string","maxLength":500,"minLength":1,"title":"Resource Policy Ref"},"artifact_expectations":{"items":{"type":"string"},"type":"array","title":"Artifact Expectations","default":[]},"cancellation_token":{"type":"string","maxLength":500,"minLength":1,"title":"Cancellation Token"},"correlation_ids":{"items":{"type":"string"},"type":"array","title":"Correlation Ids","default":[]},"issued_at":{"type":"string","format":"date-time","title":"Issued At"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"signature_algorithm":{"type":"string","const":"hmac-sha256","title":"Signature Algorithm","default":"hmac-sha256"},"signature_key_id":{"type":"string","maxLength":500,"minLength":1,"title":"Signature Key Id"},"signature":{"type":"string","maxLength":2000,"minLength":1,"title":"Signature"}},"type":"object","required":["packet_id","run_id","objective","requester_identity_id","acting_identity_id","authority_snapshot_ref","runtime_environment_ref","working_directory","model_operation_key","model_budget_policy_ref","model_budget_ceiling_usd","egress_policy_ref","resource_policy_ref","cancellation_token","issued_at","expires_at","signature_key_id","signature"],"title":"HarnessExecutionPacket","description":"A signed harness payload ready to cross the platform/runtime boundary."},"HarnessMcpGrant":{"properties":{"registration_id":{"type":"string","format":"uuid","title":"Registration Id"},"allowed_tools":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Allowed Tools"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"type":"object","required":["registration_id","allowed_tools","expires_at"],"title":"HarnessMcpGrant","description":"One immutable, expiring MCP capability grant carried by a harness packet."},"HarnessModelMessage":{"properties":{"role":{"type":"string","enum":["user","assistant","system","tool"],"title":"Role"},"content":{"anyOf":[{"type":"string","maxLength":400000},{"type":"null"}],"title":"Content"},"tool_calls":{"items":{"$ref":"#/components/schemas/HarnessToolCall"},"type":"array","maxItems":128,"title":"Tool Calls"},"tool_call_id":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Tool Call Id"}},"additionalProperties":false,"type":"object","required":["role"],"title":"HarnessModelMessage"},"HarnessModelRequest":{"properties":{"packet":{"$ref":"#/components/schemas/HarnessExecutionPacket"},"messages":{"items":{"$ref":"#/components/schemas/HarnessModelMessage"},"type":"array","maxItems":500,"minItems":1,"title":"Messages"},"system_prompt":{"anyOf":[{"type":"string","maxLength":400000},{"type":"null"}],"title":"System Prompt"},"temperature":{"anyOf":[{"type":"number","maximum":2.0,"minimum":0.0},{"type":"null"}],"title":"Temperature"},"max_tokens":{"anyOf":[{"type":"integer","maximum":200000.0,"minimum":1.0},{"type":"null"}],"title":"Max Tokens"},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/HarnessToolDefinition"},"type":"array","maxItems":128},{"type":"null"}],"title":"Tools"},"tool_choice":{"type":"string","const":"auto","title":"Tool Choice","default":"auto"}},"type":"object","required":["packet","messages"],"title":"HarnessModelRequest","description":"Stateless model request: tool definitions apply only to this request.\n\nOmitted or empty tools intentionally offer no new tools, even when replaying\ncompleted tool history. Callers must resend the catalog to allow more calls."},"HarnessModelResponse":{"properties":{"content":{"type":"string","title":"Content"},"input_tokens":{"type":"integer","title":"Input Tokens"},"output_tokens":{"type":"integer","title":"Output Tokens"},"model":{"type":"string","title":"Model"},"stop_reason":{"type":"string","title":"Stop Reason"},"duration_ms":{"type":"integer","title":"Duration Ms"},"request_id":{"type":"string","title":"Request Id"},"tool_calls":{"items":{"$ref":"#/components/schemas/HarnessToolCall"},"type":"array","title":"Tool Calls"}},"type":"object","required":["content","input_tokens","output_tokens","model","stop_reason","duration_ms","request_id"],"title":"HarnessModelResponse"},"HarnessToolCall":{"properties":{"id":{"type":"string","maxLength":256,"minLength":1,"title":"Id"},"type":{"type":"string","const":"function","title":"Type","default":"function"},"function":{"$ref":"#/components/schemas/HarnessToolFunction"}},"additionalProperties":false,"type":"object","required":["id","function"],"title":"HarnessToolCall"},"HarnessToolDefinition":{"properties":{"type":{"type":"string","const":"function","title":"Type","default":"function"},"function":{"$ref":"#/components/schemas/HarnessToolSchema"}},"additionalProperties":false,"type":"object","required":["function"],"title":"HarnessToolDefinition"},"HarnessToolFunction":{"properties":{"name":{"type":"string","maxLength":64,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","title":"Name"},"arguments":{"type":"string","maxLength":400000,"title":"Arguments"}},"additionalProperties":false,"type":"object","required":["name","arguments"],"title":"HarnessToolFunction"},"HarnessToolSchema":{"properties":{"name":{"type":"string","maxLength":64,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","title":"Name"},"description":{"type":"string","maxLength":400000,"title":"Description","default":""},"parameters":{"additionalProperties":true,"type":"object","title":"Parameters"}},"additionalProperties":false,"type":"object","required":["name","parameters"],"title":"HarnessToolSchema"},"HeadingBlock":{"properties":{"type":{"type":"string","const":"heading","title":"Type"},"text":{"type":"string","maxLength":120,"minLength":1,"title":"Text"}},"additionalProperties":false,"type":"object","required":["type","text"],"title":"HeadingBlock"},"Headline":{"properties":{"text":{"type":"string","title":"Text"},"detail":{"type":"string","title":"Detail"}},"additionalProperties":false,"type":"object","required":["text","detail"],"title":"Headline"},"HealthMetricView":{"properties":{"tracked":{"type":"boolean","title":"Tracked"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"numerator":{"type":"integer","title":"Numerator"},"denominator":{"type":"integer","title":"Denominator"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"additionalProperties":false,"type":"object","required":["tracked","value","numerator","denominator","note"],"title":"HealthMetricView"},"HealthPulseProbeOut":{"properties":{"status":{"type":"string","title":"Status"},"detail":{"type":"string","title":"Detail"},"latency_ms":{"type":"integer","title":"Latency Ms"},"extra":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Extra"}},"type":"object","required":["status","detail","latency_ms"],"title":"HealthPulseProbeOut"},"HealthPulseRunOut":{"properties":{"id":{"type":"string","title":"Id"},"run_at":{"type":"string","title":"Run At"},"trigger":{"type":"string","title":"Trigger"},"overall":{"type":"string","title":"Overall"},"duration_ms":{"type":"integer","title":"Duration Ms"},"probes":{"additionalProperties":{"$ref":"#/components/schemas/HealthPulseProbeOut"},"type":"object","title":"Probes"}},"type":"object","required":["id","run_at","trigger","overall","duration_ms","probes"],"title":"HealthPulseRunOut"},"HealthPulseSummaryResponse":{"properties":{"latest":{"anyOf":[{"$ref":"#/components/schemas/HealthPulseRunOut"},{"type":"null"}]},"history":{"items":{"$ref":"#/components/schemas/HealthPulseRunOut"},"type":"array","title":"History"}},"type":"object","required":["latest","history"],"title":"HealthPulseSummaryResponse"},"HelpQuestionRequest":{"properties":{"question":{"type":"string","maxLength":20000,"minLength":1,"title":"Question"},"source_message_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Source Message Id"},"source_message_hash":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}],"title":"Source Message Hash"},"reply_help_message_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Reply Help Message Id"},"idempotency_key":{"type":"string","format":"uuid","title":"Idempotency Key"}},"type":"object","required":["question","idempotency_key"],"title":"HelpQuestionRequest"},"HelpQuestionResponse":{"properties":{"status":{"type":"string","enum":["completed","pending","failed"],"title":"Status"},"question_message_id":{"type":"string","format":"uuid","title":"Question Message Id"},"answer_message_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Answer Message Id"},"continuation_chat_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Continuation Chat Id"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["status","question_message_id"],"title":"HelpQuestionResponse"},"HoldRequest":{"properties":{"instance_id":{"type":"string","title":"Instance Id"},"reason":{"type":"string","title":"Reason","default":""}},"type":"object","required":["instance_id"],"title":"HoldRequest"},"HomeJobIn":{"properties":{"key":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Key"},"text":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Text"},"schedule":{"anyOf":[{"type":"string","enum":["morning","evening","weekly_mon"]},{"type":"null"}],"title":"Schedule"},"run_now":{"type":"boolean","title":"Run Now","default":true},"from_run_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"From Run Id"}},"additionalProperties":false,"type":"object","title":"HomeJobIn"},"HomeJobStartedOut":{"properties":{"run_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Run Id"},"job_key":{"type":"string","title":"Job Key"},"needs":{"items":{"$ref":"#/components/schemas/JobNeedGroupOut"},"type":"array","title":"Needs"},"trigger_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Trigger Id"},"send_capable":{"type":"boolean","title":"Send Capable"}},"type":"object","required":["run_id","job_key","needs","send_capable"],"title":"HomeJobStartedOut"},"HomeReport":{"properties":{"window":{"$ref":"#/components/schemas/HomeWindow"},"headline":{"$ref":"#/components/schemas/Headline"},"working":{"items":{"$ref":"#/components/schemas/WorkingRun"},"type":"array","title":"Working"},"needs_you":{"items":{"$ref":"#/components/schemas/NeedGroup"},"type":"array","title":"Needs You"},"needs_you_has_more":{"type":"boolean","title":"Needs You Has More","default":false},"overflow_count":{"type":"integer","title":"Overflow Count","default":0},"done_for_you":{"items":{"$ref":"#/components/schemas/DoneForYouRow"},"type":"array","title":"Done For You"},"standing":{"items":{"$ref":"#/components/schemas/StandingRow"},"type":"array","title":"Standing"},"learned":{"items":{"$ref":"#/components/schemas/LearnedRow"},"type":"array","title":"Learned"},"connections":{"items":{"$ref":"#/components/schemas/ConnectionRow"},"type":"array","title":"Connections"},"open_items":{"items":{"$ref":"#/components/schemas/OpenItemOut"},"type":"array","title":"Open Items"},"sections":{"$ref":"#/components/schemas/SectionStatuses"},"setup":{"$ref":"#/components/schemas/HomeSetupOut"}},"additionalProperties":false,"type":"object","required":["window","headline","setup"],"title":"HomeReport"},"HomeSetupOut":{"properties":{"state":{"type":"string","title":"State"},"badge_count":{"type":"integer","title":"Badge Count"},"handoff_pending":{"type":"boolean","title":"Handoff Pending"}},"additionalProperties":false,"type":"object","required":["state","badge_count","handoff_pending"],"title":"HomeSetupOut"},"HomeWindow":{"properties":{"since":{"type":"string","format":"date-time","title":"Since"},"until":{"type":"string","format":"date-time","title":"Until"},"label":{"type":"string","title":"Label"}},"additionalProperties":false,"type":"object","required":["since","until","label"],"title":"HomeWindow"},"IdentityKeyPromotionPreview":{"properties":{"provider":{"type":"string","title":"Provider"},"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"identity_name":{"type":"string","title":"Identity Name"},"identity_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Identity Email"},"key_fingerprint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Fingerprint"},"owner_tenant_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner Tenant Id"},"owner_tenant_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Tenant Slug"},"owner_tenant_name":{"type":"string","title":"Owner Tenant Name"}},"type":"object","required":["provider","identity_id","identity_name","identity_email","key_fingerprint","owner_tenant_id","owner_tenant_slug","owner_tenant_name"],"title":"IdentityKeyPromotionPreview"},"IdentityLoopRow":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"name":{"type":"string","title":"Name"},"kind_label":{"type":"string","title":"Kind Label"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"owned":{"type":"boolean","title":"Owned"},"owner_label":{"type":"string","title":"Owner Label"},"night":{"type":"string","format":"date","title":"Night"},"turns_reviewed":{"type":"integer","title":"Turns Reviewed"},"findings":{"type":"integer","title":"Findings"},"waiting_on_owner":{"type":"integer","title":"Waiting On Owner"},"applied":{"type":"integer","title":"Applied"},"on_trial":{"type":"integer","title":"On Trial"},"undone":{"type":"integer","title":"Undone"},"health":{"type":"string","enum":["ok","failing","paused","idle"],"title":"Health"},"health_label":{"type":"string","title":"Health Label"},"health_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Health Reason"},"href":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Href"}},"additionalProperties":false,"type":"object","required":["identity_id","name","kind_label","avatar_url","owned","owner_label","night","turns_reviewed","findings","waiting_on_owner","applied","on_trial","undone","health","health_label","health_reason","href"],"title":"IdentityLoopRow"},"IdentityLoopsResponse":{"properties":{"rows":{"items":{"$ref":"#/components/schemas/IdentityLoopRow"},"type":"array","title":"Rows"},"note":{"type":"string","title":"Note"},"pause_all_available":{"type":"boolean","title":"Pause All Available"}},"additionalProperties":false,"type":"object","required":["rows","note","pause_all_available"],"title":"IdentityLoopsResponse"},"IdentityModelBundleResponse":{"properties":{"template_id":{"type":"string","format":"uuid","title":"Template Id"},"template_name":{"type":"string","title":"Template Name"},"provider_family":{"type":"string","title":"Provider Family"},"template_version":{"type":"integer","title":"Template Version"},"template_version_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Version Id"}},"type":"object","required":["template_id","template_name","provider_family","template_version"],"title":"IdentityModelBundleResponse"},"IdentityOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"display_name":{"type":"string","title":"Display Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"role":{"type":"string","title":"Role"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"created_via":{"type":"string","title":"Created Via"},"is_test_fixture":{"type":"boolean","title":"Is Test Fixture"},"funding_mode":{"type":"string","title":"Funding Mode"}},"type":"object","required":["id","display_name","email","avatar_url","role","is_active","created_at","created_via","is_test_fixture","funding_mode"],"title":"IdentityOut"},"IdentityOverviewCoreOut":{"properties":{"effective_wallet_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Effective Wallet Identity Id"},"effective_wallet_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Effective Wallet Name"},"effective_funding_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Effective Funding Mode"},"sharing_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sharing Status"},"id":{"type":"string","format":"uuid","title":"Id"},"display_name":{"type":"string","title":"Display Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"kind":{"type":"string","enum":["person","agent","org","visitor","historical_actor"],"title":"Kind"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"owners":{"items":{"$ref":"#/components/schemas/OwnerLite"},"type":"array","title":"Owners"},"last_active_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Active At"},"connection_policy":{"type":"string","enum":["off","request","auto"],"title":"Connection Policy"},"auto_accept":{"type":"boolean","title":"Auto Accept"},"is_platform_admin":{"type":"boolean","title":"Is Platform Admin"},"is_platform_admin_readonly":{"type":"boolean","title":"Is Platform Admin Readonly"},"funding_mode":{"type":"string","enum":["bypass","test","real_money"],"title":"Funding Mode"},"outbound_email_policy":{"type":"string","enum":["allowed","blocked"],"title":"Outbound Email Policy"},"managed_by_library_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Managed By Library Id"},"last_blocked_email":{"anyOf":[{"$ref":"#/components/schemas/LastBlockedEmailOut"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["id","display_name","email","avatar_url","kind","is_active","created_at","owners","last_active_at","connection_policy","auto_accept","is_platform_admin","is_platform_admin_readonly","funding_mode","outbound_email_policy","managed_by_library_id","last_blocked_email"],"title":"IdentityOverviewCoreOut"},"IdentityOverviewMetricsOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"balance_usd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Balance Usd"},"balance_owner_derived":{"type":"boolean","title":"Balance Owner Derived"},"balance_source":{"type":"string","enum":["self","owner","caller"],"title":"Balance Source"},"grants":{"items":{"$ref":"#/components/schemas/GrantLite"},"type":"array","title":"Grants"},"spend_usd":{"type":"string","title":"Spend Usd"},"spend_30d_usd":{"type":"string","title":"Spend 30D Usd"},"notional_margin_usd":{"type":"string","title":"Notional Margin Usd"},"keys":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Keys"},"keys_owner_derived":{"type":"boolean","title":"Keys Owner Derived"},"keys_source":{"type":"string","enum":["self","owner","agent","caller"],"title":"Keys Source"},"keys_detail":{"additionalProperties":{"$ref":"#/components/schemas/KeyDetailLite"},"type":"object","title":"Keys Detail"},"billing_mode":{"type":"string","enum":["owner_pays","caller_pays"],"title":"Billing Mode"},"credential_mode":{"type":"string","enum":["caller_required","agent_required","caller_first","agent_first"],"title":"Credential Mode"},"credential_platform_fallback":{"type":"boolean","title":"Credential Platform Fallback"},"model_default":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Default"},"model_fast":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Fast"},"model_deep":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Deep"},"mind_status":{"type":"string","enum":["rebuilding","issues","ok","none"],"title":"Mind Status"},"mind_rebuild_progress":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Mind Rebuild Progress"},"mind_issue_count":{"type":"integer","title":"Mind Issue Count"},"mind_node_count":{"type":"integer","title":"Mind Node Count"},"chats_count":{"type":"integer","title":"Chats Count"}},"additionalProperties":false,"type":"object","required":["id","balance_usd","balance_owner_derived","balance_source","grants","spend_usd","spend_30d_usd","notional_margin_usd","keys","keys_owner_derived","keys_source","keys_detail","billing_mode","credential_mode","credential_platform_fallback","model_default","model_fast","model_deep","mind_status","mind_rebuild_progress","mind_issue_count","mind_node_count","chats_count"],"title":"IdentityOverviewMetricsOut"},"IdentityOverviewMetricsResponse":{"properties":{"generated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Generated At"},"snapshot_status":{"type":"string","enum":["fresh","stale","unavailable"],"title":"Snapshot Status"},"rows":{"items":{"$ref":"#/components/schemas/IdentityOverviewMetricsOut"},"type":"array","title":"Rows"}},"additionalProperties":false,"type":"object","required":["generated_at","snapshot_status","rows"],"title":"IdentityOverviewMetricsResponse"},"IdentityOverviewOut":{"properties":{"effective_wallet_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Effective Wallet Identity Id"},"effective_wallet_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Effective Wallet Name"},"effective_funding_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Effective Funding Mode"},"sharing_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sharing Status"},"id":{"type":"string","format":"uuid","title":"Id"},"display_name":{"type":"string","title":"Display Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"kind":{"type":"string","title":"Kind"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"owners":{"items":{"$ref":"#/components/schemas/OwnerLite"},"type":"array","title":"Owners"},"last_active_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Active At"},"balance_usd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Balance Usd"},"balance_owner_derived":{"type":"boolean","title":"Balance Owner Derived"},"balance_source":{"type":"string","enum":["self","owner","caller"],"title":"Balance Source"},"grants":{"items":{"$ref":"#/components/schemas/GrantLite"},"type":"array","title":"Grants"},"spend_usd":{"type":"string","title":"Spend Usd"},"spend_30d_usd":{"type":"string","title":"Spend 30D Usd"},"notional_margin_usd":{"type":"string","title":"Notional Margin Usd"},"keys":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Keys"},"keys_owner_derived":{"type":"boolean","title":"Keys Owner Derived"},"keys_source":{"type":"string","enum":["self","owner","agent","caller"],"title":"Keys Source"},"keys_detail":{"additionalProperties":{"$ref":"#/components/schemas/KeyDetailLite"},"type":"object","title":"Keys Detail"},"billing_mode":{"type":"string","enum":["owner_pays","caller_pays"],"title":"Billing Mode"},"credential_mode":{"type":"string","enum":["caller_required","agent_required","caller_first","agent_first"],"title":"Credential Mode"},"credential_platform_fallback":{"type":"boolean","title":"Credential Platform Fallback"},"connection_policy":{"type":"string","enum":["off","request","auto"],"title":"Connection Policy"},"auto_accept":{"type":"boolean","title":"Auto Accept"},"is_platform_admin":{"type":"boolean","title":"Is Platform Admin"},"is_platform_admin_readonly":{"type":"boolean","title":"Is Platform Admin Readonly"},"model_default":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Default"},"model_fast":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Fast"},"model_deep":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Deep"},"mind_status":{"type":"string","enum":["rebuilding","issues","ok","none"],"title":"Mind Status"},"mind_rebuild_progress":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Mind Rebuild Progress"},"mind_issue_count":{"type":"integer","title":"Mind Issue Count"},"mind_node_count":{"type":"integer","title":"Mind Node Count"},"chats_count":{"type":"integer","title":"Chats Count"},"funding_mode":{"type":"string","enum":["bypass","test","real_money"],"title":"Funding Mode"},"outbound_email_policy":{"type":"string","enum":["allowed","blocked"],"title":"Outbound Email Policy"},"managed_by_library_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Managed By Library Id"},"last_blocked_email":{"anyOf":[{"$ref":"#/components/schemas/LastBlockedEmailOut"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["id","display_name","email","avatar_url","kind","is_active","created_at","owners","last_active_at","balance_usd","balance_owner_derived","balance_source","grants","spend_usd","spend_30d_usd","notional_margin_usd","keys","keys_owner_derived","keys_source","keys_detail","billing_mode","credential_mode","credential_platform_fallback","connection_policy","auto_accept","is_platform_admin","is_platform_admin_readonly","model_default","model_fast","model_deep","mind_status","mind_rebuild_progress","mind_issue_count","mind_node_count","chats_count","funding_mode","outbound_email_policy","managed_by_library_id","last_blocked_email"],"title":"IdentityOverviewOut"},"IdentityReviewRunSummary":{"properties":{"night":{"type":"string","format":"date","title":"Night"},"status":{"type":"string","title":"Status"},"failure_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Reason"},"reviewed_count":{"type":"integer","title":"Reviewed Count"},"flagged_count":{"type":"integer","title":"Flagged Count"},"findings":{"type":"integer","title":"Findings"},"proposals":{"type":"integer","title":"Proposals"},"platform_filings":{"type":"integer","title":"Platform Filings"},"backlog_remaining":{"type":"boolean","title":"Backlog Remaining"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"prompt_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt Version"},"input_tokens":{"type":"integer","title":"Input Tokens"},"output_tokens":{"type":"integer","title":"Output Tokens"},"cost_usd":{"type":"number","title":"Cost Usd"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["night","status","failure_reason","reviewed_count","flagged_count","findings","proposals","platform_filings","backlog_remaining","model","prompt_version","input_tokens","output_tokens","cost_usd","updated_at"],"title":"IdentityReviewRunSummary","description":"One night of the identity review (TOS-7055): the line the owner reads\n(\"Reviewed 41 turns. Found 2 things.\"), or why it could not run."},"IdentitySearchHit":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"display_name":{"type":"string","title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"kind":{"type":"string","title":"Kind"},"chat_count":{"type":"integer","title":"Chat Count"},"last_activity_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Activity At"},"similarity":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Similarity"}},"type":"object","required":["identity_id","display_name","kind","chat_count"],"title":"IdentitySearchHit","description":"A person or agent whose display name matched the query (TOS-3459)."},"IdentitySearchResult":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"display_name":{"type":"string","title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"kind":{"type":"string","title":"Kind"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","required":["id","display_name","avatar_url","kind","email"],"title":"IdentitySearchResult"},"IframeEmbedArtifact":{"properties":{"chart_type":{"type":"string","const":"iframe-embed","title":"Chart Type"},"url":{"type":"string","title":"Url"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"poster":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Poster"},"actions":{"items":{"$ref":"#/components/schemas/EmbedAction"},"type":"array","title":"Actions"},"refresh":{"anyOf":[{"$ref":"#/components/schemas/EmbedRefresh"},{"type":"null"}]},"registration_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registration Id"}},"type":"object","required":["chart_type","url"],"title":"IframeEmbedArtifact","description":"An externally-hosted embed (e.g. a completed integration job's\nplayable output) rendered inline via an iframe, rather than a chart\nrendered from a data payload. TOS-3689 Task 6."},"ImportBundledReleaseOut":{"properties":{"stored":{"type":"boolean","title":"Stored"},"release_id":{"type":"string","format":"uuid","title":"Release Id"},"bundle_version":{"type":"string","title":"Bundle Version"}},"type":"object","required":["stored","release_id","bundle_version"],"title":"ImportBundledReleaseOut"},"ImportExportOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"status":{"type":"string","enum":["processing","completed","failed"],"title":"Status"},"vendor":{"type":"string","enum":["openai","anthropic"],"title":"Vendor"},"imported":{"type":"integer","title":"Imported","default":0},"duplicates":{"type":"integer","title":"Duplicates","default":0},"skipped":{"type":"integer","title":"Skipped","default":0},"errors":{"type":"integer","title":"Errors","default":0},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["id","status","vendor"],"title":"ImportExportOut"},"ImportFromUrlBody":{"properties":{"source":{"type":"string","title":"Source"}},"type":"object","required":["source"],"title":"ImportFromUrlBody"},"ImportNamespaceIn":{"properties":{"environment_id":{"type":"string","title":"Environment Id"},"sql":{"type":"string","title":"Sql"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"parent_library_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Library Id"}},"type":"object","required":["environment_id","sql"],"title":"ImportNamespaceIn"},"ImportNamespaceOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"environment_id":{"type":"string","title":"Environment Id"},"environment_name":{"type":"string","title":"Environment Name"},"library_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Library Id"},"tables":{"items":{"type":"string"},"type":"array","title":"Tables"},"rows":{"additionalProperties":{"type":"integer"},"type":"object","title":"Rows"}},"type":"object","required":["id","name","environment_id","environment_name","library_id","tables","rows"],"title":"ImportNamespaceOut"},"ImprintBulkErrorV1":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"reason":{"type":"string","title":"Reason"}},"type":"object","required":["id","reason"],"title":"ImprintBulkErrorV1"},"ImprintBulkTeachResultV1":{"properties":{"taught":{"type":"integer","title":"Taught"},"errors":{"items":{"$ref":"#/components/schemas/ImprintBulkErrorV1"},"type":"array","title":"Errors"}},"type":"object","required":["taught","errors"],"title":"ImprintBulkTeachResultV1"},"ImprintFromDocumentRequestV1":{"properties":{"document_id":{"type":"string","format":"uuid","title":"Document Id"},"belief_origin":{"type":"string","title":"Belief Origin","default":"declared"}},"type":"object","required":["document_id"],"title":"ImprintFromDocumentRequestV1","description":"Teach the Mind from a document already in the user's folders."},"ImprintFromDocumentsRequestV1":{"properties":{"document_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Document Ids"},"belief_origin":{"type":"string","title":"Belief Origin","default":"declared"}},"type":"object","required":["document_ids"],"title":"ImprintFromDocumentsRequestV1","description":"Teach the Mind from several folder documents at once."},"ImprintItemV1":{"properties":{"id":{"type":"string","title":"Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"filename":{"type":"string","title":"Filename"},"belief_origin":{"type":"string","title":"Belief Origin"},"extraction_status":{"type":"string","title":"Extraction Status"},"belief_count":{"type":"integer","title":"Belief Count"},"source_version":{"type":"integer","title":"Source Version"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"has_original":{"type":"boolean","title":"Has Original","default":false}},"type":"object","required":["id","title","filename","belief_origin","extraction_status","belief_count","source_version","created_at"],"title":"ImprintItemV1"},"ImprintListV1":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ImprintItemV1"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"ImprintListV1"},"ImprintPageV1":{"properties":{"rows":{"items":{"$ref":"#/components/schemas/ImprintItemV1"},"type":"array","title":"Rows"},"total":{"type":"integer","title":"Total"},"next_offset":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Offset"},"status_counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Status Counts"}},"type":"object","required":["rows","total"],"title":"ImprintPageV1","description":"Bounded Sources result returned when server paging is requested."},"ImprintTeachResultV1":{"properties":{"id":{"type":"string","title":"Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"filename":{"type":"string","title":"Filename"},"belief_origin":{"type":"string","title":"Belief Origin"},"extraction_status":{"type":"string","title":"Extraction Status"},"belief_count":{"type":"integer","title":"Belief Count"},"source_version":{"type":"integer","title":"Source Version"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"has_original":{"type":"boolean","title":"Has Original","default":false},"library_copy_status":{"type":"string","enum":["created","failed","not_requested"],"title":"Library Copy Status"}},"type":"object","required":["id","title","filename","belief_origin","extraction_status","belief_count","source_version","created_at","library_copy_status"],"title":"ImprintTeachResultV1"},"IndexResultResponse":{"properties":{"document_id":{"type":"string","format":"uuid","title":"Document Id"},"status":{"type":"string","title":"Status"}},"type":"object","required":["document_id","status"],"title":"IndexResultResponse"},"IndexTextRequest":{"properties":{"content":{"type":"string","title":"Content"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"library_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"string"},{"type":"null"}],"title":"Library Id"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"mind_mode":{"type":"string","enum":["immediate","first_save","never"],"title":"Mind Mode","default":"immediate"},"source_time":{"anyOf":[{"$ref":"#/components/schemas/SourceTime"},{"type":"null"}],"description":"When the content occurred or was observed. Use timezone-aware ISO 8601 timestamps. recorded_at is assigned by thinqOS and must be omitted."}},"type":"object","required":["content"],"title":"IndexTextRequest","description":"Index raw text content into a folder."},"IngestContractLimits":{"properties":{"max_sessions_per_envelope":{"type":"integer","title":"Max Sessions Per Envelope","default":25},"max_turns_per_session":{"type":"integer","title":"Max Turns Per Session","default":5000},"max_turns_per_envelope":{"type":"integer","title":"Max Turns Per Envelope","default":10000},"max_canonical_json_bytes":{"type":"integer","title":"Max Canonical Json Bytes","default":8388608}},"type":"object","title":"IngestContractLimits"},"IngestContractV2Limits":{"properties":{"max_session_updates_per_envelope":{"type":"integer","title":"Max Session Updates Per Envelope","default":25},"max_turns_per_session_update":{"type":"integer","title":"Max Turns Per Session Update","default":5000},"max_turns_per_envelope":{"type":"integer","title":"Max Turns Per Envelope","default":10000},"max_serialized_content_bytes_per_turn":{"type":"integer","title":"Max Serialized Content Bytes Per Turn","default":262144},"max_identity_wire_bytes":{"type":"integer","title":"Max Identity Wire Bytes","default":8388608},"max_gzip_wire_bytes":{"type":"integer","title":"Max Gzip Wire Bytes","default":2097152},"max_decompressed_json_bytes":{"type":"integer","title":"Max Decompressed Json Bytes","default":8388608}},"type":"object","title":"IngestContractV2Limits"},"IngestResultV1":{"properties":{"ingested":{"type":"integer","title":"Ingested"},"duplicates":{"type":"integer","title":"Duplicates"},"errors":{"items":{"$ref":"#/components/schemas/IngestSessionError"},"type":"array","title":"Errors"},"contract_version":{"type":"string","title":"Contract Version","default":"v1.0.0"}},"type":"object","required":["ingested","duplicates","errors"],"title":"IngestResultV1"},"IngestSessionDetailV1":{"properties":{"chat_id":{"type":"string","title":"Chat Id"},"source":{"type":"string","title":"Source"},"source_external_id":{"type":"string","title":"Source External Id"},"instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instance Id"},"source_session_revision":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Source Session Revision"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"turn_count":{"type":"integer","title":"Turn Count"},"workspace_hint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Hint"},"extraction_count":{"type":"integer","title":"Extraction Count"},"extraction_status":{"type":"string","enum":["queued","ineligible","deferred","processing","failed","integrated"],"title":"Extraction Status"},"messages":{"items":{"$ref":"#/components/schemas/IngestSessionMessageV1"},"type":"array","title":"Messages"}},"type":"object","required":["chat_id","source","source_external_id","source_session_revision","title","started_at","turn_count","workspace_hint","extraction_count","extraction_status","messages"],"title":"IngestSessionDetailV1","description":"A captured session + its messages + extraction metadata.\n\nReturned by ``GET /api/ingest/external/v1/sessions/<source>/<id>``. Used\nby the source/session detail pages (TOS-256 PR-1 Phase 5) and by the\nMind back-link surface."},"IngestSessionError":{"properties":{"source_external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source External Id"},"code":{"type":"string","title":"Code"},"detail":{"type":"string","title":"Detail"}},"type":"object","required":["source_external_id","code","detail"],"title":"IngestSessionError"},"IngestSessionListItemV1":{"properties":{"source":{"type":"string","title":"Source"},"source_external_id":{"type":"string","title":"Source External Id"},"instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instance Id"},"source_session_revision":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Source Session Revision"},"occurred_at":{"type":"string","format":"date-time","title":"Occurred At"},"captured_at":{"type":"string","format":"date-time","title":"Captured At"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"turn_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Turn Count"},"workspace_hint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Hint"}},"type":"object","required":["source","source_external_id","source_session_revision","occurred_at","captured_at","summary","turn_count","workspace_hint"],"title":"IngestSessionListItemV1"},"IngestSessionListV1":{"properties":{"sessions":{"items":{"$ref":"#/components/schemas/IngestSessionListItemV1"},"type":"array","title":"Sessions"},"next_before":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Before"},"next_before_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Before Id"}},"type":"object","required":["sessions","next_before"],"title":"IngestSessionListV1"},"IngestSessionMessageV1":{"properties":{"id":{"type":"string","title":"Id"},"role":{"type":"string","title":"Role"},"content":{"type":"string","title":"Content"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"author_identity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author Identity Id"},"author_display_name":{"type":"string","title":"Author Display Name"},"author_kind":{"type":"string","title":"Author Kind"},"window_seq":{"type":"integer","title":"Window Seq"}},"type":"object","required":["id","role","content","created_at","author_identity_id","author_display_name","author_kind","window_seq"],"title":"IngestSessionMessageV1","description":"One message in a captured session, projected for the detail view.\n\n``author_display_name`` is the resolved Identity display name (e.g. ``\"You\"``\nor the synthetic agent name like ``\"Claude Code\"``). ``window_seq`` is the\n1-based position within the chat, suitable for the ``#turn-<seq>`` hash\nfragment scroll target on the session-detail page."},"IngestSourceStateListV1":{"properties":{"sources":{"items":{"$ref":"#/components/schemas/IngestSourceStateV1"},"type":"array","title":"Sources"}},"type":"object","required":["sources"],"title":"IngestSourceStateListV1"},"IngestSourceStateV1":{"properties":{"source":{"type":"string","title":"Source"},"blocked":{"type":"boolean","title":"Blocked"},"capture_count":{"type":"integer","title":"Capture Count"},"last_capture_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Capture At"},"default_recall_searchable":{"type":"boolean","title":"Default Recall Searchable","default":true},"default_extraction_mode":{"type":"string","enum":["none","owner"],"title":"Default Extraction Mode","default":"none"},"extraction_context_budget_chars":{"type":"integer","title":"Extraction Context Budget Chars","default":500},"retention_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Retention Days"},"capture_mode":{"$ref":"#/components/schemas/CaptureMode","default":"manual"},"review_required":{"type":"boolean","title":"Review Required","default":false},"mark_new_captures_read":{"type":"boolean","title":"Mark New Captures Read","default":true},"archive_new_captures":{"type":"boolean","title":"Archive New Captures","default":false}},"type":"object","required":["source","blocked","capture_count","last_capture_at"],"title":"IngestSourceStateV1"},"InitialResponseTerminalStatus":{"type":"string","enum":["failed","canceled"],"title":"InitialResponseTerminalStatus"},"InstallFromSourceBody":{"properties":{"trust":{"type":"boolean","title":"Trust","default":false},"install_as":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Install As"}},"type":"object","title":"InstallFromSourceBody","description":"Trust override sent by the UI after the user accepts the allowed-tools prompt."},"InstallIn":{"properties":{"catalog_key":{"type":"string","maxLength":200,"minLength":1,"title":"Catalog Key"}},"additionalProperties":false,"type":"object","required":["catalog_key"],"title":"InstallIn"},"InstallRequest":{"properties":{"library_id":{"type":"string","format":"uuid","title":"Library Id"},"catalog_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Catalog Key"},"definition_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Definition Id"},"source":{"anyOf":[{"type":"string","const":"user_install"},{"type":"null"}],"title":"Source"},"connection_mode":{"anyOf":[{"type":"string","enum":["shared","per_caller"]},{"type":"null"}],"title":"Connection Mode"}},"additionalProperties":false,"type":"object","required":["library_id"],"title":"InstallRequest","description":"Install a definition into a target folder (``POST /installations``)."},"InstallState":{"properties":{"install_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Install Id"},"install_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Install Name"},"bundle_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bundle Version"},"build_sha":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Build Sha"},"channel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel"}},"type":"object","required":["install_id","install_name","bundle_version","build_sha","channel"],"title":"InstallState","description":"What this install is running right now.\n\nRead from the process environment rather than the database, because it is a\nproperty of the deployed revision. The updater stamps both at cutover."},"InstallationDetailOut":{"properties":{"installation_id":{"type":"string","format":"uuid","title":"Installation Id"},"library_id":{"type":"string","format":"uuid","title":"Library Id"},"definition_id":{"type":"string","format":"uuid","title":"Definition Id"},"source":{"type":"string","title":"Source"},"state":{"type":"string","title":"State"},"created":{"type":"boolean","title":"Created","default":false},"item":{"$ref":"#/components/schemas/CatalogItemOut"},"viewer_setup":{"anyOf":[{"$ref":"#/components/schemas/SetupStateOut"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["installation_id","library_id","definition_id","source","state","item"],"title":"InstallationDetailOut","description":"One installation's detail: its own identity fields + the read-path row.\n\n``item`` is the server-assembled :class:`CatalogItemOut` for this\ninstallation's definition (definition metadata + aggregate/facets +\nconnection summaries + setup descriptor), reusing the exact read-path\nassembly so the write surface never re-derives status. ``viewer_setup`` is\nthe caller's own stored setup progress. ``created`` is ``True`` only when a\n``POST`` just minted the row (idempotent re-install returns the existing row\nwith ``created=False``)."},"InstallationSummaryOut":{"properties":{"installation_id":{"type":"string","format":"uuid","title":"Installation Id"},"definition_id":{"type":"string","format":"uuid","title":"Definition Id"},"library_id":{"type":"string","format":"uuid","title":"Library Id"},"library_name":{"type":"string","title":"Library Name"},"library_role":{"type":"string","title":"Library Role"},"state":{"type":"string","title":"State"},"installed_publication_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Installed Publication Version"},"allowed_actions":{"items":{"$ref":"#/components/schemas/CatalogActionId"},"type":"array","title":"Allowed Actions"}},"additionalProperties":false,"type":"object","required":["installation_id","definition_id","library_id","library_name","library_role","state"],"title":"InstallationSummaryOut","description":"Safe folder-level summary used to make multi-installation ambiguity explicit."},"InstalledIntegrationOut":{"properties":{"registration_id":{"type":"string","format":"uuid","title":"Registration Id"},"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"installed_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Installed By"},"enabled":{"type":"boolean","title":"Enabled"},"credential_connected":{"type":"boolean","title":"Credential Connected"},"credential_status":{"type":"string","title":"Credential Status"},"credential_last_auth_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Credential Last Auth Error"}},"type":"object","required":["registration_id","identity_id","installed_by","enabled","credential_connected","credential_status","credential_last_auth_error"],"title":"InstalledIntegrationOut","description":"Extended response for the per-user installed list, including credential status."},"InstalledSkillOut":{"properties":{"skill_id":{"type":"string","format":"uuid","title":"Skill Id"},"slug":{"type":"string","title":"Slug"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"type":"string","title":"Description"},"enabled":{"type":"boolean","title":"Enabled"},"available":{"type":"boolean","title":"Available","description":"Available in the identity's live skill registry; not runtime verification.","default":true},"content_vetted":{"type":"boolean","title":"Content Vetted"},"runtime_readiness":{"type":"string","const":"unverified","title":"Runtime Readiness","default":"unverified"},"runtime_readiness_reason":{"type":"string","title":"Runtime Readiness Reason","default":"Identity access does not verify runtime dependencies or output delivery for this skill version."}},"type":"object","required":["skill_id","slug","description","enabled","content_vetted"],"title":"InstalledSkillOut","description":"A skill installed on a target (agent/identity/kb), with install state.\n\nPowers the agent-editor Skills tab (TOS-113)."},"InstanceCreateBody":{"properties":{"install_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Install Id"},"alias":{"type":"string","maxLength":128,"minLength":1,"title":"Alias"},"personal":{"type":"boolean","title":"Personal","default":false},"connection_mode":{"anyOf":[{"type":"string","enum":["shared","per_caller"]},{"type":"null"}],"title":"Connection Mode"},"connection_profile_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Connection Profile Id"},"target_library_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Library Id"}},"type":"object","required":["alias"],"title":"InstanceCreateBody"},"InstanceDiagnosticsBatchRequest":{"properties":{"instance_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Instance Ids"}},"type":"object","required":["instance_ids"],"title":"InstanceDiagnosticsBatchRequest"},"InstanceDiagnosticsBatchResponse":{"properties":{"diagnostics":{"additionalProperties":{"$ref":"#/components/schemas/McpRegistrationDiagnostics"},"type":"object","title":"Diagnostics"}},"type":"object","required":["diagnostics"],"title":"InstanceDiagnosticsBatchResponse"},"InstanceHealthOut":{"properties":{"instance_id":{"type":"string","format":"uuid","title":"Instance Id"},"alias":{"type":"string","title":"Alias"},"health":{"$ref":"#/components/schemas/ConnectionHealthOut"},"definition_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Definition Slug"},"viewer_can_repair":{"type":"boolean","title":"Viewer Can Repair","default":true},"held":{"type":"boolean","title":"Held","default":true},"hold_state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hold State"},"service_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Service Name"},"account_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Email"},"account_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Label"},"key_owner":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Owner"},"key_borrowed":{"type":"boolean","title":"Key Borrowed","default":false},"definition_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Definition Id"},"service_icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Service Icon Url"},"last_tested_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Tested At"}},"type":"object","required":["instance_id","alias","health"],"title":"InstanceHealthOut","description":"One row of the batched health list the Connected filters render."},"InstanceOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"definition_id":{"type":"string","format":"uuid","title":"Definition Id"},"connection_profile_id":{"type":"string","format":"uuid","title":"Connection Profile Id"},"installed_from_publication_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Installed From Publication Id"},"owner_identity_id":{"type":"string","format":"uuid","title":"Owner Identity Id"},"alias":{"type":"string","title":"Alias"},"slug":{"type":"string","title":"Slug"},"enabled":{"type":"boolean","title":"Enabled"},"source":{"type":"string","title":"Source"}},"type":"object","required":["id","definition_id","connection_profile_id","owner_identity_id","alias","slug","enabled","source"],"title":"InstanceOut"},"IntegrationAccessResponse":{"properties":{"subject_identity_id":{"type":"string","format":"uuid","title":"Subject Identity Id"},"subject_display_name":{"type":"string","title":"Subject Display Name"},"caller_identity_id":{"type":"string","format":"uuid","title":"Caller Identity Id"},"items":{"items":{"$ref":"#/components/schemas/ConnectionAccessItem"},"type":"array","title":"Items"}},"type":"object","required":["subject_identity_id","subject_display_name","caller_identity_id"],"title":"IntegrationAccessResponse"},"IntegrationInstallOut":{"properties":{"registration_id":{"type":"string","format":"uuid","title":"Registration Id"},"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"installed_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Installed By"},"enabled":{"type":"boolean","title":"Enabled"},"hold_state":{"anyOf":[{"type":"string","enum":["connected","granted","approved"]},{"type":"null"}],"title":"Hold State"},"credential_connected":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Credential Connected"},"credential_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Credential Status"},"test_result":{"anyOf":[{"$ref":"#/components/schemas/ConnectionTestResult"},{"type":"null"}]},"auto_granted":{"type":"boolean","title":"Auto Granted","default":false},"grant_attention":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Grant Attention"},"connection_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Connection Id"}},"type":"object","required":["registration_id","identity_id","installed_by","enabled"],"title":"IntegrationInstallOut"},"IntegrationPackageImportRequest":{"properties":{"package":{"additionalProperties":true,"type":"object","title":"Package"},"connection_mode":{"type":"string","enum":["shared","per_caller"],"title":"Connection Mode"}},"type":"object","required":["package","connection_mode"],"title":"IntegrationPackageImportRequest"},"IntegrationPublicationEditRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","title":"IntegrationPublicationEditRequest","description":"Edit a published template's public name/description in place."},"IntegrationPublicationInstallRequest":{"properties":{"share_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Share Token"},"target_library_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Library Id"},"connection_mode":{"type":"string","enum":["shared","per_caller"],"title":"Connection Mode"}},"type":"object","required":["connection_mode"],"title":"IntegrationPublicationInstallRequest"},"IntegrationPublicationListResponse":{"properties":{"publications":{"items":{"$ref":"#/components/schemas/IntegrationPublicationOut"},"type":"array","title":"Publications"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["publications"],"title":"IntegrationPublicationListResponse","description":"A keyset-paginated page of template publications (TOS-3280).\n\n``next_cursor`` is ``None`` exactly when no older rows remain; pass it\nback as ``cursor`` for the next page. A non-``None`` value IS the\ntruncation signal - there is no separate ``truncated`` flag. This\nendpoint's default ``scope='community'`` is the worst-offending\nunbounded collection in the audit: it returns every publicly published\ntemplate platform-wide, so the result grows with the marketplace, not\nwith the caller."},"IntegrationPublicationOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"source_definition_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Source Definition Id"},"catalog_definition_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Catalog Definition Id"},"execution_profile_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Execution Profile Id"},"series_id":{"type":"string","format":"uuid","title":"Series Id"},"version":{"type":"integer","title":"Version"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"vendor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vendor"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"visibility":{"type":"string","title":"Visibility"},"published_at":{"type":"string","format":"date-time","title":"Published At"},"retracted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Retracted At"},"auth_kind":{"type":"string","title":"Auth Kind"},"transport":{"type":"string","title":"Transport"},"base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Url"},"oauth_scopes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Oauth Scopes"},"requires_reconnect":{"type":"boolean","title":"Requires Reconnect"},"required_secret_names":{"items":{"type":"string"},"type":"array","title":"Required Secret Names"},"share_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Share Token"},"active_integration_count":{"type":"integer","title":"Active Integration Count","default":0},"installed_by_caller":{"type":"boolean","title":"Installed By Caller","default":false}},"type":"object","required":["id","source_definition_id","series_id","version","name","slug","description","vendor","icon_url","visibility","published_at","retracted_at","auth_kind","transport","base_url","oauth_scopes","requires_reconnect","required_secret_names"],"title":"IntegrationPublicationOut"},"IntegrationPublicationRequest":{"properties":{"visibility":{"type":"string","pattern":"^(private|public)$","title":"Visibility","default":"private"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","title":"IntegrationPublicationRequest"},"InteractAnswer":{"properties":{"interaction_id":{"type":"string","title":"Interaction Id"},"option_value":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"}],"title":"Option Value"}},"type":"object","required":["interaction_id","option_value"],"title":"InteractAnswer"},"InteractRequest":{"properties":{"interaction_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Interaction Id"},"option_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Option Value"},"answers":{"anyOf":[{"items":{"$ref":"#/components/schemas/InteractAnswer"},"type":"array"},{"type":"null"}],"title":"Answers"},"client_capabilities":{"items":{"type":"string"},"type":"array","uniqueItems":true,"title":"Client Capabilities"},"attachments":{"items":{"$ref":"#/components/schemas/AttachmentInput"},"type":"array","title":"Attachments"}},"type":"object","title":"InteractRequest"},"InteractionAnswer":{"properties":{"interaction_id":{"type":"string","title":"Interaction Id"},"heading":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Heading"},"kind":{"type":"string","enum":["choice","multi","text","scale"],"title":"Kind"},"labels":{"items":{"type":"string"},"type":"array","title":"Labels"},"value":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"}],"title":"Value"}},"type":"object","required":["interaction_id","kind","labels","value"],"title":"InteractionAnswer","description":"One answered question from an interaction form (TOS-2911).\n\nStamped on the *user* message a form submission produced, so the client can\nredraw the answered form as a card instead of showing the flat\n``Heading: Answer`` text that remains the message's model-visible content.\n\n``labels`` holds the display strings the form showed - one entry for a\nchoice/text/scale answer, one per selection for ``multi``. ``value`` is the\nraw submitted option value(s), for any consumer that needs to match the\nanswer back to the prompt's options rather than to its label."},"InteractionOption":{"properties":{"id":{"type":"string","title":"Id"},"label":{"type":"string","title":"Label"},"value":{"type":"string","title":"Value"}},"type":"object","required":["id","label","value"],"title":"InteractionOption"},"InteractionPrompt":{"properties":{"id":{"type":"string","title":"Id"},"kind":{"type":"string","enum":["choice","multi","text","scale"],"title":"Kind"},"heading":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Heading"},"options":{"items":{"$ref":"#/components/schemas/InteractionOption"},"type":"array","title":"Options"},"min":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min"},"max":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max"},"interaction_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Interaction Source"}},"type":"object","required":["id","kind","options"],"title":"InteractionPrompt","description":"A structured interaction prompt extracted from agent message content.\n\n``kind`` declares input semantics; the frontend centrally chooses the\nappropriate control from the prompt data.\n\n``heading`` is the question text for this group (set by an ``[ask:Heading]``\ntoken); ``None`` for a legacy headless group of choices.\n\n``interaction_source`` is ``None`` for plain conversational choices; it will\nbe set to a skill identifier when skill execution is wired up, letting the\n``/interact`` endpoint route to the right handler."},"InternalNoteUpdate":{"properties":{"note":{"type":"string","maxLength":4000,"minLength":1,"title":"Note"}},"type":"object","required":["note"],"title":"InternalNoteUpdate"},"InternalUpdatePolicy":{"properties":{"auto_update_enabled":{"type":"boolean","title":"Auto Update Enabled"},"channel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel"},"check_interval_minutes":{"type":"integer","title":"Check Interval Minutes"},"window_start_hour":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Window Start Hour"},"window_end_hour":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Window End Hour"},"window_timezone":{"type":"string","title":"Window Timezone"}},"type":"object","required":["auto_update_enabled","channel","check_interval_minutes","window_start_hour","window_end_hour","window_timezone"],"title":"InternalUpdatePolicy"},"InternetTaskCreateRequest":{"properties":{"goal":{"type":"string","title":"Goal"},"chat_id":{"type":"string","format":"uuid","title":"Chat Id"},"allowed_origins":{"items":{"type":"string"},"type":"array","title":"Allowed Origins","default":[]},"freshness":{"$ref":"#/components/schemas/FreshnessRequirement","default":"recent"},"minimum_independent_sources":{"type":"integer","title":"Minimum Independent Sources","default":2},"prefer_primary_sources":{"type":"boolean","title":"Prefer Primary Sources","default":false}},"type":"object","required":["goal","chat_id"],"title":"InternetTaskCreateRequest","description":"A plain-language research request, plus optional NARROWING only.\n\nDeliberately not the full ``InternetTaskV1``. Authority, privacy and budget\nare server-owned (see ``build_internet_task``), so a caller cannot widen\nwhat a task may do by editing a request body."},"InternetTaskStatusResponse":{"properties":{"task_id":{"type":"string","format":"uuid","title":"Task Id"},"status":{"type":"string","title":"Status"},"goal":{"type":"string","title":"Goal"},"mode":{"type":"string","title":"Mode"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completed At"}},"type":"object","required":["task_id","status","goal","mode"],"title":"InternetTaskStatusResponse","description":"Lifecycle projection for one admitted task."},"InvitationAcceptanceResponse":{"properties":{"status":{"type":"string","enum":["accepted","expired","unavailable","wrong_email","already_used"],"title":"Status"},"destination":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Destination"}},"type":"object","required":["status"],"title":"InvitationAcceptanceResponse"},"InvitationBody":{"properties":{"invitation":{"type":"string","maxLength":1024,"minLength":1,"title":"Invitation"}},"additionalProperties":false,"type":"object","required":["invitation"],"title":"InvitationBody"},"InvitationOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"status":{"type":"string","title":"Status"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"}},"type":"object","required":["id","status","expires_at","created_at","revoked_at"],"title":"InvitationOut","description":"Safe invitation metadata, intentionally excluding token material."},"InvitationValidationResponse":{"properties":{"status":{"type":"string","enum":["valid","expired","unavailable"],"title":"Status"},"masked_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Masked Email"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"trial_offer":{"anyOf":[{"$ref":"#/components/schemas/TrialOffer"},{"type":"null"}]}},"type":"object","required":["status"],"title":"InvitationValidationResponse"},"InvocationsResponse":{"properties":{"invocations":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Invocations"}},"type":"object","required":["invocations"],"title":"InvocationsResponse"},"IssueRequest":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"hours":{"type":"integer","maximum":720.0,"minimum":1.0,"title":"Hours","default":168},"note":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Note"}},"type":"object","required":["identity_id"],"title":"IssueRequest"},"IssueResponse":{"properties":{"id":{"type":"integer","title":"Id"},"raw_token":{"type":"string","title":"Raw Token"},"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"type":"object","required":["id","raw_token","identity_id","expires_at"],"title":"IssueResponse"},"ItemDecisionOut":{"properties":{"run_id":{"type":"string","format":"uuid","title":"Run Id"},"index":{"type":"integer","title":"Index"},"decision":{"additionalProperties":true,"type":"object","title":"Decision"}},"type":"object","required":["run_id","index","decision"],"title":"ItemDecisionOut"},"JobCardOut":{"properties":{"key":{"type":"string","title":"Key"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"needs":{"items":{"$ref":"#/components/schemas/JobNeedGroupOut"},"type":"array","title":"Needs"},"result_kind":{"type":"string","enum":["draft","flag","brief"],"title":"Result Kind"},"noun":{"type":"string","title":"Noun"},"default_schedule":{"type":"string","enum":["morning","evening","weekly_mon"],"title":"Default Schedule"},"schedule_label":{"type":"string","title":"Schedule Label"},"extra_why":{"type":"string","title":"Extra Why"}},"type":"object","required":["key","title","description","needs","result_kind","noun","default_schedule","schedule_label","extra_why"],"title":"JobCardOut"},"JobCatalogOut":{"properties":{"jobs":{"items":{"$ref":"#/components/schemas/JobCardOut"},"type":"array","title":"Jobs"}},"type":"object","required":["jobs"],"title":"JobCatalogOut"},"JobNeedGroupOut":{"properties":{"label":{"type":"string","title":"Label"},"required":{"type":"boolean","title":"Required"},"connected":{"type":"boolean","title":"Connected"},"any_of":{"items":{"$ref":"#/components/schemas/JobNeedOut"},"type":"array","title":"Any Of"}},"type":"object","required":["label","required","connected","any_of"],"title":"JobNeedGroupOut","description":"One requirement: any one member connected satisfies it."},"JobNeedOut":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"connected":{"type":"boolean","title":"Connected"},"catalog_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Catalog Slug"}},"type":"object","required":["slug","name","connected","catalog_slug"],"title":"JobNeedOut"},"JobRun":{"properties":{"id":{"type":"string","title":"Id"},"triggered_by":{"type":"string","title":"Triggered By"},"started_at":{"type":"string","title":"Started At"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completed At"},"status":{"type":"string","title":"Status"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"}},"type":"object","required":["id","triggered_by","started_at","completed_at","status","duration_ms","result","error_message"],"title":"JobRun"},"JobRunsResponse":{"properties":{"runs":{"items":{"$ref":"#/components/schemas/JobRun"},"type":"array","title":"Runs"}},"type":"object","required":["runs"],"title":"JobRunsResponse"},"JobSettingsPatch":{"properties":{"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"cron_expr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cron Expr"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"timeout_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Timeout Seconds"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","title":"JobSettingsPatch","description":"A partial update to one job's or sweep's override row (TOS-5088 R7).\n\nEvery field defaults to unset, distinguished from an explicit ``null`` via\n``model_fields_set`` - the PATCH handler only touches columns present in\nthe request body at all, so omitting a field leaves its current value (or\ndefault) untouched, while sending it as ``null`` clears any existing\noverride on that column back to \"use the registry default\"."},"JobSettingsResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"cron_expr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cron Expr"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"timeout_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Timeout Seconds"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["job_id","enabled","cron_expr","timezone","timeout_seconds","note","updated_by","updated_at"],"title":"JobSettingsResponse","description":"The override row for one job or sweep, as stored - not merged with the\nregistry default. NULL means \"no override on this column\"."},"JobStatus":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"tier":{"type":"string","title":"Tier"},"heavy":{"type":"boolean","title":"Heavy"},"cron":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cron"},"effective_cron":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Effective Cron"},"effective_timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Effective Timezone"},"cron_overridden":{"type":"boolean","title":"Cron Overridden"},"interval_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Interval Seconds"},"sweep":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sweep"},"warn_after_minutes":{"type":"integer","title":"Warn After Minutes"},"error_after_minutes":{"type":"integer","title":"Error After Minutes"},"health":{"type":"string","enum":["ok","warn","error","unknown"],"title":"Health"},"last_run_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Run At"},"last_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Status"},"last_result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Last Result"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"last_duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Duration Ms"},"next_run_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Run At"},"execution":{"type":"string","enum":["resident","offloaded","disabled"],"title":"Execution"},"enabled_override":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled Override"},"success_runs_7d":{"type":"integer","title":"Success Runs 7D"},"found_work_runs_7d":{"type":"integer","title":"Found Work Runs 7D"}},"type":"object","required":["id","name","description","tier","heavy","cron","effective_cron","effective_timezone","cron_overridden","interval_seconds","sweep","warn_after_minutes","error_after_minutes","health","last_run_at","last_status","last_result","last_error","last_duration_ms","next_run_at","execution","enabled_override","success_runs_7d","found_work_runs_7d"],"title":"JobStatus"},"JobsStatusResponse":{"properties":{"jobs":{"items":{"$ref":"#/components/schemas/JobStatus"},"type":"array","title":"Jobs"},"sweeps":{"items":{"$ref":"#/components/schemas/SweepStatus"},"type":"array","title":"Sweeps"},"summary":{"$ref":"#/components/schemas/JobsSummary"}},"type":"object","required":["jobs","sweeps","summary"],"title":"JobsStatusResponse"},"JobsSummary":{"properties":{"starts_24h":{"type":"integer","title":"Starts 24H"},"run_hours_24h":{"type":"number","title":"Run Hours 24H"},"resident":{"type":"integer","title":"Resident"},"offloaded":{"type":"integer","title":"Offloaded"},"disabled":{"type":"integer","title":"Disabled"},"health":{"additionalProperties":{"type":"integer"},"type":"object","title":"Health"}},"type":"object","required":["starts_24h","run_hours_24h","resident","offloaded","disabled","health"],"title":"JobsSummary"},"JoinRequestIn":{"properties":{"message":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Message"}},"type":"object","title":"JoinRequestIn","description":"Ask to join. The message is optional and is shown to the reviewer."},"JsonValue":{},"KeyDetailLite":{"properties":{"fingerprint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fingerprint"},"probe_status":{"type":"string","title":"Probe Status"},"probe_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Probe Message"},"last_probed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Probed At"},"last_success_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Success At"}},"type":"object","required":["fingerprint","probe_status","probe_message","last_probed_at","last_success_at"],"title":"KeyDetailLite"},"KeyResponse":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"key_prefix":{"type":"string","title":"Key Prefix"},"last_used_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Used At"},"created_at":{"type":"string","title":"Created At"},"kind":{"type":"string","const":"tq","title":"Kind"}},"type":"object","required":["id","name","key_prefix","last_used_at","created_at","kind"],"title":"KeyResponse"},"KillSwitchIn":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["enabled"],"title":"KillSwitchIn"},"KillSwitchOut":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["enabled","reason","updated_at"],"title":"KillSwitchOut"},"KnownBundleVersionsOut":{"properties":{"bundle_versions":{"items":{"type":"string"},"type":"array","title":"Bundle Versions"},"running_bundle_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Running Bundle Version"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"complete":{"type":"boolean","title":"Complete"}},"type":"object","required":["bundle_versions","running_bundle_version","next_cursor","complete"],"title":"KnownBundleVersionsOut"},"LastBlockedEmailOut":{"properties":{"reason":{"type":"string","title":"Reason"},"blocked_at":{"type":"string","title":"Blocked At"}},"type":"object","required":["reason","blocked_at"],"title":"LastBlockedEmailOut","description":"Why the most recent outbound send for this identity was blocked (TOS-3921)."},"LearnedRow":{"properties":{"proposition_id":{"type":"string","format":"uuid","title":"Proposition Id"},"text":{"type":"string","title":"Text"},"source_label":{"type":"string","title":"Source Label"}},"additionalProperties":false,"type":"object","required":["proposition_id","text","source_label"],"title":"LearnedRow"},"LearnedVerdictIn":{"properties":{"verdict":{"type":"string","enum":["right","wrong"],"title":"Verdict"}},"additionalProperties":false,"type":"object","required":["verdict"],"title":"LearnedVerdictIn"},"LearningScope":{"type":"string","enum":["private","discretion","open"],"title":"LearningScope","description":"TOS-6036: what an agent carries from one person it serves to the next.\n\nOwner-only, agent-level, stored at\n``identity_config.config.learning_scope``. Distinct from\n:class:`UnreviewedInformationScope`, which only widens READ access for\nauto-sent replies and says nothing about what a teach WRITE is scoped to.\n\n* ``private`` keeps every learned item partitioned to the person who said\n  it (the pre-TOS-6036 behaviour).\n* ``discretion`` (default) shares items classified ``about_work`` with\n  everyone the agent serves and keeps ``about_person`` items private.\n* ``open`` shares everything the agent learns with everyone it serves."},"LedgerEntry":{"properties":{"id":{"type":"string","title":"Id"},"source":{"type":"string","title":"Source"},"sentence":{"type":"string","title":"Sentence"},"occurred_at":{"type":"string","format":"date-time","title":"Occurred At"}},"type":"object","required":["id","source","sentence","occurred_at"],"title":"LedgerEntry","description":"One concrete, dated improvement, naming a real artifact."},"LegalReviewIn":{"properties":{"completed":{"type":"boolean","title":"Completed"}},"additionalProperties":false,"type":"object","required":["completed"],"title":"LegalReviewIn"},"LibraryMediaUploadResponse":{"properties":{"document_id":{"type":"string","format":"uuid","title":"Document Id"},"slug":{"type":"string","title":"Slug"},"filename":{"type":"string","title":"Filename"},"mime_type":{"type":"string","title":"Mime Type"},"size":{"type":"integer","title":"Size"},"render_path":{"type":"string","title":"Render Path"}},"type":"object","required":["document_id","slug","filename","mime_type","size","render_path"],"title":"LibraryMediaUploadResponse"},"LibraryResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"my_role":{"type":"string","title":"My Role"},"is_direct_member":{"type":"boolean","title":"Is Direct Member","default":true},"can_administer":{"type":"boolean","title":"Can Administer","default":false},"owner_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner Identity Id"},"owner_identity_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Identity Display Name"},"owner_identity_avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Identity Avatar Url"},"owner_identity_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Identity Kind"},"is_private":{"type":"boolean","title":"Is Private","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"deleted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Deleted At"},"document_count":{"type":"integer","title":"Document Count","default":0},"member_count":{"type":"integer","title":"Member Count","default":0},"last_activity_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Activity At"},"members_preview":{"items":{"$ref":"#/components/schemas/MemberPreviewResponse"},"type":"array","title":"Members Preview"},"parent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent Id"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"org_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Org Identity Id"},"org_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Display Name"},"owner_org_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner Org Identity Id"},"owner_org_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Org Display Name"}},"type":"object","required":["id","name","my_role","created_at","updated_at"],"title":"LibraryResponse"},"LifecycleProfileListResponse":{"properties":{"profiles":{"items":{"$ref":"#/components/schemas/LifecycleProfileResponse"},"type":"array","title":"Profiles"}},"type":"object","required":["profiles"],"title":"LifecycleProfileListResponse"},"LifecycleProfileResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"owner_identity_id":{"type":"string","format":"uuid","title":"Owner Identity Id"},"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"manager_identity_id":{"type":"string","format":"uuid","title":"Manager Identity Id"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"status":{"type":"string","title":"Status"},"current_version":{"$ref":"#/components/schemas/LifecycleProfileVersionResponse"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","owner_identity_id","tenant_id","manager_identity_id","slug","name","status","current_version","created_at","updated_at"],"title":"LifecycleProfileResponse"},"LifecycleProfileVersionListResponse":{"properties":{"versions":{"items":{"$ref":"#/components/schemas/LifecycleProfileVersionResponse"},"type":"array","title":"Versions"}},"type":"object","required":["versions"],"title":"LifecycleProfileVersionListResponse"},"LifecycleProfileVersionResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"profile_id":{"type":"string","format":"uuid","title":"Profile Id"},"version_number":{"type":"integer","title":"Version Number"},"definition":{"additionalProperties":true,"type":"object","title":"Definition"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"created_by_identity_id":{"type":"string","format":"uuid","title":"Created By Identity Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","profile_id","version_number","definition","created_by_identity_id","created_at"],"title":"LifecycleProfileVersionResponse"},"LineChartArtifact":{"properties":{"chart_type":{"type":"string","const":"line","title":"Chart Type"},"payload":{"$ref":"#/components/schemas/LineChartPayloadResponse"}},"type":"object","required":["chart_type","payload"],"title":"LineChartArtifact"},"LineChartPayloadResponse":{"properties":{"title":{"type":"string","title":"Title"},"x_label":{"type":"string","title":"X Label"},"y_label":{"type":"string","title":"Y Label"},"series":{"items":{"$ref":"#/components/schemas/_LineSeries"},"type":"array","title":"Series"},"reference_lines":{"items":{"$ref":"#/components/schemas/_ReferenceLine"},"type":"array","title":"Reference Lines"},"y_scale":{"type":"string","title":"Y Scale","default":"linear"},"value_format":{"anyOf":[{"$ref":"#/components/schemas/_ValueFormat"},{"type":"null"}]}},"type":"object","required":["title","x_label","y_label","series"],"title":"LineChartPayloadResponse"},"LineageEvent":{"properties":{"seq":{"type":"integer","title":"Seq"},"kind":{"type":"string","title":"Kind"},"extractor_ver":{"type":"string","title":"Extractor Ver"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"invalidated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Invalidated At"},"window_seq":{"type":"integer","title":"Window Seq"},"chat_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Chat Id"},"chat_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chat Title"}},"type":"object","required":["seq","kind","extractor_ver","created_at","invalidated_at","window_seq","chat_id","chat_title"],"title":"LineageEvent"},"LinkOption":{"properties":{"registration_id":{"type":"string","format":"uuid","title":"Registration Id"},"name":{"type":"string","title":"Name"},"can_link":{"type":"boolean","title":"Can Link"}},"type":"object","required":["registration_id","name","can_link"],"title":"LinkOption"},"LinkRequest":{"properties":{"registration_id":{"type":"string","format":"uuid","title":"Registration Id"}},"additionalProperties":false,"type":"object","required":["registration_id"],"title":"LinkRequest"},"LinkResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"proxy_agent_id":{"type":"string","format":"uuid","title":"Proxy Agent Id"},"agency_user_subject":{"type":"string","title":"Agency User Subject"},"linked_at":{"type":"string","title":"Linked At"},"revoked_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Revoked At"}},"type":"object","required":["id","proxy_agent_id","agency_user_subject","linked_at","revoked_at"],"title":"LinkResponse"},"ListBlock":{"properties":{"type":{"type":"string","const":"list","title":"Type"},"items":{"items":{"$ref":"#/components/schemas/UiListItem"},"type":"array","maxItems":20,"minItems":1,"title":"Items"}},"additionalProperties":false,"type":"object","required":["type","items"],"title":"ListBlock"},"ListingConsentResponse":{"properties":{"priced":{"type":"boolean","title":"Priced","default":false}},"type":"object","title":"ListingConsentResponse","description":"TOS-3663 / TOS-5058: the owner's remaining Marketplace listing consent.\n\n``available`` and ``disclosed`` were removed: whether an identity is\nlisted, and whether its profile shows once listed, both derive from\n``Identity.connection_policy`` (``off`` = not listed; otherwise listed\nwith its profile shown). Stored at ``identity_config.config[\"listing\"]``;\na missing key reads as False."},"ListingConsentUpdate":{"properties":{"priced":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Priced"}},"additionalProperties":false,"type":"object","title":"ListingConsentUpdate","description":"Partial update: an omitted key keeps its stored value."},"LoginBindingOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"issuer":{"type":"string","title":"Issuer"},"subject":{"type":"string","title":"Subject"},"client_id":{"type":"string","title":"Client Id"},"revoked":{"type":"boolean","title":"Revoked"}},"type":"object","required":["id","identity_id","issuer","subject","client_id","revoked"],"title":"LoginBindingOut"},"LoopHealthResponse":{"properties":{"incident_to_applied_fix":{"$ref":"#/components/schemas/HealthMetricView"},"incident_to_deployed_platform_fix":{"$ref":"#/components/schemas/HealthMetricView"},"trial_win_rate":{"$ref":"#/components/schemas/HealthMetricView"},"revert_rate":{"$ref":"#/components/schemas/HealthMetricView"},"human_overturn_rate":{"$ref":"#/components/schemas/HealthMetricView"},"recurrence_after_fix":{"$ref":"#/components/schemas/HealthMetricView"},"cost_per_confirmed_finding":{"$ref":"#/components/schemas/HealthMetricView"},"unattended_merge":{"$ref":"#/components/schemas/HealthMetricView"}},"additionalProperties":false,"type":"object","required":["incident_to_applied_fix","incident_to_deployed_platform_fix","trial_win_rate","revert_rate","human_overturn_rate","recurrence_after_fix","cost_per_confirmed_finding","unattended_merge"],"title":"LoopHealthResponse"},"LoopStrip":{"properties":{"watched":{"$ref":"#/components/schemas/thinqos__services__feedback_loop__outcomes__LoopStage"},"noticed":{"$ref":"#/components/schemas/thinqos__services__feedback_loop__outcomes__LoopStage"},"filed":{"$ref":"#/components/schemas/thinqos__services__feedback_loop__outcomes__LoopStage"},"fixed":{"$ref":"#/components/schemas/thinqos__services__feedback_loop__outcomes__LoopStage"},"verified":{"$ref":"#/components/schemas/thinqos__services__feedback_loop__outcomes__LoopStage"}},"type":"object","required":["watched","noticed","filed","fixed","verified"],"title":"LoopStrip"},"ManagedByOut":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"managed_by_library_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Managed By Library Id"}},"type":"object","required":["identity_id","managed_by_library_id"],"title":"ManagedByOut"},"ManagedIdentityClaimOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"target_identity_id":{"type":"string","format":"uuid","title":"Target Identity Id"},"claimant_email":{"type":"string","title":"Claimant Email"},"issued_by_identity_id":{"type":"string","format":"uuid","title":"Issued By Identity Id"},"issued_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Issued At"},"expires_at":{"type":"string","title":"Expires At"},"status":{"type":"string","enum":["pending","claimed","canceled","expired"],"title":"Status"},"claimed_clerk_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Claimed Clerk User Id"}},"type":"object","required":["id","target_identity_id","claimant_email","issued_by_identity_id","issued_at","expires_at","status","claimed_clerk_user_id"],"title":"ManagedIdentityClaimOut"},"ManagedIdentityClaimRequest":{"properties":{"claimant_email":{"type":"string","title":"Claimant Email"},"expires_in_days":{"type":"integer","maximum":30.0,"minimum":1.0,"title":"Expires In Days","default":7}},"type":"object","required":["claimant_email"],"title":"ManagedIdentityClaimRequest"},"ManifestCreateRequest":{"properties":{"name":{"type":"string","title":"Name"},"manifest":{"additionalProperties":true,"type":"object","title":"Manifest"},"connection_mode":{"type":"string","enum":["shared","per_caller"],"title":"Connection Mode"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"plaintext_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plaintext Secret"},"auth_secret_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Secret Ref"},"secret_refs":{"additionalProperties":{"type":"string"},"type":"object","title":"Secret Refs"},"secret_values":{"additionalProperties":{"type":"string"},"type":"object","title":"Secret Values"},"credential_fit_override_reason":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"title":"Credential Fit Override Reason"},"allow_unconnected":{"type":"boolean","title":"Allow Unconnected","default":false}},"type":"object","required":["name","manifest","connection_mode"],"title":"ManifestCreateRequest"},"ManifestValidationRequest":{"properties":{"manifest":{"additionalProperties":true,"type":"object","title":"Manifest"}},"type":"object","required":["manifest"],"title":"ManifestValidationRequest"},"ManifestValidationResponse":{"properties":{"manifest":{"additionalProperties":true,"type":"object","title":"Manifest"},"tool_count":{"type":"integer","title":"Tool Count"},"tools":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array","title":"Tools"},"required_secrets":{"items":{"type":"string"},"type":"array","title":"Required Secrets"},"auth_kind":{"type":"string","title":"Auth Kind"},"gemini_schema_warnings":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object","title":"Gemini Schema Warnings"}},"type":"object","required":["manifest","tool_count","tools","required_secrets","auth_kind"],"title":"ManifestValidationResponse"},"MarkSeenOut":{"properties":{"ok":{"type":"boolean","title":"Ok"},"unseen_count":{"type":"integer","title":"Unseen Count"}},"type":"object","required":["ok","unseen_count"],"title":"MarkSeenOut"},"MarketplaceAcquireConsentOut":{"properties":{"summary":{"items":{"prefixItems":[{"type":"string"},{"type":"string"}],"type":"array","maxItems":2,"minItems":2},"type":"array","title":"Summary"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"tools":{"items":{"type":"string"},"type":"array","title":"Tools"}},"type":"object","title":"MarketplaceAcquireConsentOut","description":"What acquiring this object grants, shown BEFORE the acquire call."},"MarketplaceAcquireIn":{"properties":{"inputs":{"additionalProperties":{"type":"string"},"type":"object","title":"Inputs"}},"type":"object","title":"MarketplaceAcquireIn","description":"The caller's answers to ``MarketplaceAcquireOut.inputs``.\n\nWholly optional: a POST with no body at all is still valid, and is the\nonly valid shape for a type that declares no inputs."},"MarketplaceAcquireInputOut":{"properties":{"name":{"type":"string","title":"Name"},"label":{"type":"string","title":"Label"},"kind":{"type":"string","title":"Kind","default":"text"},"required":{"type":"boolean","title":"Required","default":true},"choices":{"items":{"prefixItems":[{"type":"string"},{"type":"string"}],"type":"array","maxItems":2,"minItems":2},"type":"array","title":"Choices"},"help_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Help Text"}},"type":"object","required":["name","label"],"title":"MarketplaceAcquireInputOut","description":"One choice the caller must make before this object can be acquired.\n\nRendered by the shell from these fields alone. It dispatches on ``kind``,\nnever on the input's ``name``, so a type that needs a new choice tomorrow\nneeds no shell change. Echoed back through\n``MarketplaceAcquireIn.inputs`` keyed by ``name``."},"MarketplaceAcquireOut":{"properties":{"family":{"type":"string","title":"Family"},"coordinates":{"additionalProperties":{"type":"string"},"type":"object","title":"Coordinates"},"available":{"type":"boolean","title":"Available","default":true},"unavailable_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unavailable Reason"},"releasable":{"type":"boolean","title":"Releasable","default":true},"release_unavailable_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Unavailable Reason"},"inputs":{"items":{"$ref":"#/components/schemas/MarketplaceAcquireInputOut"},"type":"array","title":"Inputs"},"consent":{"anyOf":[{"$ref":"#/components/schemas/MarketplaceAcquireConsentOut"},{"type":"null"}]}},"type":"object","required":["family"],"title":"MarketplaceAcquireOut","description":"How the shell acquires this object, resolved per type.\n\n``family`` is the only thing the frontend dispatches on, against its own\nper-family client map. The shell knows no endpoint paths by type."},"MarketplaceAcquiredOut":{"properties":{"family":{"type":"string","title":"Family"},"held_object_id":{"type":"string","format":"uuid","title":"Held Object Id"},"state":{"type":"string","title":"State","default":"ready"}},"type":"object","required":["family","held_object_id"],"title":"MarketplaceAcquiredOut","description":"What one acquisition produced.\n\n``state`` is deliberately not a synonym for held. An account exists and is\nthe caller's the moment it is created, and still has no credential, so\n``needs_connection`` is the honest answer until one arrives. The shell\nnavigates to ``held_object_id`` and says exactly that rather than\n\"Connected\"."},"MarketplaceCapabilityDetailOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"type_code":{"type":"string","title":"Type Code"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"publisher":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publisher"},"publisher_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Publisher Id"},"origin":{"type":"string","title":"Origin"},"source_kind":{"type":"string","title":"Source Kind"},"visibility":{"type":"string","title":"Visibility"},"current_version_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Current Version Id"},"current_version_no":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Version No"},"current_upstream_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Upstream Version"},"capabilities":{"items":{"type":"string"},"type":"array","title":"Capabilities"},"side_effects":{"items":{"type":"string"},"type":"array","title":"Side Effects"},"domain_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Domain Ids"},"domain_names":{"items":{"type":"string"},"type":"array","title":"Domain Names"},"rating_avg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rating Avg"},"rating_count":{"type":"integer","title":"Rating Count","default":0},"my_stars":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"My Stars"},"holder_count":{"type":"integer","title":"Holder Count","default":0},"import_status":{"type":"string","title":"Import Status","default":"ready"},"import_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Import Error"},"held":{"type":"boolean","title":"Held","default":false},"held_object_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Held Object Id"},"held_object_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Held Object Kind"},"mine":{"type":"boolean","title":"Mine","default":false},"ratable":{"type":"boolean","title":"Ratable","default":false},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"held_back":{"anyOf":[{"$ref":"#/components/schemas/MarketplaceHeldBackOut"},{"type":"null"}]},"acquire":{"anyOf":[{"$ref":"#/components/schemas/MarketplaceAcquireOut"},{"type":"null"}]},"maintenance":{"anyOf":[{"$ref":"#/components/schemas/MarketplaceMaintenanceOut"},{"type":"null"}]},"edit":{"anyOf":[{"$ref":"#/components/schemas/MarketplaceEditOut"},{"type":"null"}]},"listing":{"anyOf":[{"$ref":"#/components/schemas/MarketplaceListingOut"},{"type":"null"}]},"needed_by":{"items":{"$ref":"#/components/schemas/MarketplaceNeededByOut"},"type":"array","title":"Needed By"},"type_label_singular":{"type":"string","title":"Type Label Singular"},"type_label_plural":{"type":"string","title":"Type Label Plural"},"type_verb_acquire":{"type":"string","title":"Type Verb Acquire"},"type_verb_release":{"type":"string","title":"Type Verb Release"},"type_icon_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type Icon Name"},"versions":{"items":{"$ref":"#/components/schemas/MarketplaceVersionOut"},"type":"array","title":"Versions"},"ratings":{"items":{"$ref":"#/components/schemas/MarketplaceRatingOut"},"type":"array","title":"Ratings"},"sections":{"items":{"$ref":"#/components/schemas/MarketplaceDetailSectionOut"},"type":"array","title":"Sections"},"connect_options":{"items":{"$ref":"#/components/schemas/MarketplaceConnectOptionOut"},"type":"array","title":"Connect Options"}},"type":"object","required":["id","type_code","slug","name","description","origin","source_kind","visibility","type_label_singular","type_label_plural","type_verb_acquire","type_verb_release"],"title":"MarketplaceCapabilityDetailOut"},"MarketplaceCapabilityOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"type_code":{"type":"string","title":"Type Code"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"publisher":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publisher"},"publisher_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Publisher Id"},"origin":{"type":"string","title":"Origin"},"source_kind":{"type":"string","title":"Source Kind"},"visibility":{"type":"string","title":"Visibility"},"current_version_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Current Version Id"},"current_version_no":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Version No"},"current_upstream_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Upstream Version"},"capabilities":{"items":{"type":"string"},"type":"array","title":"Capabilities"},"side_effects":{"items":{"type":"string"},"type":"array","title":"Side Effects"},"domain_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Domain Ids"},"domain_names":{"items":{"type":"string"},"type":"array","title":"Domain Names"},"rating_avg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rating Avg"},"rating_count":{"type":"integer","title":"Rating Count","default":0},"my_stars":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"My Stars"},"holder_count":{"type":"integer","title":"Holder Count","default":0},"import_status":{"type":"string","title":"Import Status","default":"ready"},"import_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Import Error"},"held":{"type":"boolean","title":"Held","default":false},"held_object_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Held Object Id"},"held_object_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Held Object Kind"},"mine":{"type":"boolean","title":"Mine","default":false},"ratable":{"type":"boolean","title":"Ratable","default":false},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"held_back":{"anyOf":[{"$ref":"#/components/schemas/MarketplaceHeldBackOut"},{"type":"null"}]},"acquire":{"anyOf":[{"$ref":"#/components/schemas/MarketplaceAcquireOut"},{"type":"null"}]},"maintenance":{"anyOf":[{"$ref":"#/components/schemas/MarketplaceMaintenanceOut"},{"type":"null"}]},"edit":{"anyOf":[{"$ref":"#/components/schemas/MarketplaceEditOut"},{"type":"null"}]},"listing":{"anyOf":[{"$ref":"#/components/schemas/MarketplaceListingOut"},{"type":"null"}]},"needed_by":{"items":{"$ref":"#/components/schemas/MarketplaceNeededByOut"},"type":"array","title":"Needed By"}},"type":"object","required":["id","type_code","slug","name","description","origin","source_kind","visibility"],"title":"MarketplaceCapabilityOut","description":"One capability card. ``id`` is the object id. All generic columns."},"MarketplaceConnectOptionOut":{"properties":{"profile_id":{"type":"string","format":"uuid","title":"Profile Id"},"label":{"type":"string","title":"Label"},"auth_kind":{"type":"string","title":"Auth Kind"}},"type":"object","required":["profile_id","label","auth_kind"],"title":"MarketplaceConnectOptionOut","description":"One live way to start a new connection (TOS-7031). See ConnectOption."},"MarketplaceDetailSectionOut":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"rows":{"items":{"prefixItems":[{"type":"string"},{"type":"string"}],"type":"array","maxItems":2,"minItems":2},"type":"array","title":"Rows"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"chips":{"items":{"type":"string"},"type":"array","title":"Chips"},"caution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Caution"}},"type":"object","required":["id","title"],"title":"MarketplaceDetailSectionOut","description":"One typed section on the detail view, from the type's resolver."},"MarketplaceEditOut":{"properties":{"family":{"type":"string","title":"Family"},"can_edit":{"type":"boolean","title":"Can Edit"},"can_rollback":{"type":"boolean","title":"Can Rollback"},"export_formats":{"items":{"type":"string"},"type":"array","title":"Export Formats"}},"type":"object","required":["family","can_edit","can_rollback"],"title":"MarketplaceEditOut","description":"Whether/how the caller may edit this object (TOS-3861).\n\n``family`` mirrors ``MarketplaceAcquireOut.family`` - the frontend\ndispatches edit/export/rollback calls through its own per-family client\nmap, against the type's existing endpoints. There is no generic\nMarketplace write route."},"MarketplaceFacetsOut":{"properties":{"types":{"items":{"$ref":"#/components/schemas/MarketplaceTypeOut"},"type":"array","title":"Types"},"publishers":{"items":{"$ref":"#/components/schemas/MarketplacePublisherOut"},"type":"array","title":"Publishers"},"capabilities":{"items":{"$ref":"#/components/schemas/MarketplaceValueFacetOut"},"type":"array","title":"Capabilities"},"side_effects":{"items":{"$ref":"#/components/schemas/MarketplaceValueFacetOut"},"type":"array","title":"Side Effects"},"domains":{"items":{"$ref":"#/components/schemas/MarketplaceValueFacetOut"},"type":"array","title":"Domains"},"type_facets":{"items":{"$ref":"#/components/schemas/MarketplaceTypeFacetOut"},"type":"array","title":"Type Facets"},"sorts":{"items":{"$ref":"#/components/schemas/MarketplaceSortOut"},"type":"array","title":"Sorts"}},"type":"object","title":"MarketplaceFacetsOut","description":"Everything the filter chrome renders, all of it server-derived."},"MarketplaceHeldBackOut":{"properties":{"held_version_no":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Held Version No"},"current_version_no":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Version No"},"added_tools":{"items":{"type":"string"},"type":"array","title":"Added Tools"},"added_capabilities":{"items":{"type":"string"},"type":"array","title":"Added Capabilities"},"kind":{"type":"string","enum":["consent","permission_offer"],"title":"Kind","default":"consent"},"added_permissions":{"items":{"type":"string"},"type":"array","title":"Added Permissions"}},"type":"object","title":"MarketplaceHeldBackOut","description":"This holder is pinned behind current because current asks for more.\n\nTOS-3713 shipped the hold itself: a new version that declares tools or\ncapabilities beyond what the holder approved is NOT adopted, and the\nholder keeps running the version they consented to rather than being\nwidened silently. That is the right behaviour and it was completely\ninvisible, readable only by diffing two version ids nothing exposed.\n\nPresent only for the consent-widening case. A ``pinned`` update policy and\nan owner reading their own object also leave a non-current version in\nplay, and neither is something to ask anyone to accept."},"MarketplaceListOut":{"properties":{"updates_total":{"type":"integer","title":"Updates Total","default":0},"items":{"items":{"$ref":"#/components/schemas/MarketplaceCapabilityOut"},"type":"array","title":"Items"},"facets":{"anyOf":[{"$ref":"#/components/schemas/MarketplaceFacetsOut"},{"type":"null"}]},"total":{"type":"integer","title":"Total"},"types":{"anyOf":[{"items":{"$ref":"#/components/schemas/MarketplaceTypeOut"},"type":"array"},{"type":"null"}],"title":"Types"}},"type":"object","required":["total"],"title":"MarketplaceListOut"},"MarketplaceListingConnectorOut":{"properties":{"name":{"type":"string","title":"Name"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"}},"type":"object","required":["name"],"title":"MarketplaceListingConnectorOut","description":"One connector a listed agent works through, drawn as a logo (TOS-7352)."},"MarketplaceListingOut":{"properties":{"subject_kind":{"type":"string","title":"Subject Kind"},"subject_name":{"type":"string","title":"Subject Name"},"tagline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tagline"},"price_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price Label"},"billing_mode":{"anyOf":[{"type":"string","enum":["owner_pays","caller_pays"]},{"type":"null"}],"title":"Billing Mode"},"interview_enabled":{"type":"boolean","title":"Interview Enabled","default":false},"connectors":{"items":{"$ref":"#/components/schemas/MarketplaceListingConnectorOut"},"type":"array","title":"Connectors"}},"type":"object","required":["subject_kind","subject_name"],"title":"MarketplaceListingOut","description":"Who a listing is and what it costs (TOS-7352)."},"MarketplaceMaintenanceOut":{"properties":{"family":{"type":"string","title":"Family"},"actions":{"items":{"type":"string"},"type":"array","title":"Actions"}},"type":"object","required":["family"],"title":"MarketplaceMaintenanceOut","description":"Upkeep the OWNER may perform on their own copy (TOS-3743).\n\nDistinct from acquiring: these actions do not change who holds a\ncapability, they repair or refresh the definition the caller already owns.\nThe three the retired Skills surface offered (refresh from source, retry a\nfailed import, dismiss a failed import) were the initial vocabulary;\nTOS-4595 added ``delete`` for a definition the caller authored themselves,\nwhich has no import provenance and so matched none of the other three.\n\nWhich actions are OFFERED is decided entirely from generic ``objects``\ncolumns (``imported_from``, ``import_status``, and ownership), so a type\nnobody has written code for inherits them the moment its rows carry the\nsame provenance. Only WHICH ENDPOINT performs one is per-type, and that\nrides the same ``family`` the acquire plan already names, dispatched in\nthe frontend's per-family client map. There is no branch on a type code on\neither side of the wire."},"MarketplaceNeededByOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"MarketplaceNeededByOut","description":"One of the caller's agents that needs a capability (TOS-7352)."},"MarketplacePublisherOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["id","name","count"],"title":"MarketplacePublisherOut","description":"One publisher/source facet, with the count matching the current query."},"MarketplaceRatingOut":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"rater_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rater Name"},"stars":{"type":"integer","title":"Stars"},"review":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["identity_id","stars","updated_at"],"title":"MarketplaceRatingOut","description":"One holder's rating of a capability (``object_ratings``)."},"MarketplaceSortOut":{"properties":{"value":{"type":"string","title":"Value"},"label":{"type":"string","title":"Label"}},"type":"object","required":["value","label"],"title":"MarketplaceSortOut","description":"One ordering the caller may ask for, with its display label.\n\nShipped from the server rather than hard-coded in the shell because the\nOFFER is registry-driven (TOS-3743): a type that does not\n``supports_ratings`` has no meaningful \"Top rated\", and one that does not\n``supports_usages`` has no \"Most learned\". The shell renders whatever list\narrives and sends the value straight back, exactly as it does for facets."},"MarketplaceTypeFacetOut":{"properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"type_code":{"type":"string","title":"Type Code"},"options":{"items":{"$ref":"#/components/schemas/MarketplaceValueFacetOut"},"type":"array","title":"Options"}},"type":"object","required":["key","label","type_code"],"title":"MarketplaceTypeFacetOut","description":"A per-type facet contributed by that type's resolver."},"MarketplaceTypeOut":{"properties":{"code":{"type":"string","title":"Code"},"label_singular":{"type":"string","title":"Label Singular"},"label_plural":{"type":"string","title":"Label Plural"},"verb_acquire":{"type":"string","title":"Verb Acquire"},"verb_release":{"type":"string","title":"Verb Release"},"supports_ratings":{"type":"boolean","title":"Supports Ratings"},"supports_versions":{"type":"boolean","title":"Supports Versions"},"supports_usages":{"type":"boolean","title":"Supports Usages"},"icon_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Name"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["code","label_singular","label_plural","verb_acquire","verb_release","supports_ratings","supports_versions","supports_usages","count"],"title":"MarketplaceTypeOut","description":"One capability type, straight from the ``object_types`` registry.\n\nEvery word the shell renders for a type is here. The shell must never\nderive a label or a verb from ``code``."},"MarketplaceValueFacetOut":{"properties":{"value":{"type":"string","title":"Value"},"label":{"type":"string","title":"Label"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["value","label","count"],"title":"MarketplaceValueFacetOut","description":"A plain value facet (capability, side effect, domain)."},"MarketplaceVersionOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"version_no":{"type":"integer","title":"Version No"},"upstream_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Upstream Version"},"change_type":{"type":"string","title":"Change Type"},"observed_at":{"type":"string","format":"date-time","title":"Observed At"},"is_current":{"type":"boolean","title":"Is Current","default":false},"setup_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Setup Id"},"setup_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Setup Label"}},"type":"object","required":["id","version_no","change_type","observed_at"],"title":"MarketplaceVersionOut","description":"One append-only content revision of a capability (``object_versions``)."},"MarkupRateCreate":{"properties":{"funding_source":{"type":"string","title":"Funding Source"},"markup_pct":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string"}],"title":"Markup Pct"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["funding_source","markup_pct"],"title":"MarkupRateCreate"},"MasterStatus":{"properties":{"configured":{"type":"boolean","title":"Configured"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","required":["configured","email"],"title":"MasterStatus"},"MaterializeIconRequest":{"properties":{"url":{"type":"string","maxLength":2048,"minLength":1,"title":"Url","description":"Absolute https URL of the icon to fetch and store."}},"type":"object","required":["url"],"title":"MaterializeIconRequest","description":"Body for POST /api/integrations/instances/:id/icon/materialize."},"McpAppArtifact":{"properties":{"chart_type":{"type":"string","const":"mcp_app","title":"Chart Type"},"registration_id":{"type":"string","title":"Registration Id"},"tool_name":{"type":"string","title":"Tool Name"},"upstream_tool":{"type":"string","title":"Upstream Tool"},"resource_uri":{"type":"string","title":"Resource Uri"},"title":{"type":"string","title":"Title"},"arguments":{"additionalProperties":true,"type":"object","title":"Arguments"},"result":{"additionalProperties":true,"type":"object","title":"Result"}},"type":"object","required":["chart_type","registration_id","tool_name","upstream_tool","resource_uri","title"],"title":"McpAppArtifact","description":"A connected server's MCP Apps widget, shown after its tool ran (TOS-2341 Phase 4)."},"McpAppRef":{"properties":{"message_id":{"type":"string","format":"uuid","title":"Message Id"},"artifact_index":{"type":"integer","maximum":64.0,"minimum":0.0,"title":"Artifact Index"}},"type":"object","required":["message_id","artifact_index"],"title":"McpAppRef"},"McpAppToolCall":{"properties":{"message_id":{"type":"string","format":"uuid","title":"Message Id"},"artifact_index":{"type":"integer","maximum":64.0,"minimum":0.0,"title":"Artifact Index"},"name":{"type":"string","maxLength":128,"minLength":1,"title":"Name"},"arguments":{"additionalProperties":true,"type":"object","title":"Arguments"}},"type":"object","required":["message_id","artifact_index","name"],"title":"McpAppToolCall"},"McpAppWidget":{"properties":{"html":{"type":"string","title":"Html"},"csp":{"type":"string","title":"Csp"},"prefers_border":{"type":"boolean","title":"Prefers Border"}},"type":"object","required":["html","csp","prefers_border"],"title":"McpAppWidget"},"McpAuthFailure":{"properties":{"registration_id":{"type":"string","title":"Registration Id"},"registration_name":{"type":"string","title":"Registration Name"},"registration_owner_identity_id":{"type":"string","title":"Registration Owner Identity Id"},"invoking_identity_id":{"type":"string","title":"Invoking Identity Id"},"credential_target_identity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Credential Target Identity Id"},"auth_kind":{"type":"string","title":"Auth Kind"},"upstream_status":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Upstream Status"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"tool_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Name"},"trace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trace Id"},"failure_kind":{"type":"string","title":"Failure Kind","default":"rejected"},"connect_definition_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connect Definition Id"},"connect_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connect Name"},"connect_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connect Instance Id"}},"type":"object","required":["registration_id","registration_name","registration_owner_identity_id","invoking_identity_id","auth_kind"],"title":"McpAuthFailure","description":"Credential-rejection context for a failed MCP tool call.\n\nPinned to an assistant message's metadata when forwarding classified the\ncall as ``error_kind='auth_failed'`` (upstream 401/403/407 or OAuth\nrefresh failure). The frontend uses this to render an inline\n\"update credential\" prompt without re-fetching the trace row.\n\n``registration_owner_identity_id`` lets the UI gate the editor: only the\nowner sees the form; everyone else sees a passive \"ask <owner>\" message."},"McpConsultInvocationDetail":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"api_key_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Api Key Id"},"agent_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Identity Id"},"chat_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Chat Id"},"request_message_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Request Message Id"},"response_message_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Response Message Id"},"client_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Name"},"transport":{"type":"string","title":"Transport"},"external_invocation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Invocation Id"},"request_body_redacted":{"additionalProperties":true,"type":"object","title":"Request Body Redacted"},"context_redacted":{"additionalProperties":true,"type":"object","title":"Context Redacted"},"request_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Request Bytes"},"context_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Context Bytes"},"response_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Response Bytes"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms"},"status":{"type":"string","title":"Status"},"error_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Kind"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"started_at":{"type":"string","format":"date-time","title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"}},"type":"object","required":["id","identity_id","api_key_id","agent_identity_id","chat_id","request_message_id","response_message_id","client_name","transport","external_invocation_id","request_body_redacted","context_redacted","request_bytes","context_bytes","response_bytes","duration_ms","status","error_kind","error_message","started_at","completed_at"],"title":"McpConsultInvocationDetail","description":"Detail view for a delegated MCP consult invocation."},"McpForwardedCallDetail":{"properties":{"trace_id":{"type":"string","format":"uuid","title":"Trace Id"},"lens_name":{"type":"string","title":"Lens Name"},"registration_name":{"type":"string","title":"Registration Name"},"source_name":{"type":"string","title":"Source Name"},"upstream_tool_name":{"type":"string","title":"Upstream Tool Name"},"exposed_tool_name":{"type":"string","title":"Exposed Tool Name"},"duration_ms":{"type":"integer","title":"Duration Ms"},"success":{"type":"boolean","title":"Success"},"error_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Kind"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"started_at":{"type":"string","format":"date-time","title":"Started At"},"transport":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transport"},"agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"},"request_args_redacted":{"additionalProperties":true,"type":"object","title":"Request Args Redacted"},"request_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Request Bytes"},"response_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Response Bytes"},"resolution_trace":{"additionalProperties":true,"type":"object","title":"Resolution Trace"},"catalog_trace":{"additionalProperties":true,"type":"object","title":"Catalog Trace"},"call_trace":{"additionalProperties":true,"type":"object","title":"Call Trace"}},"type":"object","required":["trace_id","lens_name","registration_name","source_name","upstream_tool_name","exposed_tool_name","duration_ms","success","error_kind","error_message","started_at","request_args_redacted","request_bytes","response_bytes","resolution_trace","catalog_trace","call_trace"],"title":"McpForwardedCallDetail","description":"Detail-endpoint response - includes JSONB traces."},"McpLastFailure":{"properties":{"upstream_tool_name":{"type":"string","title":"Upstream Tool Name"},"error_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Kind"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"reason":{"type":"string","title":"Reason"},"counts_against_health":{"type":"boolean","title":"Counts Against Health"},"started_at":{"type":"string","format":"date-time","title":"Started At"},"occurrences_24h":{"type":"integer","title":"Occurrences 24H"},"affected_callers":{"type":"integer","title":"Affected Callers"}},"type":"object","required":["upstream_tool_name","error_kind","error_message","reason","counts_against_health","started_at","occurrences_24h","affected_callers"],"title":"McpLastFailure","description":"Most recent failed forwarded call for a registration."},"McpRegistrationDiagnostics":{"properties":{"last_failure":{"anyOf":[{"$ref":"#/components/schemas/McpLastFailure"},{"type":"null"}]},"per_tool_reliability":{"items":{"$ref":"#/components/schemas/McpToolReliability"},"type":"array","title":"Per Tool Reliability"}},"type":"object","title":"McpRegistrationDiagnostics","description":"Live diagnostics derived from forwarded-call telemetry."},"McpToolCallTrace":{"properties":{"trace_id":{"type":"string","title":"Trace Id"},"tool_name":{"type":"string","title":"Tool Name"},"tool_label":{"type":"string","title":"Tool Label","default":""},"source_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Label"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms"},"registration_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registration Id"},"success":{"type":"boolean","title":"Success","default":true},"error_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Kind"},"response_status":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Response Status"},"response_is_error":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Response Is Error"},"phase_timings_ms":{"additionalProperties":{"type":"integer"},"type":"object","title":"Phase Timings Ms"},"request_target":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Target"}},"type":"object","required":["trace_id","tool_name"],"title":"McpToolCallTrace","description":"Attribution trace for a single MCP-forwarded tool call.\n\nEmbedded in ``MessageResponse.mcp_tool_call_traces`` for assistant messages\nthat executed one or more MCP tool calls.  The ``trace_id`` links to a row\nin ``mcp_forwarded_calls`` (exposed via ``GET /api/mcp/calls/{trace_id}``).\n\n``registration_id`` and ``success`` are carried so the frontend can detect\npartial-success per registration - one tool 401'd while others on the same\nregistration succeeded in the same turn - and soften the credential-\nrejected banner accordingly (TOS-303). Defaults preserve back-compat with\nrows persisted before TOS-303: ``success`` defaults to True so legacy\ntraces keep counting as \"did succeed\" for the partial-success check, and\n``registration_id`` may be absent on the no-registrations-bound\nshort-circuit."},"McpToolReliability":{"properties":{"upstream_tool_name":{"type":"string","title":"Upstream Tool Name"},"calls":{"type":"integer","title":"Calls"},"successes":{"type":"integer","title":"Successes"},"last_error_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error Kind"}},"type":"object","required":["upstream_tool_name","calls","successes"],"title":"McpToolReliability","description":"Per-tool call rollup over the last 24 hours."},"MeasureDoc":{"properties":{"name":{"type":"string","title":"Name"},"kind":{"type":"string","enum":["attestation","count","latency","outcome","rate"],"title":"Kind"},"window_days":{"type":"integer","enum":[7,28],"title":"Window Days"},"source":{"oneOf":[{"properties":{"manual":{"const":true}},"additionalProperties":false,"type":"object","required":["manual"]},{"properties":{"review":{"type":"string","pattern":"\\S"}},"additionalProperties":false,"type":"object","required":["review"]},{"properties":{"score":{"type":"string","pattern":"\\S"}},"additionalProperties":false,"type":"object","required":["score"]},{"properties":{"signal":{"type":"string","pattern":"\\S"}},"additionalProperties":false,"type":"object","required":["signal"]}],"description":"Exactly one real evidence source. manual:true means owner attestation, not automated monitoring."},"target":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Target","description":"Required for every kind except attestation."},"direction":{"type":"string","enum":["at_least","at_most"],"title":"Direction","default":"at_least"}},"additionalProperties":false,"type":"object","required":["name","kind","window_days","source"],"title":"MeasureDoc"},"MemberCaptureStatusOut":{"properties":{"source_key":{"type":"string","title":"Source Key"},"status":{"type":"string","enum":["connected","stale","not_connected"],"title":"Status"},"last_seen_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen At"}},"type":"object","required":["source_key","status"],"title":"MemberCaptureStatusOut"},"MemberListResponse":{"properties":{"members":{"items":{"$ref":"#/components/schemas/MemberResponse"},"type":"array","title":"Members"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["members"],"title":"MemberListResponse","description":"A keyset-paginated page of one folder's active members (TOS-3280)."},"MemberPreviewResponse":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"display_name":{"type":"string","title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"kind":{"type":"string","title":"Kind"}},"type":"object","required":["identity_id","display_name","avatar_url","kind"],"title":"MemberPreviewResponse","description":"Compact member preview for sidebar avatar stacks."},"MemberResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"library_id":{"type":"string","format":"uuid","title":"Library Id"},"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"identity_display_name":{"type":"string","title":"Identity Display Name"},"identity_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Identity Email"},"identity_avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Identity Avatar Url"},"identity_kind":{"type":"string","title":"Identity Kind"},"role":{"type":"string","title":"Role"},"trust_mode":{"type":"string","title":"Trust Mode"},"is_active":{"type":"boolean","title":"Is Active"},"learns_from_library":{"type":"boolean","title":"Learns From Library"},"learned_document_count":{"type":"integer","title":"Learned Document Count"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","library_id","identity_id","identity_display_name","identity_email","identity_avatar_url","identity_kind","role","trust_mode","is_active","learns_from_library","learned_document_count","created_at","updated_at"],"title":"MemberResponse"},"MemberRow":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"display_name":{"type":"string","title":"Display Name"},"kind":{"type":"string","title":"Kind"},"role":{"type":"string","title":"Role"},"trust_mode":{"type":"string","title":"Trust Mode"},"capability_role":{"type":"string","title":"Capability Role"}},"type":"object","required":["identity_id","display_name","kind","role","trust_mode","capability_role"],"title":"MemberRow","description":"Folder member with identity metadata."},"MessageAutomationTrigger":{"properties":{"kind":{"type":"string","title":"Kind"},"label":{"type":"string","title":"Label"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"},"trigger_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Trigger Id"},"run_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Run Id"},"trigger_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger Kind"},"trigger_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger Reason"},"user_message_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"User Message Id"},"occurred_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Occurred At"}},"type":"object","required":["kind","label"],"title":"MessageAutomationTrigger"},"MessageCostBreakdown":{"properties":{"message_id":{"type":"string","format":"uuid","title":"Message Id"},"lines":{"items":{"$ref":"#/components/schemas/CostLine"},"type":"array","title":"Lines"},"scope":{"type":"string","enum":["message","turn","inferred_from_tool_traces"],"title":"Scope"},"total_usd":{"type":"number","title":"Total Usd"},"total_provider_usd":{"type":"number","title":"Total Provider Usd"},"total_charged_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Charged Usd"}},"type":"object","required":["message_id","lines","scope","total_usd","total_provider_usd","total_charged_usd"],"title":"MessageCostBreakdown"},"MessageData":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"chat_id":{"type":"string","format":"uuid","title":"Chat Id"},"sender_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Sender Id"},"sender":{"anyOf":[{"$ref":"#/components/schemas/SenderSummary"},{"type":"null"}]},"role":{"type":"string","title":"Role","default":""},"content":{"type":"string","title":"Content","default":""},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms"},"is_deleted":{"type":"boolean","title":"Is Deleted","default":false},"has_attachments":{"type":"boolean","title":"Has Attachments","default":false},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"revised_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revised At"},"attachments":{"items":{"$ref":"#/components/schemas/AttachmentData"},"type":"array","title":"Attachments"},"compression_summary":{"anyOf":[{"$ref":"#/components/schemas/CompressionSummary"},{"type":"null"}]}},"type":"object","required":["id","chat_id","sender_id"],"title":"MessageData"},"MessageDelegatedSource":{"properties":{"kind":{"type":"string","title":"Kind"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"invocation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Invocation Id"},"api_key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key Id"},"transport":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transport"}},"type":"object","required":["kind"],"title":"MessageDelegatedSource"},"MessageListResponse":{"properties":{"messages":{"items":{"$ref":"#/components/schemas/MessageResponse"},"type":"array","title":"Messages"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","title":"MessageListResponse","description":"A keyset-paginated page of messages (TOS-464).\n\n``messages`` is ordered oldest→newest for display and windowed on the most\nrecent messages. ``next_cursor`` is an opaque token for fetching the next\n(older) page; ``None`` means no older messages remain."},"MessageLookupResponse":{"properties":{"chat_id":{"type":"string","format":"uuid","title":"Chat Id"},"chat_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chat Title"},"container_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container Kind"},"message":{"$ref":"#/components/schemas/MessageResponse"}},"type":"object","required":["chat_id","message"],"title":"MessageLookupResponse","description":"One message resolved from its id alone, with the chat it lives in."},"MessageProvenance":{"properties":{"origin":{"type":"string","title":"Origin"},"delegated_source":{"anyOf":[{"$ref":"#/components/schemas/MessageDelegatedSource"},{"type":"null"}]},"subconscious_source":{"anyOf":[{"$ref":"#/components/schemas/MessageSubconsciousSource"},{"type":"null"}]}},"type":"object","required":["origin"],"title":"MessageProvenance"},"MessageProvenanceLookupResponse":{"properties":{"message_id":{"type":"string","format":"uuid","title":"Message Id"},"edges":{"items":{"$ref":"#/components/schemas/ProvenanceEdgeResponse"},"type":"array","title":"Edges"}},"type":"object","required":["message_id","edges"],"title":"MessageProvenanceLookupResponse"},"MessageReplyToResponse":{"properties":{"message_id":{"type":"string","format":"uuid","title":"Message Id"},"sender_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Sender Id"},"sender_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender Display Name"},"sender_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender Kind"},"capture_author_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capture Author Key"},"capture_author_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capture Author Kind"},"excerpt":{"type":"string","title":"Excerpt"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"deleted":{"type":"boolean","title":"Deleted","default":false}},"type":"object","required":["message_id","sender_id","sender_display_name","sender_kind","excerpt","created_at"],"title":"MessageReplyToResponse","description":"TOS-6892 quote card: the message a ``MessageResponse`` replies to.\n\n``excerpt`` is a UI-only preview (mentions projected to plain ``@Name``,\nsimple markdown stripped, capped at 200 chars) - never what an agent's\nprompt sees. ``deleted=True`` means the original was soft-deleted after\nthis reply was sent; ``excerpt`` is then empty and the client renders\n\"Message deleted\" instead of a clickable card."},"MessageResponse":{"properties":{"initial_response_terminal_status":{"anyOf":[{"$ref":"#/components/schemas/InitialResponseTerminalStatus"},{"type":"null"}]},"initial_response_run_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Initial Response Run Id"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"browser_timing":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Browser Timing"},"server_duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Server Duration Ms"},"response_charge":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Response Charge"},"id":{"type":"string","format":"uuid","title":"Id"},"sender_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Sender Id"},"sender_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender Display Name"},"sender_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender Kind"},"provider_capture":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/CalendarCapture"},{"$ref":"#/components/schemas/GmailCapture"}],"discriminator":{"propertyName":"kind","mapping":{"calendar_event":"#/components/schemas/CalendarCapture","gmail_message":"#/components/schemas/GmailCapture"}}},{"type":"null"}],"title":"Provider Capture"},"capture_author_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capture Author Key"},"capture_author_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capture Author Kind"},"sender_avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender Avatar Url"},"sent_via":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sent Via"},"role":{"type":"string","title":"Role"},"content":{"type":"string","title":"Content"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"revised_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revised At"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"input_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Input Tokens"},"output_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Tokens"},"cache_read_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cache Read Tokens"},"cache_creation_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cache Creation Tokens"},"cost_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cost Usd"},"cost_status":{"type":"string","title":"Cost Status","default":"not_applicable"},"attachments":{"items":{"$ref":"#/components/schemas/AttachmentResponse"},"type":"array","title":"Attachments"},"interaction_prompts":{"items":{"$ref":"#/components/schemas/InteractionPrompt"},"type":"array","title":"Interaction Prompts"},"show_request":{"anyOf":[{"$ref":"#/components/schemas/ShowRequestResponse"},{"type":"null"}]},"interaction_answers":{"items":{"$ref":"#/components/schemas/InteractionAnswer"},"type":"array","title":"Interaction Answers"},"mcp_tool_call_traces":{"items":{"$ref":"#/components/schemas/McpToolCallTrace"},"type":"array","title":"Mcp Tool Call Traces"},"mcp_auth_failures":{"items":{"$ref":"#/components/schemas/McpAuthFailure"},"type":"array","title":"Mcp Auth Failures"},"concierge_guidance":{"items":{"$ref":"#/components/schemas/ConciergeGuidanceAction"},"type":"array","title":"Concierge Guidance"},"training_receipts":{"items":{"$ref":"#/components/schemas/TrainingReceiptCard"},"type":"array","title":"Training Receipts"},"connection_checks":{"items":{"$ref":"#/components/schemas/ConnectionCheckCard"},"type":"array","title":"Connection Checks"},"provenance":{"anyOf":[{"$ref":"#/components/schemas/MessageProvenance"},{"type":"null"}]},"artifacts":{"items":{"oneOf":[{"$ref":"#/components/schemas/LineChartArtifact"},{"$ref":"#/components/schemas/BarChartArtifact"},{"$ref":"#/components/schemas/AreaChartArtifact"},{"$ref":"#/components/schemas/ScatterChartArtifact"},{"$ref":"#/components/schemas/RadarChartArtifact"},{"$ref":"#/components/schemas/DonutChartArtifact"},{"$ref":"#/components/schemas/TableArtifact"},{"$ref":"#/components/schemas/IframeEmbedArtifact"},{"$ref":"#/components/schemas/UiArtifact"},{"$ref":"#/components/schemas/UiActionArtifact"},{"$ref":"#/components/schemas/McpAppArtifact"}],"discriminator":{"propertyName":"chart_type","mapping":{"area":"#/components/schemas/AreaChartArtifact","bar":"#/components/schemas/BarChartArtifact","donut":"#/components/schemas/DonutChartArtifact","iframe-embed":"#/components/schemas/IframeEmbedArtifact","line":"#/components/schemas/LineChartArtifact","mcp_app":"#/components/schemas/McpAppArtifact","radar":"#/components/schemas/RadarChartArtifact","scatter":"#/components/schemas/ScatterChartArtifact","table":"#/components/schemas/TableArtifact","ui":"#/components/schemas/UiArtifact","ui_action":"#/components/schemas/UiActionArtifact"}}},"type":"array","title":"Artifacts"},"ui_state":{"additionalProperties":{"$ref":"#/components/schemas/UiStateEntry"},"type":"object","title":"Ui State"},"result_blocks":{"items":{"$ref":"#/components/schemas/ResultBlockResponse"},"type":"array","title":"Result Blocks"},"my_feedback":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"My Feedback"},"can_delete":{"type":"boolean","title":"Can Delete","default":false},"compression_summary":{"anyOf":[{"$ref":"#/components/schemas/CompressionSummaryResponse"},{"type":"null"}]},"reply_to":{"anyOf":[{"$ref":"#/components/schemas/MessageReplyToResponse"},{"type":"null"}]},"system_event":{"anyOf":[{"$ref":"#/components/schemas/SystemEventResponse"},{"type":"null"}]},"read_receipts":{"items":{"$ref":"#/components/schemas/ReadReceiptResponse"},"type":"array","title":"Read Receipts"},"automation_trigger":{"anyOf":[{"$ref":"#/components/schemas/MessageAutomationTrigger"},{"type":"null"}]},"activity":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Activity"},"turn_job":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Turn Job"},"approval_resume":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Approval Resume"},"room_turn_status":{"anyOf":[{"$ref":"#/components/schemas/RoomTurnStatus"},{"type":"null"}]},"turn_error":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Turn Error"},"answer_trace":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Answer Trace"},"loop_exit_limitation":{"anyOf":[{"$ref":"#/components/schemas/OperationLimitationResponse"},{"type":"null"}]},"interim_segments":{"items":{"type":"string"},"type":"array","title":"Interim Segments"},"auto_continue":{"anyOf":[{"$ref":"#/components/schemas/AutoContinueChainResponse"},{"type":"null"}]},"submitted_by_mode":{"type":"string","title":"Submitted By Mode","default":"human"},"suggestion_outcome":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Suggestion Outcome"}},"type":"object","required":["id","sender_id","sender_display_name","sender_kind","sender_avatar_url","role","content","model","provider","revised_at","created_at"],"title":"MessageResponse"},"MessageSearchHit":{"properties":{"chat_id":{"type":"string","format":"uuid","title":"Chat Id"},"chat_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chat Title"},"message_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Message Id"},"occurred_at":{"type":"string","format":"date-time","title":"Occurred At"},"sender_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender Role"},"excerpt":{"type":"string","title":"Excerpt"},"source":{"type":"string","title":"Source"}},"type":"object","required":["chat_id","occurred_at","excerpt","source"],"title":"MessageSearchHit","description":"One matched message (or thread segment) from the caller's own history."},"MessageSearchResponse":{"properties":{"hits":{"items":{"$ref":"#/components/schemas/MessageSearchHit"},"type":"array","title":"Hits"},"degraded":{"type":"boolean","title":"Degraded","default":false}},"type":"object","required":["hits"],"title":"MessageSearchResponse"},"MessageSubconsciousSource":{"properties":{"chat_id":{"type":"string","title":"Chat Id"},"label":{"type":"string","title":"Label"},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id"}},"type":"object","required":["chat_id","label"],"title":"MessageSubconsciousSource","description":"TOS-424/TOS-581: the conversation (and message) an ambient ask came from."},"MetricsBlock":{"properties":{"type":{"type":"string","const":"metrics","title":"Type"},"items":{"items":{"$ref":"#/components/schemas/UiMetric"},"type":"array","maxItems":8,"minItems":1,"title":"Items"}},"additionalProperties":false,"type":"object","required":["type","items"],"title":"MetricsBlock"},"MindContextCoverageResponse":{"properties":{"runs":{"items":{"$ref":"#/components/schemas/MindContextCoverageRunOut"},"type":"array","title":"Runs"}},"type":"object","required":["runs"],"title":"MindContextCoverageResponse"},"MindContextCoverageRunOut":{"properties":{"id":{"type":"string","title":"Id"},"created_at":{"type":"string","title":"Created At"},"chat_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chat Id"},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id"},"identity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Identity Id"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"provider":{"type":"string","title":"Provider"},"model":{"type":"string","title":"Model"},"total_results":{"type":"integer","title":"Total Results"},"status_counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Status Counts"},"source_counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Source Counts"},"payload_fields":{"items":{"type":"string"},"type":"array","title":"Payload Fields"},"coverage":{"additionalProperties":true,"type":"object","title":"Coverage"}},"type":"object","required":["id","created_at","chat_id","message_id","identity_id","agent_id","provider","model","total_results","status_counts","source_counts","payload_fields","coverage"],"title":"MindContextCoverageRunOut"},"MindContextDisabledRequest":{"properties":{"disabled":{"type":"boolean","title":"Disabled"}},"type":"object","required":["disabled"],"title":"MindContextDisabledRequest"},"MindEvalRow":{"properties":{"mind_id":{"type":"string","format":"uuid","title":"Mind Id"},"evaluation_id":{"type":"string","format":"uuid","title":"Evaluation Id"},"mind_identity_name":{"type":"string","title":"Mind Identity Name"},"confidence":{"type":"number","title":"Confidence"},"salience":{"type":"number","title":"Salience"},"valence":{"type":"number","title":"Valence"},"protection_level":{"type":"string","title":"Protection Level"},"lifecycle_status":{"type":"string","title":"Lifecycle Status"},"reinforcement_count":{"type":"integer","title":"Reinforcement Count"},"last_reinforced_at":{"type":"string","format":"date-time","title":"Last Reinforced At"}},"type":"object","required":["mind_id","evaluation_id","mind_identity_name","confidence","salience","valence","protection_level","lifecycle_status","reinforcement_count","last_reinforced_at"],"title":"MindEvalRow"},"MindExtractionScopeResponse":{"properties":{"episodes_taught":{"type":"integer","title":"Episodes Taught"},"episodes_total":{"type":"integer","title":"Episodes Total"},"truncated":{"type":"boolean","title":"Truncated"}},"type":"object","required":["episodes_taught","episodes_total","truncated"],"title":"MindExtractionScopeResponse","description":"How much of a document actually reached Mind extraction (TOS-2063).\n\nHistorical metadata from the retired inline document extraction worker.\nExisting document responses retain this read-only record; current teaching\nuses provenance imprints and resumable episode state instead."},"MindPathStage":{"properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"detail":{"type":"string","title":"Detail"}},"type":"object","required":["key","label","detail"],"title":"MindPathStage"},"MindTrainingSummary":{"properties":{"attempted":{"type":"integer","title":"Attempted"},"trained":{"type":"integer","title":"Trained"},"blocked":{"type":"integer","title":"Blocked"},"other":{"type":"integer","title":"Other"},"reasons":{"items":{"type":"string"},"type":"array","title":"Reasons"}},"type":"object","required":["attempted","trained","blocked","other","reasons"],"title":"MindTrainingSummary","description":"What a PATCH's synchronous training trigger actually did (TOS-5207\nitem 7). Without this, a PATCH that turns a website owned+mind returns 200\nwhether every document trained, all of them were blocked (e.g. the caller\nadministers the folder but does not own the target agent), or nothing\nqualified at all."},"MindVersion":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"mind_version":{"type":"integer","title":"Mind Version"}},"type":"object","required":["identity_id","mind_version"],"title":"MindVersion"},"MindsetDetailResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"provider_family":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Family"},"is_own":{"type":"boolean","title":"Is Own"},"is_system":{"type":"boolean","title":"Is System"},"current_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Version"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"},"published":{"type":"boolean","title":"Published"},"operations":{"additionalProperties":true,"type":"object","title":"Operations"},"rules":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Rules"}},"type":"object","required":["id","name","description","provider_family","is_own","is_system","current_version","updated_at","published","operations","rules"],"title":"MindsetDetailResponse"},"MindsetListResponse":{"properties":{"mindsets":{"items":{"$ref":"#/components/schemas/MindsetSummaryResponse"},"type":"array","title":"Mindsets"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["mindsets"],"title":"MindsetListResponse","description":"A keyset-paginated page of Mindsets (TOS-3280).\n\n``next_cursor`` is ``None`` exactly when no older rows remain; pass it\nback as ``cursor`` for the next page. A non-``None`` value IS the\ntruncation signal - there is no separate ``truncated`` flag."},"MindsetSummaryResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"provider_family":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Family"},"is_own":{"type":"boolean","title":"Is Own"},"is_system":{"type":"boolean","title":"Is System"},"current_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Version"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"},"published":{"type":"boolean","title":"Published"}},"type":"object","required":["id","name","description","provider_family","is_own","is_system","current_version","updated_at","published"],"title":"MindsetSummaryResponse"},"MintedCredentialOut":{"properties":{"key_id":{"type":"string","format":"uuid","title":"Key Id"},"name":{"type":"string","title":"Name"},"key_prefix":{"type":"string","title":"Key Prefix"},"raw_key":{"type":"string","title":"Raw Key"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"additionalProperties":false,"type":"object","required":["key_id","name","key_prefix","raw_key","created_at"],"title":"MintedCredentialOut","description":"A credential minted by an explicit action, returned exactly once.\n\nOnly an action response ever carries ``raw_key``: it is hashed at rest and\ncannot be read back, so a re-mint issues a NEW key rather than re-returning\nthis one. No read endpoint (catalog, detail, setup descriptor) ever includes\nthis model."},"MissingKeysResponse":{"properties":{"required_providers":{"items":{"type":"string"},"type":"array","title":"Required Providers"},"have_providers":{"items":{"type":"string"},"type":"array","title":"Have Providers"},"missing_providers":{"items":{"type":"string"},"type":"array","title":"Missing Providers"}},"type":"object","required":["required_providers","have_providers","missing_providers"],"title":"MissingKeysResponse"},"ModelBundleResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"provider_family":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Family"},"version":{"type":"integer","title":"Version"},"is_own":{"type":"boolean","title":"Is Own","default":false}},"type":"object","required":["id","slug","name","description","provider_family","version"],"title":"ModelBundleResponse"},"ModelBundleUpdateBody":{"properties":{"template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Id"},"template_version_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Version Id"}},"type":"object","title":"ModelBundleUpdateBody"},"ModelParameters":{"properties":{"request_retained":{"type":"boolean","title":"Request Retained"},"reasoning_effort":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reasoning Effort"},"reasoning_toggle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reasoning Toggle"},"reasoning_budget_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reasoning Budget Tokens"},"max_output_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Output Tokens"},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature"},"response_format":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Response Format"},"context_ceiling_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Context Ceiling Tokens"},"reserved_output_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reserved Output Tokens"},"available_prompt_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Available Prompt Tokens"},"turn_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Turn Class"},"stop_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stop Reason"},"config_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config Source"},"route_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route Tier"},"route_tier_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route Tier Reason"}},"type":"object","required":["request_retained"],"title":"ModelParameters","description":"What the answer call actually ran with (TOS-6894).\n\nRead from the answer run's ``model_runs`` row, never from the template or\nthe catalog: the receipt says what executed, not what was configured.\n``request_retained`` is False once retention has nulled ``raw_request``\n(30 days), at which point the request-derived fields are None because the\nevidence is gone, not because the call had no such setting."},"ModelResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"provider":{"type":"string","title":"Provider"},"model_id":{"type":"string","title":"Model Id"},"display_name":{"type":"string","title":"Display Name"},"model_type":{"type":"string","title":"Model Type"},"capabilities":{"additionalProperties":true,"type":"object","title":"Capabilities"},"status":{"type":"string","title":"Status"},"deprecated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Deprecated At"},"pricing":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pricing"},"has_active_contract":{"type":"boolean","title":"Has Active Contract","default":false},"availability":{"type":"string","enum":["available","not_configured","deprecated","disabled"],"title":"Availability","default":"disabled"},"provider_key_state":{"type":"string","enum":["configured","missing"],"title":"Provider Key State","default":"missing"}},"type":"object","required":["id","provider","model_id","display_name","model_type","capabilities","status","deprecated_at"],"title":"ModelResponse"},"MoveDomainRequest":{"properties":{"parent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"string"},{"type":"null"}],"title":"Parent Id"}},"type":"object","title":"MoveDomainRequest","description":"TOS-2002: re-parent a folder. ``parent_id=None`` promotes it to a root."},"MoveInstancesBody":{"properties":{"instance_ids":{"items":{"type":"string","format":"uuid"},"type":"array","maxItems":100,"minItems":1,"title":"Instance Ids"},"library_id":{"type":"string","format":"uuid","title":"Library Id"},"confirm_shared_account_exposure":{"type":"boolean","title":"Confirm Shared Account Exposure","default":false}},"type":"object","required":["instance_ids","library_id"],"title":"MoveInstancesBody"},"MoveSkillsBody":{"properties":{"skill_ids":{"items":{"type":"string","format":"uuid"},"type":"array","maxItems":100,"minItems":1,"title":"Skill Ids"},"library_id":{"type":"string","format":"uuid","title":"Library Id"}},"type":"object","required":["skill_ids","library_id"],"title":"MoveSkillsBody"},"MoveSkillsResponse":{"properties":{"moved":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Moved"},"library_id":{"type":"string","format":"uuid","title":"Library Id"},"errors":{"items":{"$ref":"#/components/schemas/SkillBulkErrorItem"},"type":"array","title":"Errors"}},"type":"object","required":["moved","library_id","errors"],"title":"MoveSkillsResponse"},"MuteOverrideRequest":{"properties":{"override":{"anyOf":[{"type":"string","enum":["muted","unmuted"]},{"type":"null"}],"title":"Override"}},"type":"object","title":"MuteOverrideRequest"},"MyDeletePreflightOut":{"properties":{"can_delete":{"type":"boolean","title":"Can Delete"},"clerk_will_be_deleted":{"type":"boolean","title":"Clerk Will Be Deleted"},"is_last_admin":{"type":"boolean","title":"Is Last Admin"},"solely_owned_agents":{"items":{"$ref":"#/components/schemas/DeleteBlockerAgentOut"},"type":"array","title":"Solely Owned Agents"},"owned_mindsets":{"items":{"$ref":"#/components/schemas/DeleteBlockerMindsetOut"},"type":"array","title":"Owned Mindsets"}},"type":"object","required":["can_delete","clerk_will_be_deleted","is_last_admin","solely_owned_agents","owned_mindsets"],"title":"MyDeletePreflightOut","description":"What deleting your own account would actually do (TOS-4278)."},"MyOrganizationJoinRequestOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"organization_display_name":{"type":"string","title":"Organization Display Name"},"status":{"type":"string","title":"Status"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"decided_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Decided At"}},"type":"object","required":["id","tenant_id","organization_display_name","status","message","created_at","decided_at"],"title":"MyOrganizationJoinRequestOut","description":"One request the caller made, as their own list renders it."},"MyOrganizationOut":{"properties":{"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"display_name":{"type":"string","title":"Display Name"},"role":{"type":"string","title":"Role"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"}},"type":"object","required":["tenant_id","display_name","role","logo_url"],"title":"MyOrganizationOut","description":"One organization the caller belongs to (TOS-4078)."},"MySourceCreateBody":{"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"owner":{"type":"string","maxLength":200,"minLength":1,"title":"Owner"},"repo":{"type":"string","maxLength":200,"minLength":1,"title":"Repo"},"branch":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Branch"},"path_prefix":{"anyOf":[{"type":"string","maxLength":400},{"type":"null"}],"title":"Path Prefix"}},"type":"object","required":["name","owner","repo"],"title":"MySourceCreateBody","description":"Register a user-owned GitHub skill source (TOS-1711 v1: github_repo only)."},"NamespaceAccessOut":{"properties":{"namespace_id":{"type":"string","title":"Namespace Id"},"namespace":{"type":"string","title":"Namespace"},"environment_name":{"type":"string","title":"Environment Name"},"library_id":{"type":"string","title":"Library Id"},"level":{"type":"string","title":"Level"},"can_manage":{"type":"boolean","title":"Can Manage"}},"type":"object","required":["namespace_id","namespace","environment_name","library_id","level","can_manage"],"title":"NamespaceAccessOut"},"NamespaceOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"environment_id":{"type":"string","title":"Environment Id"},"environment_name":{"type":"string","title":"Environment Name"},"library_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Library Id"}},"type":"object","required":["id","name","environment_id","environment_name","library_id"],"title":"NamespaceOut"},"NativeMemoryFactRequestV1":{"properties":{"source":{"type":"string","maxLength":32,"minLength":1,"title":"Source"},"source_external_id":{"type":"string","maxLength":256,"minLength":1,"title":"Source External Id"},"label":{"type":"string","maxLength":256,"minLength":1,"title":"Label"},"text":{"type":"string","maxLength":6000,"minLength":1,"title":"Text"}},"type":"object","required":["source","source_external_id","label","text"],"title":"NativeMemoryFactRequestV1","description":"Import one curated native-agent-memory fact as a durable Mind source."},"NativeMemoryFactResultV1":{"properties":{"imprint":{"$ref":"#/components/schemas/ImprintItemV1"},"queued_for_extraction":{"type":"boolean","title":"Queued For Extraction"}},"type":"object","required":["imprint","queued_for_extraction"],"title":"NativeMemoryFactResultV1"},"NavItemBody":{"properties":{"agency_proxy_agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agency Proxy Agent Id"},"id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Id"},"kind":{"type":"string","enum":["agent","web_page"],"title":"Kind"},"label":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Label"},"description":{"anyOf":[{"type":"string","maxLength":400},{"type":"null"}],"title":"Description"},"icon":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Icon"},"enabled":{"type":"boolean","title":"Enabled","default":true},"agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Id"},"url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Url"},"sandbox":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":7},{"type":"null"}],"title":"Sandbox"},"allow":{"items":{"type":"string"},"type":"array","maxItems":2,"title":"Allow"},"open_in_new_tab":{"type":"boolean","title":"Open In New Tab","default":false},"icon_image":{"anyOf":[{"type":"string","maxLength":1048576},{"type":"null"}],"title":"Icon Image"}},"type":"object","required":["kind"],"title":"NavItemBody"},"NavigationUpdate":{"properties":{"items":{"items":{"$ref":"#/components/schemas/NavItemBody"},"type":"array","maxItems":20,"title":"Items"},"shortcut_limit":{"anyOf":[{"type":"integer","maximum":20.0,"minimum":1.0},{"type":"null"}],"title":"Shortcut Limit"}},"type":"object","required":["items"],"title":"NavigationUpdate"},"NeedAction":{"properties":{"label":{"type":"string","title":"Label"},"kind":{"type":"string","enum":["open_chats","reconnect_all","open_run","connect","start_interview","restart_setup","open_notifications","open_marketplace_connections"],"title":"Kind"},"target":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target"}},"additionalProperties":false,"type":"object","required":["label","kind"],"title":"NeedAction"},"NeedGroup":{"properties":{"kind":{"type":"string","enum":["approve","broken","failed","open","other"],"title":"Kind"},"title":{"type":"string","title":"Title"},"detail":{"type":"string","title":"Detail"},"count":{"type":"integer","title":"Count"},"action":{"$ref":"#/components/schemas/NeedAction"},"dismissible":{"type":"boolean","title":"Dismissible","default":false},"key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"},"refs":{"items":{"type":"string"},"type":"array","title":"Refs"},"connection_slugs":{"items":{"type":"string"},"type":"array","title":"Connection Slugs"},"agent":{"anyOf":[{"$ref":"#/components/schemas/AgentRef"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["kind","title","detail","count","action"],"title":"NeedGroup"},"NotificationActionResponse":{"properties":{"label":{"type":"string","title":"Label"},"path":{"type":"string","title":"Path"}},"type":"object","required":["label","path"],"title":"NotificationActionResponse","description":"One named button on a notification (TOS-3120)."},"NotificationListResponse":{"properties":{"notifications":{"items":{"$ref":"#/components/schemas/NotificationResponse"},"type":"array","title":"Notifications"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","title":"NotificationListResponse","description":"A keyset-paginated page of open notifications (TOS-464 / TOS-3120).\n\n\"Open\" is every unresolved obligation plus every unread receipt. Resolved\nobligations are omitted entirely: if the condition cleared there is no\ndecision left to make.\n\n``next_cursor`` is an opaque token for fetching the next (older) page;\n``None`` means no older rows remain. No separate count field: the client\npages through to exhaustion, so the length of what it assembles IS the\nbadge count."},"NotificationOverrideListResponse":{"properties":{"overrides":{"items":{"$ref":"#/components/schemas/NotificationOverrideOut"},"type":"array","title":"Overrides"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["overrides"],"title":"NotificationOverrideListResponse","description":"A keyset-paginated page of per-contact notification overrides (TOS-3280).\n\nOne row per contact the caller has explicitly customized - bounded in\npractice by how many contacts someone actively configures, but with no\nenforced cap. ``next_cursor`` is ``None`` exactly when no older overrides\nremain; there is no separate ``truncated`` flag."},"NotificationOverrideOut":{"properties":{"target_identity_id":{"type":"string","format":"uuid","title":"Target Identity Id"},"style":{"type":"string","title":"Style"}},"type":"object","required":["target_identity_id","style"],"title":"NotificationOverrideOut"},"NotificationResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"notification_type":{"type":"string","title":"Notification Type"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"chat_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Chat Id"},"message_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Message Id"},"action_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Path"},"is_read":{"type":"boolean","title":"Is Read"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"severity":{"type":"string","title":"Severity","default":"info"},"is_obligation":{"type":"boolean","title":"Is Obligation","default":false},"actions":{"items":{"$ref":"#/components/schemas/NotificationActionResponse"},"type":"array","title":"Actions"}},"type":"object","required":["id","notification_type","title","body","chat_id","message_id","action_path","is_read","created_at"],"title":"NotificationResponse"},"OAuthInitiateRequest":{"properties":{"browser_launch_nav_item_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Browser Launch Nav Item Id"},"redirect_after":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Redirect After"},"target_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Identity Id"},"permissions":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":64},{"type":"null"}],"title":"Permissions"},"upgrade_version_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Upgrade Version Id"}},"type":"object","title":"OAuthInitiateRequest"},"OAuthInitiateResponse":{"properties":{"authorization_url":{"type":"string","title":"Authorization Url"},"state":{"type":"string","title":"State"}},"type":"object","required":["authorization_url","state"],"title":"OAuthInitiateResponse","description":"Returned after a successful OAuth initiate."},"OfferConfirmationIn":{"properties":{"plan_id":{"type":"string","format":"uuid","title":"Plan Id"},"plan_version":{"type":"integer","minimum":1.0,"title":"Plan Version"}},"additionalProperties":false,"type":"object","required":["plan_id","plan_version"],"title":"OfferConfirmationIn"},"OidcSessionRequest":{"properties":{"id_token":{"anyOf":[{"type":"string","maxLength":65536,"minLength":1},{"type":"null"}],"title":"Id Token"},"access_token":{"type":"string","maxLength":65536,"minLength":1,"title":"Access Token"},"nonce":{"anyOf":[{"type":"string","maxLength":1024,"minLength":1},{"type":"null"}],"title":"Nonce"},"session_token":{"anyOf":[{"type":"string","maxLength":65536,"minLength":1},{"type":"null"}],"title":"Session Token"},"transaction_token":{"anyOf":[{"type":"string","maxLength":65536,"minLength":1},{"type":"null"}],"title":"Transaction Token"}},"type":"object","required":["access_token"],"title":"OidcSessionRequest"},"OidcSessionResponse":{"properties":{"api_token":{"type":"string","title":"Api Token"},"expires_in":{"type":"integer","title":"Expires In"}},"type":"object","required":["api_token","expires_in"],"title":"OidcSessionResponse"},"OidcTransactionRequest":{"properties":{"reauthenticate":{"type":"boolean","title":"Reauthenticate","default":false}},"type":"object","title":"OidcTransactionRequest"},"OidcTransactionResponse":{"properties":{"nonce":{"type":"string","title":"Nonce"},"transaction_token":{"type":"string","title":"Transaction Token"},"expires_in":{"type":"integer","title":"Expires In"}},"type":"object","required":["nonce","transaction_token","expires_in"],"title":"OidcTransactionResponse"},"OkResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true}},"type":"object","title":"OkResponse"},"OpenAPICreateRequest":{"properties":{"openapi_url":{"type":"string","title":"Openapi Url"},"name":{"type":"string","title":"Name"},"selected_auth_scheme":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Selected Auth Scheme"},"connection_mode":{"type":"string","enum":["shared","per_caller"],"title":"Connection Mode"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"plaintext_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plaintext Secret"},"auth_secret_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Secret Ref"},"secret_refs":{"additionalProperties":{"type":"string"},"type":"object","title":"Secret Refs"},"secret_values":{"additionalProperties":{"type":"string"},"type":"object","title":"Secret Values"},"credential_fit_override_reason":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"title":"Credential Fit Override Reason"},"allow_unconnected":{"type":"boolean","title":"Allow Unconnected","default":false}},"type":"object","required":["openapi_url","name","connection_mode"],"title":"OpenAPICreateRequest"},"OpenAPIImportRequest":{"properties":{"openapi_url":{"type":"string","title":"Openapi Url"},"registration_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registration Name"},"selected_auth_scheme":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Selected Auth Scheme"}},"type":"object","required":["openapi_url"],"title":"OpenAPIImportRequest"},"OpenItemOut":{"properties":{"key":{"type":"string","title":"Key"},"title":{"type":"string","title":"Title"},"detail":{"type":"string","title":"Detail"}},"additionalProperties":false,"type":"object","required":["key","title","detail"],"title":"OpenItemOut"},"OpenRouterCatalogRefreshResponse":{"properties":{"ok":{"type":"boolean","title":"Ok"},"refreshed":{"type":"boolean","title":"Refreshed"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Counts"}},"type":"object","required":["ok","refreshed"],"title":"OpenRouterCatalogRefreshResponse"},"OpenSelfChatRequest":{"properties":{"source_chat_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Source Chat Id"}},"type":"object","title":"OpenSelfChatRequest"},"OperatingInstructionsPatchBody":{"properties":{"expected_current":{"type":"string","title":"Expected Current"},"operation":{"type":"string","enum":["append","replace"],"title":"Operation"},"text":{"type":"string","maxLength":64000,"title":"Text"},"match":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Match"}},"additionalProperties":false,"type":"object","required":["expected_current","operation","text"],"title":"OperatingInstructionsPatchBody"},"OperationLimitationResponse":{"properties":{"explanation":{"type":"string","title":"Explanation"},"options":{"items":{"type":"string"},"type":"array","title":"Options"},"coverage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coverage"}},"type":"object","required":["explanation"],"title":"OperationLimitationResponse","description":"A factual operational limit and safe recovery choices."},"OrganizationCaptureStatusOut":{"properties":{"sources":{"items":{"$ref":"#/components/schemas/CaptureSourceMetaOut"},"type":"array","title":"Sources"},"members":{"items":{"$ref":"#/components/schemas/OrganizationCaptureStatusRowOut"},"type":"array","title":"Members"}},"type":"object","required":["sources","members"],"title":"OrganizationCaptureStatusOut","description":"Per-person, per-source capture status for an org's whole roster.\n\nOrg-admin-only (TOS-5372 Requirements: \"do not expose other members'\ncapture status to non-admin members\"). Reuses the Connect screen's own\ntri-state evidence rule (``mcp_connection_status``/``org_capture_status``)\naggregated for the organization in a small, bounded number of queries."},"OrganizationCaptureStatusRowOut":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"display_name":{"type":"string","title":"Display Name"},"statuses":{"items":{"$ref":"#/components/schemas/MemberCaptureStatusOut"},"type":"array","title":"Statuses"}},"type":"object","required":["identity_id","display_name","statuses"],"title":"OrganizationCaptureStatusRowOut"},"OrganizationConversationConfigOut":{"properties":{"mindset":{"anyOf":[{"$ref":"#/components/schemas/OrganizationMindsetOut"},{"type":"null"}]},"available_mindsets":{"items":{"$ref":"#/components/schemas/OrganizationMindsetOut"},"type":"array","title":"Available Mindsets"},"reply_workflow":{"type":"string","enum":["manual","draft","send"],"title":"Reply Workflow"},"reply_workflow_confirmed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Reply Workflow Confirmed At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"funding_ready":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Funding Ready"},"status":{"$ref":"#/components/schemas/OrganizationConversationStatusOut"}},"type":"object","required":["mindset","available_mindsets","reply_workflow","reply_workflow_confirmed_at","updated_at","funding_ready","status"],"title":"OrganizationConversationConfigOut"},"OrganizationConversationStatusOut":{"properties":{"state":{"type":"string","enum":["ready","mindset_required","confirmation_required","funding_required"],"title":"State"},"blocking_reasons":{"items":{"type":"string"},"type":"array","title":"Blocking Reasons"},"can_configure":{"type":"boolean","title":"Can Configure"}},"type":"object","required":["state","blocking_reasons","can_configure"],"title":"OrganizationConversationStatusOut"},"OrganizationDetailOut":{"properties":{"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"display_name":{"type":"string","title":"Display Name"},"slug":{"type":"string","title":"Slug"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"my_role":{"type":"string","title":"My Role"},"can_manage":{"type":"boolean","title":"Can Manage"},"can_manage_owners":{"type":"boolean","title":"Can Manage Owners"},"discoverable":{"type":"boolean","title":"Discoverable"},"members":{"items":{"$ref":"#/components/schemas/OrganizationSeatOut"},"type":"array","title":"Members"},"join_rules":{"items":{"$ref":"#/components/schemas/OrganizationJoinRuleOut"},"type":"array","title":"Join Rules"},"pending_join_requests":{"items":{"$ref":"#/components/schemas/OrganizationJoinRequestOut"},"type":"array","title":"Pending Join Requests"},"conversation_status":{"$ref":"#/components/schemas/OrganizationConversationStatusOut"}},"type":"object","required":["tenant_id","display_name","slug","logo_url","my_role","can_manage","can_manage_owners","discoverable","members","join_rules","pending_join_requests","conversation_status"],"title":"OrganizationDetailOut","description":"Everything the organization page renders (TOS-4113)."},"OrganizationDomainGrantOut":{"properties":{"library_id":{"type":"string","format":"uuid","title":"Library Id"},"name":{"type":"string","title":"Name"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"role":{"type":"string","title":"Role"}},"type":"object","required":["library_id","name","display_name","address","role"],"title":"OrganizationDomainGrantOut","description":"One folder an organization holds a role on (TOS-4113 Lane C)."},"OrganizationDomainOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"display_name":{"type":"string","title":"Display Name"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"is_root":{"type":"boolean","title":"Is Root"}},"type":"object","required":["id","display_name","address","is_root"],"title":"OrganizationDomainOut","description":"One folder this organization keeps, as its page lists it (TOS-4113 Lane A)."},"OrganizationJoinRequestOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"display_name":{"type":"string","title":"Display Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"status":{"type":"string","title":"Status"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"decided_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Decided At"}},"type":"object","required":["id","tenant_id","identity_id","display_name","email","status","message","created_at","decided_at"],"title":"OrganizationJoinRequestOut","description":"One request waiting on an organization, as its queue renders it."},"OrganizationJoinRuleOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"kind":{"type":"string","title":"Kind"},"value":{"type":"string","title":"Value"},"default_role":{"type":"string","title":"Default Role"}},"type":"object","required":["id","kind","value","default_role"],"title":"OrganizationJoinRuleOut","description":"One email domain this organization claims (TOS-4113)."},"OrganizationMemberOut":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"display_name":{"type":"string","title":"Display Name"}},"type":"object","required":["identity_id","display_name"],"title":"OrganizationMemberOut","description":"One identity an organization admits into its chats (TOS-4078)."},"OrganizationMindsetOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"OrganizationMindsetOut"},"OrganizationSeatOut":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"display_name":{"type":"string","title":"Display Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"role":{"type":"string","title":"Role"},"source":{"type":"string","title":"Source"},"granted_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Granted By"},"is_agent":{"type":"boolean","title":"Is Agent"}},"type":"object","required":["identity_id","display_name","email","role","source","granted_by","is_agent"],"title":"OrganizationSeatOut","description":"One seat on the organization page (TOS-4113)."},"OrphanHomeOut":{"properties":{"library_id":{"type":"string","title":"Library Id"},"integration_count":{"type":"integer","title":"Integration Count"},"skill_count":{"type":"integer","title":"Skill Count"},"document_count":{"type":"integer","title":"Document Count"}},"type":"object","required":["library_id","integration_count","skill_count","document_count"],"title":"OrphanHomeOut"},"OutboundEmailPolicyOut":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"outbound_email_policy":{"type":"string","enum":["allowed","blocked"],"title":"Outbound Email Policy"}},"type":"object","required":["identity_id","outbound_email_policy"],"title":"OutboundEmailPolicyOut"},"OverrideBody":{"properties":{"model_uuid":{"type":"string","format":"uuid","title":"Model Uuid"},"params":{"additionalProperties":true,"type":"object","title":"Params"}},"type":"object","required":["model_uuid"],"title":"OverrideBody"},"OwnedAgentOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"display_name":{"type":"string","title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"kind":{"type":"string","title":"Kind"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","required":["id","display_name","avatar_url","kind","email"],"title":"OwnedAgentOut"},"OwnerLite":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"display_name":{"type":"string","title":"Display Name"}},"type":"object","required":["id","display_name"],"title":"OwnerLite"},"OwnerScoreWindow":{"properties":{"as_of_date":{"type":"string","format":"date","title":"As Of Date"},"turns":{"type":"integer","title":"Turns"},"clean_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Clean Rate"},"degraded_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Degraded Rate"},"failed_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Failed Rate"},"completed_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Completed Rate"},"insufficient_data":{"type":"boolean","title":"Insufficient Data"}},"type":"object","required":["as_of_date","turns","clean_rate","degraded_rate","failed_rate","completed_rate","insufficient_data"],"title":"OwnerScoreWindow"},"OwnerSelfImprovementSummary":{"properties":{"agent_identity_id":{"type":"string","format":"uuid","title":"Agent Identity Id"},"scores":{"additionalProperties":{"anyOf":[{"$ref":"#/components/schemas/OwnerScoreWindow"},{"type":"null"}]},"type":"object","title":"Scores"},"trials":{"items":{"$ref":"#/components/schemas/OwnerTrialSummary"},"type":"array","title":"Trials"},"autonomy_tier":{"type":"integer","title":"Autonomy Tier","default":1},"self_improvement_max_tier":{"type":"integer","title":"Self Improvement Max Tier","default":2},"effective_auto_apply_fields":{"items":{"type":"string"},"type":"array","title":"Effective Auto Apply Fields"},"review_failing_since":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Review Failing Since"},"review_failing_finding_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Review Failing Finding Id"}},"type":"object","required":["agent_identity_id","scores","trials"],"title":"OwnerSelfImprovementSummary"},"OwnerTrialSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"proposal_id":{"type":"string","format":"uuid","title":"Proposal Id"},"field":{"type":"string","title":"Field"},"applied_at":{"type":"string","format":"date-time","title":"Applied At"},"deadline_at":{"type":"string","format":"date-time","title":"Deadline At"},"min_turns":{"type":"integer","title":"Min Turns"},"observed_turns":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Observed Turns"},"verdict":{"type":"string","title":"Verdict"},"verdict_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verdict Reason"},"decided_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Decided At"},"action":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action"}},"type":"object","required":["id","proposal_id","field","applied_at","deadline_at","min_turns","observed_turns","verdict","verdict_reason","decided_at","action"],"title":"OwnerTrialSummary"},"ParticipantAvailabilityResponse":{"properties":{"state":{"type":"string","title":"State"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Observed At"}},"type":"object","required":["state"],"title":"ParticipantAvailabilityResponse"},"ParticipantData":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"display_name":{"type":"string","title":"Display Name"},"kind":{"type":"string","title":"Kind"},"role":{"type":"string","title":"Role"},"status":{"type":"string","title":"Status"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"joined_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Joined At"},"left_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Left At"},"archived_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Archived At"},"is_pinned":{"type":"boolean","title":"Is Pinned","default":false}},"type":"object","required":["identity_id","display_name","kind","role","status"],"title":"ParticipantData","description":"A chat participant (person or agent) with their role."},"ParticipantListResponse":{"properties":{"participants":{"items":{"$ref":"#/components/schemas/ParticipantResponse"},"type":"array","title":"Participants"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","title":"ParticipantListResponse","description":"A keyset-paginated page of chat participants, active + historical (TOS-3280).\n\nA long-lived, high-churn room's join/leave history is the growth vector\nthis protects against; a typical chat's page 1 is everything. ``next_cursor``\nis ``None`` exactly when no older participant rows remain; there is no\nseparate ``truncated`` flag."},"ParticipantModeResponse":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"mode_override":{"anyOf":[{"type":"string","enum":["human","agent_augmented","agent"]},{"type":"null"}],"title":"Mode Override"},"mode_override_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Mode Override Expires At"},"agent_auto_reply_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Auto Reply Limit"},"agent_auto_reply_window_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Auto Reply Window Seconds"}},"type":"object","required":["identity_id","mode_override"],"title":"ParticipantModeResponse"},"ParticipantModeUpdate":{"properties":{"mode_override":{"anyOf":[{"type":"string","enum":["human","agent_augmented","agent"]},{"type":"null"}],"title":"Mode Override"},"mode_override_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Mode Override Expires At"},"agent_auto_reply_limit":{"anyOf":[{"type":"integer","maximum":50.0,"minimum":1.0},{"type":"null"}],"title":"Agent Auto Reply Limit"},"agent_auto_reply_window_seconds":{"anyOf":[{"type":"integer","maximum":86400.0,"minimum":0.0},{"type":"null"}],"title":"Agent Auto Reply Window Seconds"}},"type":"object","required":["mode_override"],"title":"ParticipantModeUpdate"},"ParticipantPreview":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"display_name":{"type":"string","title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"kind":{"type":"string","enum":["person","agent","org"],"title":"Kind"}},"type":"object","required":["identity_id","display_name","avatar_url","kind"],"title":"ParticipantPreview"},"ParticipantPreviewResponse":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"display_name":{"type":"string","title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"kind":{"type":"string","title":"Kind"}},"type":"object","required":["identity_id","display_name","avatar_url","kind"],"title":"ParticipantPreviewResponse"},"ParticipantResponse":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"display_name":{"type":"string","title":"Display Name"},"tagline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tagline"},"kind":{"type":"string","enum":["person","agent","org"],"title":"Kind"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"owner_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner Identity Id"},"owner_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Display Name"},"availability":{"anyOf":[{"$ref":"#/components/schemas/ParticipantAvailabilityResponse"},{"type":"null"}]},"role":{"type":"string","title":"Role"},"status":{"type":"string","enum":["active","left","removed"],"title":"Status"},"joined_at":{"type":"string","format":"date-time","title":"Joined At"},"left_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Left At"},"mode_override":{"anyOf":[{"type":"string","enum":["human","agent_augmented","agent"]},{"type":"null"}],"title":"Mode Override"},"mode_override_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Mode Override Expires At"},"agent_auto_reply_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Auto Reply Limit"},"agent_auto_reply_window_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Auto Reply Window Seconds"},"reply_policy":{"type":"string","enum":["human","agent_augmented","agent"],"title":"Reply Policy"},"reply_policy_source":{"type":"string","enum":["chat_override","identity_default","platform_default"],"title":"Reply Policy Source"},"reply_policy_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Reply Policy Expires At"},"carries_cross_relationship_memory":{"type":"boolean","title":"Carries Cross Relationship Memory","default":false}},"type":"object","required":["identity_id","display_name","kind","avatar_url","role","status","joined_at","left_at","reply_policy","reply_policy_source"],"title":"ParticipantResponse"},"PasteKeyBody":{"properties":{"secret":{"type":"string","title":"Secret"},"target_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Identity Id"}},"type":"object","required":["secret"],"title":"PasteKeyBody"},"PatchDocumentRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"published":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Published"},"sync_excluded":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Sync Excluded"},"source_time":{"anyOf":[{"$ref":"#/components/schemas/SourceTime"},{"type":"null"}],"description":"Correct when this content occurred or was observed with timezone-aware ISO 8601 timestamps. recorded_at is assigned by thinqOS."}},"additionalProperties":false,"type":"object","title":"PatchDocumentRequest"},"PatchInstallationRequest":{"properties":{"hidden":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Hidden"}},"additionalProperties":false,"type":"object","title":"PatchInstallationRequest","description":"Patch an installation's folder-level flags (``PATCH /installations/{id}``).\n\n``hidden`` absent (``None``) is a no-op; ``True``/``False`` maps to\n``InstallationService.set_hidden``."},"PatchSyncIn":{"properties":{"state":{"anyOf":[{"type":"string","enum":["active","paused"]},{"type":"null"}],"title":"State"},"interval_seconds":{"anyOf":[{"type":"integer","minimum":900.0},{"type":"null"}],"title":"Interval Seconds"},"auto_merge":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Merge"},"on_remove":{"anyOf":[{"type":"string","enum":["leave","remove"]},{"type":"null"}],"title":"On Remove"},"write_note":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Write Note"},"mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode"},"destination":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Destination"},"discovery":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Discovery"},"crawl_depth":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Crawl Depth"},"path_prefix":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Path Prefix"},"max_pages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Pages"},"max_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Bytes"},"arrive_published":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Arrive Published"}},"type":"object","title":"PatchSyncIn","description":"Partial update: only fields present in the body change.\n\n``path_prefix`` is the one field where omitted and cleared differ: leave\nit out to keep it, send ``null`` to clear it. A website's URL and source\nkind are fixed once created (delete and add it again to change them)."},"PatternFlagReviewRequest":{"properties":{"note":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Note"}},"additionalProperties":false,"type":"object","title":"PatternFlagReviewRequest"},"PayoutDecisionIn":{"properties":{"note":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Note"}},"additionalProperties":false,"type":"object","title":"PayoutDecisionIn"},"PayoutPaidIn":{"properties":{"provider_ref":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Provider Ref","description":"The operator's reference for the transfer they actually made."},"note":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Note"}},"additionalProperties":false,"type":"object","title":"PayoutPaidIn"},"PayoutRequestIn":{"properties":{"amount_usd":{"type":"string","title":"Amount Usd","description":"Decimal string, e.g. \"12.50\""},"idempotency_key":{"type":"string","maxLength":200,"minLength":8,"title":"Idempotency Key","description":"Client-generated key; replaying it returns the original payout request."}},"additionalProperties":false,"type":"object","required":["amount_usd","idempotency_key"],"title":"PayoutRequestIn","description":"A seller's request to cash out part of their earnings.\n\n``extra='forbid'`` for the same reason ``TopupRequest`` carries it: this\nmodel must never quietly ignore a field a client believes it is sending, and\nthe field most likely to be attempted here is somebody else's identity id.\n\n``amount_usd`` is a STRING on the wire. Money is ``NUMERIC(12,6)`` end to\nend in this system and every other monetization payload is a decimal string;\naccepting a JSON float would route the one value that must not lose precision\nthrough binary floating point."},"PendingChangeApproveBody":{"properties":{"proposal_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Proposal Id"},"change_set_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Change Set Id"},"overrides":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Overrides"}},"type":"object","title":"PendingChangeApproveBody"},"PendingChangeCountsResponse":{"properties":{"counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Counts"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["counts","total"],"title":"PendingChangeCountsResponse","description":"TOS-2165: change-set counts keyed by agent identity id, plus the sum.\n\nAgents with nothing pending are absent from ``counts`` rather than present\nwith 0, so the client can treat presence as \"has work\"."},"PendingChangeDecisionResponse":{"properties":{"proposals":{"items":{"$ref":"#/components/schemas/PendingChangeProposal"},"type":"array","title":"Proposals"}},"type":"object","required":["proposals"],"title":"PendingChangeDecisionResponse"},"PendingChangeGroup":{"properties":{"change_set_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Change Set Id"},"proposals":{"items":{"$ref":"#/components/schemas/PendingChangeProposal"},"type":"array","title":"Proposals"}},"type":"object","required":["change_set_id","proposals"],"title":"PendingChangeGroup"},"PendingChangeProposal":{"properties":{"revertible":{"type":"boolean","title":"Revertible","default":false},"id":{"type":"string","title":"Id"},"agent_identity_id":{"type":"string","title":"Agent Identity Id"},"field":{"type":"string","title":"Field"},"proposed_value":{"title":"Proposed Value"},"previous_value":{"title":"Previous Value"},"rationale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rationale"},"status":{"type":"string","title":"Status"},"source":{"type":"string","title":"Source"},"change_set_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Change Set Id"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At"},"decided_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decided At"},"decided_by_identity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decided By Identity Id"},"decided_by_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decided By Display Name"},"decision_mode":{"anyOf":[{"type":"string","enum":["automatic","owner","agent"]},{"type":"null"}],"title":"Decision Mode"},"applied_version_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Applied Version Number"},"rejection_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rejection Reason"},"review_owner_identity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Owner Identity Id"},"policy_explanation":{"type":"string","title":"Policy Explanation"},"proposed_by_message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proposed By Message Id"},"proposed_by_chat_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proposed By Chat Id"},"requested_by_identity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requested By Identity Id"},"requested_by_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requested By Display Name"},"requester_standing":{"anyOf":[{"type":"string","enum":["owner","self","other"]},{"type":"null"}],"title":"Requester Standing"},"origin_chat_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Origin Chat Id"},"origin_counterpart_identity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Origin Counterpart Identity Id"},"origin_counterpart_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Origin Counterpart Display Name"},"origin_counterpart_standing":{"anyOf":[{"type":"string","enum":["owner","other"]},{"type":"null"}],"title":"Origin Counterpart Standing"},"context":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Context"},"apply_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Apply Error"}},"type":"object","required":["id","agent_identity_id","field","proposed_value","rationale","status","source","change_set_id","created_at","expires_at","decided_at","applied_version_number","rejection_reason","policy_explanation"],"title":"PendingChangeProposal"},"PendingChangeRejectBody":{"properties":{"proposal_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Proposal Id"},"change_set_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Change Set Id"},"reason":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Reason"}},"type":"object","title":"PendingChangeRejectBody"},"PendingChangeRevertBody":{"properties":{"proposal_id":{"type":"string","format":"uuid","title":"Proposal Id"}},"type":"object","required":["proposal_id"],"title":"PendingChangeRevertBody"},"PendingChangesListResponse":{"properties":{"groups":{"items":{"$ref":"#/components/schemas/PendingChangeGroup"},"type":"array","title":"Groups"}},"type":"object","required":["groups"],"title":"PendingChangesListResponse"},"PendingCountsOut":{"properties":{"counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Counts"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["counts","total"],"title":"PendingCountsOut","description":"Pending work keyed by the admin route segment that resolves it.\n\nKeys match the admin tab paths so the frontend can badge a tab without\nmaintaining its own mapping. `total` is the rollup shown on the Admin entry\nin the main navigation."},"PendingDecision":{"properties":{"stream":{"type":"string","title":"Stream"},"item_id":{"type":"string","title":"Item Id"},"title":{"type":"string","title":"Title"},"detail":{"type":"string","title":"Detail"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"context_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context Id"}},"type":"object","required":["stream","item_id","title","detail","created_at","context_id"],"title":"PendingDecision","description":"One item somewhere in the platform that is waiting on a person."},"PickCandidateOut":{"properties":{"label":{"type":"string","title":"Label"},"value_index":{"type":"integer","title":"Value Index"}},"type":"object","required":["label","value_index"],"title":"PickCandidateOut"},"PickCandidatesResponse":{"properties":{"step_id":{"type":"string","title":"Step Id"},"candidates":{"items":{"$ref":"#/components/schemas/PickCandidateOut"},"type":"array","title":"Candidates"}},"type":"object","required":["step_id","candidates"],"title":"PickCandidatesResponse"},"PickCompleteResponse":{"properties":{"status":{"type":"string","title":"Status"},"redirect_to":{"type":"string","title":"Redirect To"}},"type":"object","required":["status","redirect_to"],"title":"PickCompleteResponse"},"PickRequest":{"properties":{"token":{"type":"string","title":"Token"},"choice_index":{"type":"integer","minimum":0.0,"title":"Choice Index"}},"type":"object","required":["token","choice_index"],"title":"PickRequest"},"PlatformChangeAuditOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"finding_id":{"type":"string","format":"uuid","title":"Finding Id"},"actor_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Actor Identity Id"},"action":{"type":"string","title":"Action"},"evidence":{"additionalProperties":true,"type":"object","title":"Evidence"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","finding_id","actor_identity_id","action","evidence","created_at"],"title":"PlatformChangeAuditOut"},"PlatformFindingOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"signature":{"type":"string","title":"Signature"},"agent_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Agent Ids"},"first_seen":{"type":"string","format":"date-time","title":"First Seen"},"last_seen":{"type":"string","format":"date-time","title":"Last Seen"},"occurrence_count":{"type":"integer","title":"Occurrence Count"},"state":{"type":"string","title":"State"},"approved_by_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Approved By Identity Id"},"approved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Approved At"},"commons_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Commons Ref"},"risk_class":{"type":"string","title":"Risk Class"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"what_the_platform_did":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"What The Platform Did"},"who_it_hit":{"additionalProperties":true,"type":"object","title":"Who It Hit"},"evidence":{"additionalProperties":true,"type":"object","title":"Evidence"},"smallest_change":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smallest Change"},"confidence":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Confidence"},"source_lanes":{"items":{"type":"string"},"type":"array","title":"Source Lanes"}},"type":"object","required":["id","signature","agent_ids","first_seen","last_seen","occurrence_count","state","approved_by_identity_id","approved_at","commons_ref","risk_class"],"title":"PlatformFindingOut"},"PlatformPrivilegeEventOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"actor_identity_id":{"type":"string","format":"uuid","title":"Actor Identity Id"},"target_identity_id":{"type":"string","format":"uuid","title":"Target Identity Id"},"tier":{"type":"string","title":"Tier"},"action":{"type":"string","title":"Action"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","actor_identity_id","target_identity_id","tier","action","created_at"],"title":"PlatformPrivilegeEventOut"},"PlatformPrivilegeOut":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"kind":{"type":"string","title":"Kind"},"is_active":{"type":"boolean","title":"Is Active"},"is_platform_admin":{"type":"boolean","title":"Is Platform Admin"},"is_platform_admin_readonly":{"type":"boolean","title":"Is Platform Admin Readonly"},"is_last_full_admin":{"type":"boolean","title":"Is Last Full Admin"}},"type":"object","required":["identity_id","kind","is_active","is_platform_admin","is_platform_admin_readonly","is_last_full_admin"],"title":"PlatformPrivilegeOut","description":"The two platform privilege tiers on one identity (TOS-3571)."},"PlatformProviderHealthItem":{"properties":{"provider":{"type":"string","title":"Provider"},"display_name":{"type":"string","title":"Display Name"},"configured":{"type":"boolean","title":"Configured"},"status":{"type":"string","enum":["healthy","degraded","unhealthy","unknown"],"title":"Status"},"error_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Class"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"http_status":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Http Status"},"latency_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Latency Ms"},"last_probed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Probed At"},"last_success_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Success At"},"last_failure_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Failure At"},"key_fingerprint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Fingerprint"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},"type":"object","required":["provider","display_name","configured","status","error_class","message","http_status","latency_ms","last_probed_at","last_success_at","last_failure_at","key_fingerprint","source"],"title":"PlatformProviderHealthItem"},"PlatformRequestOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"signature":{"type":"string","title":"Signature"},"evidence":{"additionalProperties":true,"type":"object","title":"Evidence"},"state":{"type":"string","title":"State"},"priority":{"type":"string","title":"Priority"},"platform_ticket_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platform Ticket Ref"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"last_rechecked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Rechecked At"},"escalated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Escalated At"},"escalated_by_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Escalated By Identity Id"},"ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ref"},"title":{"type":"string","title":"Title"},"age_days":{"type":"integer","title":"Age Days"},"reporter_count":{"type":"integer","title":"Reporter Count"},"reporter_count_source":{"type":"string","title":"Reporter Count Source"},"link":{"type":"string","title":"Link"},"delivery_state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delivery State"}},"type":"object","required":["id","signature","evidence","state","priority","platform_ticket_ref","created_at","updated_at","last_rechecked_at","escalated_at","escalated_by_identity_id","ref","title","age_days","reporter_count","reporter_count_source","link","delivery_state"],"title":"PlatformRequestOut"},"PreferencesResponse":{"properties":{"tts_voice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tts Voice"},"tts_voice_backup":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tts Voice Backup"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"default_mode":{"type":"string","title":"Default Mode"},"default_mode_confirmed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Default Mode Confirmed At"},"reply_mode_gate_required":{"type":"boolean","title":"Reply Mode Gate Required"},"notification_style":{"type":"string","title":"Notification Style"},"notification_device":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Notification Device"},"subconscious_agent_mode_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Subconscious Agent Mode Expires At"},"subconscious_agent_auto_reply_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subconscious Agent Auto Reply Limit"},"subconscious_agent_auto_reply_window_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subconscious Agent Auto Reply Window Seconds"},"dock_page_capture":{"type":"string","enum":["ask","always","never"],"title":"Dock Page Capture"},"disclose_capabilities":{"type":"boolean","title":"Disclose Capabilities"},"disclose_reputation":{"type":"boolean","title":"Disclose Reputation"},"request_resolution_updates":{"type":"boolean","title":"Request Resolution Updates"},"decision_digest_email":{"type":"boolean","title":"Decision Digest Email"},"decision_digest_email_source":{"type":"string","enum":["personal","default"],"title":"Decision Digest Email Source"},"appearance_mode":{"type":"string","enum":["system","dark","light"],"title":"Appearance Mode"},"appearance_mode_source":{"type":"string","enum":["personal","global"],"title":"Appearance Mode Source"}},"type":"object","required":["tts_voice","tts_voice_backup","timezone","default_mode","default_mode_confirmed_at","reply_mode_gate_required","notification_style","notification_device","subconscious_agent_mode_expires_at","subconscious_agent_auto_reply_limit","subconscious_agent_auto_reply_window_seconds","dock_page_capture","disclose_capabilities","disclose_reputation","request_resolution_updates","decision_digest_email","decision_digest_email_source","appearance_mode","appearance_mode_source"],"title":"PreferencesResponse"},"PresenceHeartbeatRequest":{"properties":{"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"focused":{"type":"boolean","title":"Focused","default":true},"active":{"type":"boolean","title":"Active","default":true}},"type":"object","title":"PresenceHeartbeatRequest"},"PresenceHeartbeatResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true}},"type":"object","title":"PresenceHeartbeatResponse"},"PresenceSnapshotResponse":{"properties":{"type":{"type":"string","title":"Type"},"identity_id":{"type":"string","title":"Identity Id"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"status":{"type":"string","title":"Status"},"last_seen_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Seen At"},"last_active_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Active At"}},"type":"object","required":["type","identity_id","status"],"title":"PresenceSnapshotResponse"},"PreviewItemOut":{"properties":{"document_id":{"type":"string","format":"uuid","title":"Document Id"},"title":{"type":"string","title":"Title"},"path":{"type":"string","title":"Path"}},"type":"object","required":["document_id","title","path"],"title":"PreviewItemOut"},"PreviewOut":{"properties":{"add":{"items":{"$ref":"#/components/schemas/PreviewItemOut"},"type":"array","title":"Add"},"update":{"items":{"$ref":"#/components/schemas/PreviewItemOut"},"type":"array","title":"Update"},"both":{"items":{"$ref":"#/components/schemas/PreviewItemOut"},"type":"array","title":"Both"},"same":{"items":{"$ref":"#/components/schemas/PreviewItemOut"},"type":"array","title":"Same"},"kept_out":{"items":{"$ref":"#/components/schemas/PreviewItemOut"},"type":"array","title":"Kept Out"},"not_syncable":{"items":{"$ref":"#/components/schemas/PreviewItemOut"},"type":"array","title":"Not Syncable"},"github_only":{"items":{"type":"string"},"type":"array","title":"Github Only"}},"type":"object","required":["add","update","both","same","kept_out","not_syncable","github_only"],"title":"PreviewOut"},"PricingHistoryResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"effective_from":{"type":"string","format":"date-time","title":"Effective From"},"effective_to":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Effective To"},"input_price_per_mtok":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Price Per Mtok"},"output_price_per_mtok":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Price Per Mtok"},"embedding_price_per_mtok":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Embedding Price Per Mtok"},"price_per_hour":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Per Hour"},"price_per_character":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Per Character"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"source_retrieved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Source Retrieved At"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["id","effective_from","effective_to","input_price_per_mtok","output_price_per_mtok","embedding_price_per_mtok","notes"],"title":"PricingHistoryResponse"},"PricingPlanBundle":{"properties":{"published":{"anyOf":[{"$ref":"#/components/schemas/PricingPlanOut"},{"type":"null"}]},"draft":{"anyOf":[{"$ref":"#/components/schemas/PricingPlanOut"},{"type":"null"}]}},"type":"object","required":["published","draft"],"title":"PricingPlanBundle"},"PricingPlanIn":{"properties":{"model":{"type":"string","title":"Model"},"per_use_price_usd":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Per Use Price Usd"},"sub_price_usd_month":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Sub Price Usd Month"},"included_units_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Included Units Month"},"overage_policy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Overage Policy"},"overage_price_usd":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Overage Price Usd"},"margin_multiplier":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Margin Multiplier"},"min_monthly_usd":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Min Monthly Usd"},"trial_kind":{"type":"string","title":"Trial Kind","default":"none"},"trial_runs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Trial Runs"},"trial_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Trial Days"},"throttle_per_min":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Throttle Per Min"},"throttle_per_day":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Throttle Per Day"},"currency":{"type":"string","title":"Currency","default":"USD"}},"type":"object","required":["model"],"title":"PricingPlanIn"},"PricingPlanOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"agent_identity_id":{"type":"string","format":"uuid","title":"Agent Identity Id"},"version":{"type":"integer","title":"Version"},"status":{"type":"string","title":"Status"},"model":{"type":"string","title":"Model"},"per_use_price_usd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Per Use Price Usd"},"sub_price_usd_month":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sub Price Usd Month"},"included_units_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Included Units Month"},"overage_policy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Overage Policy"},"overage_price_usd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Overage Price Usd"},"margin_multiplier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Margin Multiplier"},"min_monthly_usd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Min Monthly Usd"},"trial_kind":{"type":"string","title":"Trial Kind"},"trial_runs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Trial Runs"},"trial_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Trial Days"},"throttle_per_min":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Throttle Per Min"},"throttle_per_day":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Throttle Per Day"},"currency":{"type":"string","title":"Currency"},"created_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"publish_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publish Token"}},"type":"object","required":["id","agent_identity_id","version","status","model","per_use_price_usd","sub_price_usd_month","included_units_month","overage_policy","overage_price_usd","margin_multiplier","min_monthly_usd","trial_kind","trial_runs","trial_days","throttle_per_min","throttle_per_day","currency","created_by","published_at","created_at","updated_at"],"title":"PricingPlanOut"},"PricingPlanPublishIn":{"properties":{"publish_token":{"type":"string","maxLength":64,"minLength":64,"pattern":"^[0-9a-f]+$","title":"Publish Token"}},"additionalProperties":false,"type":"object","required":["publish_token"],"title":"PricingPlanPublishIn"},"PrincipalOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"kind":{"type":"string","title":"Kind"},"name":{"type":"string","title":"Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"}},"type":"object","required":["id","kind","name","avatar_url"],"title":"PrincipalOut"},"PrivateLibraryIntegrityResponse":{"properties":{"clean":{"type":"boolean","title":"Clean"},"foreign_member_count":{"type":"integer","title":"Foreign Member Count"},"foreign_member_sample":{"items":{"$ref":"#/components/schemas/ForeignMemberViolationOut"},"type":"array","title":"Foreign Member Sample"},"orphan_home_count":{"type":"integer","title":"Orphan Home Count"},"orphan_homes_with_artifacts":{"items":{"$ref":"#/components/schemas/OrphanHomeOut"},"type":"array","title":"Orphan Homes With Artifacts"},"duplicate_owner_count":{"type":"integer","title":"Duplicate Owner Count"},"duplicate_sample":{"items":{"$ref":"#/components/schemas/DuplicateHomeGroupOut"},"type":"array","title":"Duplicate Sample"}},"type":"object","required":["clean","foreign_member_count","foreign_member_sample","orphan_home_count","orphan_homes_with_artifacts","duplicate_owner_count","duplicate_sample"],"title":"PrivateLibraryIntegrityResponse"},"ProbeView":{"properties":{"id":{"type":"string","title":"Id"},"description":{"type":"string","title":"Description"},"agent":{"type":"string","title":"Agent"},"finding_ids":{"items":{"type":"string"},"type":"array","title":"Finding Ids"},"step_count":{"type":"integer","title":"Step Count"}},"type":"object","required":["id","description","agent","finding_ids","step_count"],"title":"ProbeView"},"ProductEventDailyCount":{"properties":{"day":{"type":"string","title":"Day"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["day","count"],"title":"ProductEventDailyCount"},"ProductEventSummary":{"properties":{"event_key":{"type":"string","title":"Event Key"},"days":{"type":"integer","title":"Days"},"total":{"type":"integer","title":"Total"},"daily":{"items":{"$ref":"#/components/schemas/ProductEventDailyCount"},"type":"array","title":"Daily"}},"type":"object","required":["event_key","days","total","daily"],"title":"ProductEventSummary"},"PromptPreviewPlaceholder":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"}},"type":"object","required":["name","description"],"title":"PromptPreviewPlaceholder"},"PromptPreviewResponse":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"display_name":{"type":"string","title":"Display Name"},"provider":{"type":"string","title":"Provider"},"model":{"type":"string","title":"Model"},"stable_text":{"type":"string","title":"Stable Text"},"volatile_placeholders":{"items":{"$ref":"#/components/schemas/PromptPreviewPlaceholder"},"type":"array","title":"Volatile Placeholders"},"constitution_budget_tokens":{"type":"integer","title":"Constitution Budget Tokens"},"constitution_clamped":{"type":"boolean","title":"Constitution Clamped"},"measured_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Measured At"},"usage":{"items":{"$ref":"#/components/schemas/PromptPreviewSection"},"type":"array","title":"Usage"}},"type":"object","required":["identity_id","display_name","provider","model","stable_text","volatile_placeholders","constitution_budget_tokens","constitution_clamped","measured_at","usage"],"title":"PromptPreviewResponse","description":"The identity's assembled system prompt, read-only (TOS-2077)."},"PromptPreviewSection":{"properties":{"source":{"type":"string","title":"Source"},"status":{"type":"string","title":"Status"},"estimated_tokens":{"type":"integer","title":"Estimated Tokens"},"budget_tokens":{"type":"integer","title":"Budget Tokens"},"reason":{"type":"string","title":"Reason"}},"type":"object","required":["source","status","estimated_tokens","budget_tokens","reason"],"title":"PromptPreviewSection"},"PromptScorecardCriterion":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"weight":{"type":"integer","title":"Weight"},"rating":{"type":"integer","title":"Rating"},"points":{"type":"number","title":"Points"},"rationale":{"type":"string","title":"Rationale"}},"additionalProperties":false,"type":"object","required":["key","name","weight","rating","points","rationale"],"title":"PromptScorecardCriterion","description":"One criterion's weight, rating, points, and the scorer's rationale."},"PromptScorecardResponse":{"properties":{"current_prompt_module_version":{"type":"string","title":"Current Prompt Module Version"},"current":{"anyOf":[{"$ref":"#/components/schemas/PromptScorecardView"},{"type":"null"}]},"trend_days":{"type":"integer","title":"Trend Days"},"trend":{"items":{"$ref":"#/components/schemas/PromptScorecardTrendPoint"},"type":"array","title":"Trend"},"human_baseline_score":{"type":"number","title":"Human Baseline Score"},"human_baseline_note":{"type":"string","title":"Human Baseline Note"}},"additionalProperties":false,"type":"object","required":["current_prompt_module_version","current","trend_days","trend","human_baseline_score","human_baseline_note"],"title":"PromptScorecardResponse","description":"The running build's scorecard, its trend, and the human baseline."},"PromptScorecardTrendPoint":{"properties":{"prompt_module_version":{"type":"string","title":"Prompt Module Version"},"scored_at":{"type":"string","format":"date-time","title":"Scored At"},"total_score":{"type":"number","title":"Total Score"}},"additionalProperties":false,"type":"object","required":["prompt_module_version","scored_at","total_score"],"title":"PromptScorecardTrendPoint","description":"One measured score, at the moment it was measured."},"PromptScorecardView":{"properties":{"prompt_module_version":{"type":"string","title":"Prompt Module Version"},"rubric_version":{"type":"string","title":"Rubric Version"},"state":{"type":"string","title":"State"},"total_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Score"},"max_score":{"type":"integer","title":"Max Score"},"criteria":{"items":{"$ref":"#/components/schemas/PromptScorecardCriterion"},"type":"array","title":"Criteria"},"scoring_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scoring Model"},"scored_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scored At"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"}},"additionalProperties":false,"type":"object","required":["prompt_module_version","rubric_version","state","total_score","max_score","criteria","scoring_model","scored_at","last_error"],"title":"PromptScorecardView","description":"One stored scorecard, or the fact that scoring it failed."},"ProposalDecision":{"properties":{"action":{"type":"string","enum":["approve","dismiss","filed"],"title":"Action"},"ticket_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticket Ref"}},"type":"object","required":["action"],"title":"ProposalDecision"},"PropositionDetail":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"claim_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Claim Key"},"summary":{"type":"string","title":"Summary"},"source":{"type":"string","title":"Source"},"predicate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Predicate"},"subject_entity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Subject Entity Id"},"object_entity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Object Entity Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"has_embedding":{"type":"boolean","title":"Has Embedding"}},"type":"object","required":["id","claim_key","summary","source","predicate","subject_entity_id","object_entity_id","created_at","has_embedding"],"title":"PropositionDetail"},"PropositionLineage":{"properties":{"proposition":{"$ref":"#/components/schemas/PropositionDetail"},"timeline":{"items":{"$ref":"#/components/schemas/LineageEvent"},"type":"array","title":"Timeline"},"evaluations":{"items":{"$ref":"#/components/schemas/MindEvalRow"},"type":"array","title":"Evaluations"},"relations":{"items":{"$ref":"#/components/schemas/RelationRow"},"type":"array","title":"Relations"},"structured_partial":{"type":"boolean","title":"Structured Partial"}},"type":"object","required":["proposition","timeline","evaluations","relations","structured_partial"],"title":"PropositionLineage"},"PropositionRef":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"summary":{"type":"string","title":"Summary"},"source":{"type":"string","title":"Source"}},"type":"object","required":["id","summary","source"],"title":"PropositionRef"},"ProvenanceEdgeResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"subject_ref":{"additionalProperties":true,"type":"object","title":"Subject Ref"},"predicate":{"type":"string","title":"Predicate"},"object_ref":{"additionalProperties":true,"type":"object","title":"Object Ref"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"activity_ref":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Activity Ref"},"visibility_scope":{"type":"string","title":"Visibility Scope"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","subject_ref","predicate","object_ref","visibility_scope","created_at"],"title":"ProvenanceEdgeResponse"},"ProviderHealthItem":{"properties":{"provider":{"type":"string","title":"Provider"},"display_name":{"type":"string","title":"Display Name"},"configured":{"type":"boolean","title":"Configured"},"status":{"type":"string","enum":["healthy","degraded","unhealthy","unknown"],"title":"Status"},"error_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Class"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"http_status":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Http Status"},"latency_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Latency Ms"},"last_probed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Probed At"},"last_success_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Success At"},"last_failure_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Failure At"},"key_fingerprint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Fingerprint"}},"type":"object","required":["provider","display_name","configured","status","error_class","message","http_status","latency_ms","last_probed_at","last_success_at","last_failure_at","key_fingerprint"],"title":"ProviderHealthItem"},"ProviderKeyOut":{"properties":{"provider":{"type":"string","title":"Provider"},"library_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Library Id"},"is_active":{"type":"boolean","title":"Is Active"},"last_probe_status":{"type":"string","title":"Last Probe Status"},"key_fingerprint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Fingerprint"},"created_at":{"type":"string","title":"Created At"},"provider_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Scope"},"scope_required":{"type":"boolean","title":"Scope Required","default":false},"scope_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope Label"},"batch_eligible":{"type":"boolean","title":"Batch Eligible","default":true}},"type":"object","required":["provider","library_id","is_active","last_probe_status","key_fingerprint","created_at"],"title":"ProviderKeyOut"},"ProviderListEntryResponse":{"properties":{"provider":{"type":"string","title":"Provider"},"display_name":{"type":"string","title":"Display Name"},"source":{"type":"string","title":"Source"},"agent_names":{"items":{"type":"string"},"type":"array","title":"Agent Names"},"has_key":{"type":"boolean","title":"Has Key"},"key_added_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Key Added At"}},"type":"object","required":["provider","display_name","source","agent_names","has_key","key_added_at"],"title":"ProviderListEntryResponse"},"ProviderListResponse":{"properties":{"providers":{"items":{"$ref":"#/components/schemas/ProviderListEntryResponse"},"type":"array","title":"Providers"}},"type":"object","required":["providers"],"title":"ProviderListResponse"},"ProvisionSubscriptionRequest":{"properties":{"payer_identity_id":{"type":"string","format":"uuid","title":"Payer Identity Id"},"plan_slug":{"type":"string","title":"Plan Slug"},"interval":{"type":"string","pattern":"^(month|year)$","title":"Interval"},"billing":{"type":"string","pattern":"^(stripe|manual)$","title":"Billing","default":"manual"},"period_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period Start"},"period_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period End"},"overage_cap_usd":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string"},{"type":"null"}],"title":"Overage Cap Usd"},"partner_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Partner Identity Id"},"partner_discount_pct":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"string"},{"type":"null"}],"title":"Partner Discount Pct"},"note":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Note"}},"type":"object","required":["payer_identity_id","plan_slug","interval"],"title":"ProvisionSubscriptionRequest"},"ProxyConfiguration":{"properties":{"protocol":{"type":"string","enum":["mcp","a2a"],"title":"Protocol"},"instance_id":{"type":"string","format":"uuid","title":"Instance Id"},"tool_name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Tool Name"},"agent_card_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Agent Card Url"},"message_parameter":{"type":"string","maxLength":128,"minLength":1,"title":"Message Parameter","default":"message"},"conversation_parameter":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Conversation Parameter","default":"conversation_id"},"stream_parameter":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Stream Parameter","default":"stream"},"response_text_field":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Response Text Field","default":"content"},"response_conversation_field":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Response Conversation Field","default":"conversation_id"}},"additionalProperties":false,"type":"object","required":["protocol","instance_id"],"title":"ProxyConfiguration"},"ProxyEnsureRequest":{"properties":{"source":{"type":"string","maxLength":200,"minLength":1,"title":"Source"},"instance_id":{"type":"string","maxLength":200,"minLength":1,"title":"Instance Id"},"external_org_id":{"type":"string","maxLength":200,"minLength":1,"title":"External Org Id"},"org_label":{"type":"string","maxLength":120,"minLength":1,"title":"Org Label"}},"type":"object","required":["source","instance_id","external_org_id","org_label"],"title":"ProxyEnsureRequest"},"ProxyPauseBody":{"properties":{"paused":{"type":"boolean","title":"Paused"}},"additionalProperties":false,"type":"object","required":["paused"],"title":"ProxyPauseBody"},"ProxyResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"source":{"type":"string","title":"Source"},"instance_id":{"type":"string","title":"Instance Id"},"external_org_id":{"type":"string","title":"External Org Id"},"org_label":{"type":"string","title":"Org Label"},"agent_identity_id":{"type":"string","format":"uuid","title":"Agent Identity Id"},"agent_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Display Name"},"agent_avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Avatar Url"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","source","instance_id","external_org_id","org_label","agent_identity_id","agent_display_name","agent_avatar_url","created_at"],"title":"ProxyResponse"},"PublishLifecycleProfileVersionRequest":{"properties":{"definition":{"additionalProperties":true,"type":"object","title":"Definition"},"note":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Note"}},"type":"object","required":["definition"],"title":"PublishLifecycleProfileVersionRequest"},"PublishResponse":{"properties":{"batch_id":{"type":"string","title":"Batch Id"},"published_count":{"type":"integer","title":"Published Count"}},"type":"object","required":["batch_id","published_count"],"title":"PublishResponse"},"PublishedA2AAgent":{"properties":{"agent_id":{"type":"string","format":"uuid","title":"Agent Id"},"display_name":{"type":"string","title":"Display Name"},"a2a_exposed":{"type":"boolean","title":"A2A Exposed"},"mcp_exposed":{"type":"boolean","title":"Mcp Exposed"},"agent_card_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Card Url"},"mcp_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcp Url"}},"type":"object","required":["agent_id","display_name","a2a_exposed","mcp_exposed"],"title":"PublishedA2AAgent"},"RadarChartArtifact":{"properties":{"chart_type":{"type":"string","const":"radar","title":"Chart Type"},"payload":{"$ref":"#/components/schemas/RadarChartPayloadResponse"}},"type":"object","required":["chart_type","payload"],"title":"RadarChartArtifact"},"RadarChartPayloadResponse":{"properties":{"title":{"type":"string","title":"Title"},"categories":{"items":{"type":"string"},"type":"array","title":"Categories"},"series":{"items":{"$ref":"#/components/schemas/_BarSeries"},"type":"array","title":"Series"},"y_scale":{"type":"string","title":"Y Scale","default":"linear"},"value_format":{"anyOf":[{"$ref":"#/components/schemas/_ValueFormat"},{"type":"null"}]}},"type":"object","required":["title","categories","series"],"title":"RadarChartPayloadResponse"},"RankedFinding":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"title":{"type":"string","title":"Title"},"what_happened":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"What Happened"},"identities_hit":{"type":"integer","title":"Identities Hit"},"turns_hit":{"type":"integer","title":"Turns Hit"},"who_line":{"type":"string","title":"Who Line"},"evidence":{"anyOf":[{"$ref":"#/components/schemas/FindingEvidence"},{"type":"null"}]},"state":{"type":"string","enum":["open","quiet"],"title":"State","default":"open"},"last_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen"},"last_seen_line":{"type":"string","title":"Last Seen Line","default":""},"quiet_line":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quiet Line"},"traffic_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Traffic Note"}},"additionalProperties":false,"type":"object","required":["id","title","what_happened","identities_hit","turns_hit","who_line","evidence"],"title":"RankedFinding"},"ReactionResponse":{"properties":{"emoji":{"type":"string","title":"Emoji"},"sender_identity_id":{"type":"string","format":"uuid","title":"Sender Identity Id"},"sender_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender Display Name"},"sender_avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender Avatar Url"},"sender_kind":{"anyOf":[{"type":"string","enum":["person","agent"]},{"type":"null"}],"title":"Sender Kind"},"reacted_at":{"type":"string","format":"date-time","title":"Reacted At"}},"type":"object","required":["emoji","sender_identity_id","sender_display_name","sender_avatar_url","sender_kind","reacted_at"],"title":"ReactionResponse"},"ReactionsResponse":{"properties":{"reactions":{"items":{"$ref":"#/components/schemas/ReactionResponse"},"type":"array","title":"Reactions"},"counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Counts"}},"type":"object","required":["reactions","counts"],"title":"ReactionsResponse"},"ReadReceiptResponse":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"display_name":{"type":"string","title":"Display Name"},"read_at":{"type":"string","format":"date-time","title":"Read At"}},"type":"object","required":["identity_id","display_name","read_at"],"title":"ReadReceiptResponse"},"RealtimeEventOut":{"properties":{"seq":{"type":"integer","title":"Seq"},"topic":{"type":"string","title":"Topic"},"kind":{"type":"string","title":"Kind"},"entity_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Type"},"entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Id"},"version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Version"},"hint":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Hint"}},"type":"object","required":["seq","topic","kind"],"title":"RealtimeEventOut","description":"One row of the realtime event log, as returned to the owning identity (TOS-7985)."},"RebuildMindOut":{"properties":{"ok":{"type":"boolean","title":"Ok"},"detail":{"type":"string","title":"Detail"},"status":{"additionalProperties":true,"type":"object","title":"Status"}},"type":"object","required":["ok","detail","status"],"title":"RebuildMindOut"},"ReceiptBody":{"properties":{"bundle_version":{"type":"string","maxLength":200,"minLength":1,"title":"Bundle Version"},"git_sha":{"type":"string","maxLength":200,"minLength":1,"title":"Git Sha"},"channel":{"type":"string","enum":["stable","canary"],"title":"Channel"},"manifest_digest":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","title":"Manifest Digest"}},"type":"object","required":["bundle_version","git_sha","channel","manifest_digest"],"title":"ReceiptBody"},"ReceiptMetrics":{"properties":{"total_provider_cost_exact_usd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Total Provider Cost Exact Usd"},"total_charged_cost_exact_usd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Total Charged Cost Exact Usd"},"charge_complete":{"type":"boolean","title":"Charge Complete","default":false},"primary_cost_scope":{"type":"string","title":"Primary Cost Scope","default":"response"},"funding_allocations":{"items":{"$ref":"#/components/schemas/FundingAllocation"},"type":"array","title":"Funding Allocations","default":[]},"browser_timing":{"anyOf":[{"$ref":"#/components/schemas/BrowserTiming"},{"type":"null"}]},"duration_source":{"type":"string","title":"Duration Source","default":"server"},"total_provider_cost_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Provider Cost Usd"},"total_charged_cost_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Charged Cost Usd"},"payers":{"items":{"$ref":"#/components/schemas/ReceiptPayer"},"type":"array","title":"Payers","default":[]},"post_turn_learning_cost_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Post Turn Learning Cost Usd"},"post_turn_learning_call_count":{"type":"integer","title":"Post Turn Learning Call Count","default":0},"total_duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Duration Ms"},"stage_timings":{"items":{"$ref":"#/components/schemas/StageTiming"},"type":"array","title":"Stage Timings","default":[]},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"model_parameters":{"anyOf":[{"$ref":"#/components/schemas/ModelParameters"},{"type":"null"}]},"input_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Input Tokens"},"output_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Tokens"},"context_items_used":{"type":"integer","title":"Context Items Used"},"grounding_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Grounding Summary"},"retrieval_status_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retrieval Status Label"},"retrieval_status_tone":{"type":"string","title":"Retrieval Status Tone"}},"type":"object","required":["total_provider_cost_usd","total_charged_cost_usd","total_duration_ms","model","provider","input_tokens","output_tokens","context_items_used","grounding_summary","retrieval_status_label","retrieval_status_tone"],"title":"ReceiptMetrics"},"ReceiptPayer":{"properties":{"identity_id":{"type":"string","title":"Identity Id"},"amount_usd":{"type":"number","title":"Amount Usd"},"is_viewer":{"type":"boolean","title":"Is Viewer"}},"type":"object","required":["identity_id","amount_usd","is_viewer"],"title":"ReceiptPayer","description":"One wallet's share of ``total_charged_cost_usd`` (TOS-2643).\n\nUnder ``owner_pays`` billing the viewer is not necessarily the identity\nwhose balance funded the turn, and a turn can mix payers across its\nmodel_runs. ``is_viewer`` lets the frontend say \"your wallet\" only when\nthat is actually true.\n\nDeliberately carries NO display name. The only thing a caller needs to\nknow is whether the cost came out of THEIR wallet or the agent's side;\nwho tops up the agent's wallet is an upstream funding arrangement and\nnone of the caller's business. Sending the payer's name would newly\nexpose an agent owner's personal display name to every caller - the\nagent API itself exposes owners only as opaque ids\n(``AgentOwnerResponse``). Do not add a name field back; render from\n``is_viewer``. This is the wallet vocabulary TOS-2640 makes literal."},"ReceivedResponse":{"properties":{"status":{"type":"string","const":"received","title":"Status","default":"received"}},"type":"object","title":"ReceivedResponse"},"ReconcileResult":{"properties":{"affected_minds":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Affected Minds"}},"type":"object","required":["affected_minds"],"title":"ReconcileResult"},"ReconnectResponse":{"properties":{"instance_id":{"type":"string","format":"uuid","title":"Instance Id"},"health":{"$ref":"#/components/schemas/ConnectionHealthOut"},"resolved":{"type":"boolean","title":"Resolved"},"next_action":{"type":"string","title":"Next Action"},"reauthorize_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reauthorize Path"},"preserved_grants":{"items":{"type":"string"},"type":"array","title":"Preserved Grants"},"preservation_notice":{"type":"string","title":"Preservation Notice"}},"type":"object","required":["instance_id","health","resolved","next_action","preservation_notice"],"title":"ReconnectResponse","description":"Returned by the needs-attention repair/reconnect flow (TOS-2708).\n\n``preserved_grants`` enumerates, concretely, what reconnecting does NOT\ntouch — the guarantee ``preservation_notice`` states in prose. Both are\ncomputed from what actually exists on the connection, not hardcoded copy, so\nthe promise cannot drift away from the behavior."},"RecordFindingEventRequest":{"properties":{"action":{"type":"string","title":"Action"},"evidence":{"additionalProperties":true,"type":"object","title":"Evidence"}},"type":"object","required":["action"],"title":"RecordFindingEventRequest"},"RecordFindingEventResponse":{"properties":{"finding_id":{"type":"string","format":"uuid","title":"Finding Id"},"state":{"type":"string","title":"State"},"action":{"type":"string","title":"Action"},"recorded_at":{"type":"string","format":"date-time","title":"Recorded At"}},"type":"object","required":["finding_id","state","action","recorded_at"],"title":"RecordFindingEventResponse"},"RecordOfMeOut":{"properties":{"total":{"type":"integer","title":"Total"},"distinct_collections":{"type":"integer","title":"Distinct Collections"},"oldest_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Oldest At"},"newest_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Newest At"},"entries":{"items":{"$ref":"#/components/schemas/SubjectRecordOut"},"type":"array","title":"Entries"}},"type":"object","required":["total","distinct_collections","oldest_at","newest_at","entries"],"title":"RecordOfMeOut"},"ReextractResultV1":{"properties":{"propositions_created":{"type":"integer","title":"Propositions Created"}},"type":"object","required":["propositions_created"],"title":"ReextractResultV1","description":"Result of POST /api/ingest/external/v1/sessions/<source>/<id>/reextract."},"RegisterByoEnvironmentIn":{"properties":{"name":{"type":"string","title":"Name"},"admin_dsn":{"type":"string","title":"Admin Dsn"}},"type":"object","required":["name","admin_dsn"],"title":"RegisterByoEnvironmentIn"},"RegisterEnvironmentIn":{"properties":{"name":{"type":"string","title":"Name"},"admin_dsn":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Dsn"},"admin_dsn_secret_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Dsn Secret Ref"}},"type":"object","required":["name"],"title":"RegisterEnvironmentIn"},"RegistrationCreate":{"properties":{"name":{"type":"string","maxLength":64,"minLength":1,"title":"Name"},"transport":{"type":"string","enum":["http","sse","stdio_bridge","rest"],"title":"Transport"},"connection_mode":{"type":"string","enum":["shared","per_caller"],"title":"Connection Mode"},"base_url":{"type":"string","maxLength":2048,"title":"Base Url","default":""},"display_icon_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Display Icon Url"},"auth_kind":{"type":"string","enum":["none","bearer","api_key_header","oauth2","gcp_oidc","gcp_service_account","github_app"],"title":"Auth Kind"},"auth_header_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Header Name"},"plaintext_secret":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Plaintext Secret"},"auth_secret_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Secret Ref"},"oauth_resource_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Oauth Resource Url"},"oauth_scopes":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Oauth Scopes"},"oauth_pkce_enabled":{"type":"boolean","title":"Oauth Pkce Enabled","default":true},"description":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"title":"Description"},"trusted":{"type":"boolean","title":"Trusted","default":true},"health_check_tool":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Health Check Tool"},"health_check_arguments":{"additionalProperties":true,"type":"object","title":"Health Check Arguments"},"health_check_declined":{"type":"boolean","title":"Health Check Declined","default":false},"health_check_decline_reason":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Health Check Decline Reason"},"refresh_seconds":{"type":"integer","minimum":1.0,"title":"Refresh Seconds","default":600},"rate_limit_per_minute":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Rate Limit Per Minute"},"request_max_bytes":{"type":"integer","minimum":1.0,"title":"Request Max Bytes","default":1048576},"response_max_bytes":{"type":"integer","minimum":1.0,"title":"Response Max Bytes","default":10485760},"stdio_command":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"title":"Stdio Command"},"stdio_args":{"items":{},"type":"array","title":"Stdio Args"},"stdio_env":{"additionalProperties":true,"type":"object","title":"Stdio Env"},"rest_manifest":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Rest Manifest"},"rest_openapi_source_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Rest Openapi Source Url"},"secret_refs":{"additionalProperties":true,"type":"object","title":"Secret Refs"},"secret_values":{"additionalProperties":{"type":"string"},"type":"object","title":"Secret Values"},"talkable":{"type":"boolean","title":"Talkable","default":false},"credential_fit_override_reason":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"title":"Credential Fit Override Reason"}},"type":"object","required":["name","transport","connection_mode","auth_kind"],"title":"RegistrationCreate","description":"Create payload. plaintext_secret (if provided) is encrypted server-side."},"RegistrationCreateResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"definition_id":{"type":"string","format":"uuid","title":"Definition Id"},"definition_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Definition Slug"},"account_capture_source":{"anyOf":[{"type":"string","enum":["gmail","google-calendar"]},{"type":"null"}],"title":"Account Capture Source"},"library_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Library Id"},"library_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Library Name"},"my_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"My Role"},"connection_mode":{"type":"string","enum":["shared","per_caller"],"title":"Connection Mode"},"alias":{"type":"string","title":"Alias"},"name":{"type":"string","title":"Name"},"transport":{"type":"string","enum":["http","sse","stdio_bridge","rest"],"title":"Transport"},"base_url":{"type":"string","title":"Base Url"},"display_icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Icon Url"},"display_icon_is_inferred":{"type":"boolean","title":"Display Icon Is Inferred","default":false},"auth_kind":{"type":"string","enum":["none","bearer","api_key_header","oauth2","gcp_oidc","gcp_service_account","github_app"],"title":"Auth Kind"},"auth_header_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Header Name"},"auth_secret_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Secret Ref"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"trusted":{"type":"boolean","title":"Trusted"},"enabled":{"type":"boolean","title":"Enabled"},"health_check_tool":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Health Check Tool"},"health_check_arguments":{"additionalProperties":true,"type":"object","title":"Health Check Arguments"},"health_check_declined":{"type":"boolean","title":"Health Check Declined","default":false},"health_check_decline_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Health Check Decline Reason"},"refresh_seconds":{"type":"integer","title":"Refresh Seconds"},"rate_limit_per_minute":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rate Limit Per Minute"},"request_max_bytes":{"type":"integer","title":"Request Max Bytes"},"response_max_bytes":{"type":"integer","title":"Response Max Bytes"},"talkable":{"type":"boolean","title":"Talkable","default":false},"stdio_command":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stdio Command"},"stdio_args":{"items":{},"type":"array","title":"Stdio Args"},"stdio_env":{"additionalProperties":true,"type":"object","title":"Stdio Env"},"rest_manifest":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Rest Manifest"},"rest_openapi_source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rest Openapi Source Url"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"icon_data_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Data Url"},"secret_refs":{"additionalProperties":true,"type":"object","title":"Secret Refs"},"config_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Config Version"},"tool_overrides":{"additionalProperties":true,"type":"object","title":"Tool Overrides"},"installed_template_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Installed Template Version"},"latest_template_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Latest Template Version"},"template_update_available":{"type":"boolean","title":"Template Update Available","default":false},"published_as_template":{"type":"boolean","title":"Published As Template","default":false},"published_template_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Published Template Version"},"published_template_visibility":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Published Template Visibility"},"oauth_resource_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Oauth Resource Url"},"oauth_authorization_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Oauth Authorization Url"},"oauth_token_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Oauth Token Url"},"oauth_client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Oauth Client Id"},"oauth_scopes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Oauth Scopes"},"oauth_pkce_enabled":{"type":"boolean","title":"Oauth Pkce Enabled","default":true},"oauth_client_secret_set":{"type":"boolean","title":"Oauth Client Secret Set","default":false},"oauth_requires_manual_client":{"type":"boolean","title":"Oauth Requires Manual Client","default":false},"oauth_token_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Oauth Token Expires At"},"oauth_connected":{"type":"boolean","title":"Oauth Connected","default":false},"oauth_granted_scopes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Oauth Granted Scopes"},"oauth_principal":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Oauth Principal"},"account_identifiable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Account Identifiable"},"permissions":{"anyOf":[{"items":{"$ref":"#/components/schemas/ConnectionPermissionOut"},"type":"array"},{"type":"null"}],"title":"Permissions"},"permissions_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Permissions Summary"},"provider_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Name"},"provider_consent_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Consent Url"},"sign_in_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sign In Note"},"owned_by_viewer":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Owned By Viewer"},"org_naming_mismatch_warning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Naming Mismatch Warning"},"credential_connected":{"type":"boolean","title":"Credential Connected","default":false},"credential_status":{"type":"string","enum":["connected","needs_reconnect","admin_repair","unreachable","missing"],"title":"Credential Status","default":"missing"},"viewer_removal":{"anyOf":[{"type":"string","enum":["self","other"]},{"type":"null"}],"title":"Viewer Removal"},"credential_last_auth_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Credential Last Auth Error"},"credential_failure_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Credential Failure Code"},"access_nature":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Nature"},"reauth_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reauth Class"},"server_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Server Name"},"server_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Server Version"},"protocol_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Protocol Version"},"server_capabilities":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Server Capabilities"},"server_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Server Instructions"},"last_test_success":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Last Test Success"},"last_test_tool_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Test Tool Count"},"last_test_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Test Error"},"last_test_duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Test Duration Ms"},"last_test_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Test At"},"test_result":{"anyOf":[{"$ref":"#/components/schemas/ConnectionTestResult"},{"type":"null"}]},"credential_fit_warning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Credential Fit Warning"}},"type":"object","required":["id","definition_id","connection_mode","alias","name","transport","base_url","auth_kind","auth_header_name","description","trusted","enabled","health_check_tool","refresh_seconds","rate_limit_per_minute","request_max_bytes","response_max_bytes"],"title":"RegistrationCreateResponse","description":"Returned by POST /api/integrations/instances.\n\nSame shape as RegistrationOut with one extra field: ``test_result``.\nSubclassing rather than wrapping keeps the top-level shape stable for\nexisting consumers - only the new ``test_result`` field is additive.\n\n``test_result`` is None when the create-time probe was skipped for OAuth\nregistrations; their connection state lives behind a post-create Connect flow.\n\n``credential_fit_warning`` (TOS-990 Phase 1b) is set when this integration's\naccess nature is 'service' but it was stood up on a user-OAuth credential and\nthe author did NOT pass a ``credential_fit_override_reason``. Additive,\noptional, warn-only — creation always succeeds."},"RegistrationOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"definition_id":{"type":"string","format":"uuid","title":"Definition Id"},"definition_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Definition Slug"},"account_capture_source":{"anyOf":[{"type":"string","enum":["gmail","google-calendar"]},{"type":"null"}],"title":"Account Capture Source"},"library_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Library Id"},"library_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Library Name"},"my_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"My Role"},"connection_mode":{"type":"string","enum":["shared","per_caller"],"title":"Connection Mode"},"alias":{"type":"string","title":"Alias"},"name":{"type":"string","title":"Name"},"transport":{"type":"string","enum":["http","sse","stdio_bridge","rest"],"title":"Transport"},"base_url":{"type":"string","title":"Base Url"},"display_icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Icon Url"},"display_icon_is_inferred":{"type":"boolean","title":"Display Icon Is Inferred","default":false},"auth_kind":{"type":"string","enum":["none","bearer","api_key_header","oauth2","gcp_oidc","gcp_service_account","github_app"],"title":"Auth Kind"},"auth_header_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Header Name"},"auth_secret_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Secret Ref"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"trusted":{"type":"boolean","title":"Trusted"},"enabled":{"type":"boolean","title":"Enabled"},"health_check_tool":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Health Check Tool"},"health_check_arguments":{"additionalProperties":true,"type":"object","title":"Health Check Arguments"},"health_check_declined":{"type":"boolean","title":"Health Check Declined","default":false},"health_check_decline_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Health Check Decline Reason"},"refresh_seconds":{"type":"integer","title":"Refresh Seconds"},"rate_limit_per_minute":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rate Limit Per Minute"},"request_max_bytes":{"type":"integer","title":"Request Max Bytes"},"response_max_bytes":{"type":"integer","title":"Response Max Bytes"},"talkable":{"type":"boolean","title":"Talkable","default":false},"stdio_command":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stdio Command"},"stdio_args":{"items":{},"type":"array","title":"Stdio Args"},"stdio_env":{"additionalProperties":true,"type":"object","title":"Stdio Env"},"rest_manifest":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Rest Manifest"},"rest_openapi_source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rest Openapi Source Url"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"icon_data_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Data Url"},"secret_refs":{"additionalProperties":true,"type":"object","title":"Secret Refs"},"config_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Config Version"},"tool_overrides":{"additionalProperties":true,"type":"object","title":"Tool Overrides"},"installed_template_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Installed Template Version"},"latest_template_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Latest Template Version"},"template_update_available":{"type":"boolean","title":"Template Update Available","default":false},"published_as_template":{"type":"boolean","title":"Published As Template","default":false},"published_template_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Published Template Version"},"published_template_visibility":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Published Template Visibility"},"oauth_resource_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Oauth Resource Url"},"oauth_authorization_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Oauth Authorization Url"},"oauth_token_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Oauth Token Url"},"oauth_client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Oauth Client Id"},"oauth_scopes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Oauth Scopes"},"oauth_pkce_enabled":{"type":"boolean","title":"Oauth Pkce Enabled","default":true},"oauth_client_secret_set":{"type":"boolean","title":"Oauth Client Secret Set","default":false},"oauth_requires_manual_client":{"type":"boolean","title":"Oauth Requires Manual Client","default":false},"oauth_token_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Oauth Token Expires At"},"oauth_connected":{"type":"boolean","title":"Oauth Connected","default":false},"oauth_granted_scopes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Oauth Granted Scopes"},"oauth_principal":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Oauth Principal"},"account_identifiable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Account Identifiable"},"permissions":{"anyOf":[{"items":{"$ref":"#/components/schemas/ConnectionPermissionOut"},"type":"array"},{"type":"null"}],"title":"Permissions"},"permissions_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Permissions Summary"},"provider_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Name"},"provider_consent_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Consent Url"},"sign_in_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sign In Note"},"owned_by_viewer":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Owned By Viewer"},"org_naming_mismatch_warning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Naming Mismatch Warning"},"credential_connected":{"type":"boolean","title":"Credential Connected","default":false},"credential_status":{"type":"string","enum":["connected","needs_reconnect","admin_repair","unreachable","missing"],"title":"Credential Status","default":"missing"},"viewer_removal":{"anyOf":[{"type":"string","enum":["self","other"]},{"type":"null"}],"title":"Viewer Removal"},"credential_last_auth_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Credential Last Auth Error"},"credential_failure_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Credential Failure Code"},"access_nature":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Nature"},"reauth_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reauth Class"},"server_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Server Name"},"server_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Server Version"},"protocol_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Protocol Version"},"server_capabilities":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Server Capabilities"},"server_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Server Instructions"},"last_test_success":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Last Test Success"},"last_test_tool_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Test Tool Count"},"last_test_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Test Error"},"last_test_duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Test Duration Ms"},"last_test_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Test At"}},"type":"object","required":["id","definition_id","connection_mode","alias","name","transport","base_url","auth_kind","auth_header_name","description","trusted","enabled","health_check_tool","refresh_seconds","rate_limit_per_minute","request_max_bytes","response_max_bytes"],"title":"RegistrationOut","description":"Read-side. Secret refs are accepted on writes but not echoed from connections."},"RegistrationRejectRequest":{"properties":{"reason":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Reason"}},"type":"object","title":"RegistrationRejectRequest"},"RegistrationResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"source":{"type":"string","title":"Source"},"instance_id":{"type":"string","title":"Instance Id"},"instance_label":{"type":"string","title":"Instance Label"},"environment":{"type":"string","title":"Environment"},"connect_url":{"type":"string","title":"Connect Url"},"oauth_redirect_uris":{"items":{"type":"string"},"type":"array","title":"Oauth Redirect Uris"},"status":{"type":"string","title":"Status"},"replaces_registration_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Replaces Registration Id"},"rejection_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rejection Reason"},"reviewed_by_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Reviewed By Identity Id"},"reviewed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Reviewed At"},"submitted_at":{"type":"string","format":"date-time","title":"Submitted At"}},"type":"object","required":["id","source","instance_id","instance_label","environment","connect_url","oauth_redirect_uris","status","replaces_registration_id","rejection_reason","reviewed_by_identity_id","reviewed_at","submitted_at"],"title":"RegistrationResponse"},"RegistrationUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Name","description":"Shared connector definition name. Changes every connection using that definition and this connection's alias. To rename only this connection, set alias instead."},"alias":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Alias","description":"Display label for this connection only. Does not rename sibling connections."},"transport":{"anyOf":[{"type":"string","enum":["http","sse","stdio_bridge","rest"]},{"type":"null"}],"title":"Transport"},"base_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Base Url"},"display_icon_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Display Icon Url"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Shared connector definition description. Changes every connection using that definition; this is not a per-connection note."},"trusted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Trusted"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"refresh_seconds":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Refresh Seconds"},"rate_limit_per_minute":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Rate Limit Per Minute"},"request_max_bytes":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Request Max Bytes"},"response_max_bytes":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Response Max Bytes"},"plaintext_secret":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Plaintext Secret"},"health_check_tool":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Health Check Tool"},"health_check_arguments":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Health Check Arguments"},"health_check_declined":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Health Check Declined"},"health_check_decline_reason":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Health Check Decline Reason"},"impersonate_service_account":{"anyOf":[{"type":"string","maxLength":256,"pattern":"^$|^[a-z0-9][a-z0-9-]{4,29}@[a-z0-9-]{1,63}\\.iam\\.gserviceaccount\\.com$"},{"type":"null"}],"title":"Impersonate Service Account"},"oauth_client_id":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Oauth Client Id"},"oauth_authorization_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Oauth Authorization Url"},"oauth_token_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Oauth Token Url"},"oauth_registration_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Oauth Registration Url"},"oauth_scopes":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Oauth Scopes"},"oauth_pkce_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Oauth Pkce Enabled"},"oauth_client_secret_plaintext":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Oauth Client Secret Plaintext"},"auth_kind":{"anyOf":[{"type":"string","enum":["none","bearer","api_key_header","oauth2","gcp_oidc","gcp_service_account","github_app"]},{"type":"null"}],"title":"Auth Kind"},"auth_header_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Header Name"},"oauth_resource_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Oauth Resource Url"},"stdio_command":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"title":"Stdio Command"},"stdio_args":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Stdio Args"},"stdio_env":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Stdio Env"},"rest_manifest":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Rest Manifest"},"rest_openapi_source_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Rest Openapi Source Url"},"secret_refs":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Secret Refs"},"secret_values":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Secret Values"},"remove_secret_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Remove Secret Names"},"talkable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Talkable"},"library_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Library Id"},"connection_mode":{"anyOf":[{"type":"string","enum":["shared","per_caller"]},{"type":"null"}],"title":"Connection Mode"},"confirm_credential_deletion":{"type":"boolean","title":"Confirm Credential Deletion","default":false},"confirm_shared_account_exposure":{"type":"boolean","title":"Confirm Shared Account Exposure","default":false}},"type":"object","title":"RegistrationUpdate","description":"Patch payload. Unset fields are not modified.\n\nIncluding ``auth_kind`` switches the registration's authentication mode\nin place. The service clears stale fields for the previous mode (e.g.\nswitching to ``oauth2`` clears ``auth_header_name`` + ``auth_secret_ref``\nand any cached OAuth tokens, forcing a re-Connect). To prevent leaving\nthe row in an inconsistent state, ``auth_header_name`` and\n``oauth_resource_url`` may only be set when ``auth_kind`` is also set.\n\n``alias`` edits the configured instance display name. ``name`` is retained\nfor legacy definition/template-source renames. ``transport`` and\n``base_url`` are also editable. The service clears state that no longer\napplies on transitions: a ``base_url`` change on an oauth2 registration\ndrops the cached tokens (the audience moved); any transport change clears\n``last_test_*`` since the upstream tool catalog is no longer authoritative."},"RegistryBundleReceipt":{"properties":{"schema_version":{"type":"integer","title":"Schema Version"},"content_version":{"type":"string","title":"Content Version"},"published_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Published At"},"source":{"type":"string","title":"Source"},"fetched_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fetched At"},"applied_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Applied At"}},"type":"object","required":["schema_version","content_version","source"],"title":"RegistryBundleReceipt","description":"The install's last applied model-registry pack."},"RegistryBundleStateResponse":{"properties":{"receipt":{"anyOf":[{"$ref":"#/components/schemas/RegistryBundleReceipt"},{"type":"null"}]},"packaged_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Packaged Version"},"packaged_published_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Packaged Published At"}},"type":"object","title":"RegistryBundleStateResponse","description":"Whether the model registry is synced, and what \"synced\" means.\n\n`receipt` is the install's last applied model-registry pack (the real\nanswer to \"when did my model data last change\"); `packaged_version` is the\nbundle vendored into the running image, so the UI can flag a receipt that\nlags the code it ships with. Both are null only on an install that has\nnever applied any pack."},"RelationRow":{"properties":{"type":{"type":"string","title":"Type"},"weight":{"type":"number","title":"Weight"},"other_proposition_id":{"type":"string","format":"uuid","title":"Other Proposition Id"},"other_summary":{"type":"string","title":"Other Summary"}},"type":"object","required":["type","weight","other_proposition_id","other_summary"],"title":"RelationRow"},"RelationshipBlockBody":{"properties":{"other_identity_id":{"type":"string","format":"uuid","title":"Other Identity Id"}},"type":"object","required":["other_identity_id"],"title":"RelationshipBlockBody"},"RelationshipBlockResponse":{"properties":{"other_identity_id":{"type":"string","format":"uuid","title":"Other Identity Id"},"blocked_by_identity_id":{"type":"string","format":"uuid","title":"Blocked By Identity Id"},"blocked_at":{"type":"string","format":"date-time","title":"Blocked At"}},"type":"object","required":["other_identity_id","blocked_by_identity_id","blocked_at"],"title":"RelationshipBlockResponse","description":"One frozen relationship, from the calling identity's point of view.\n\n``blocked_by_identity_id`` is the whole payload's reason for existing: only\nthe identity that placed a block may lift it, so a caller cannot render a\nworking Unblock control from a bare boolean."},"RelationshipBlocksResponse":{"properties":{"blocks":{"items":{"$ref":"#/components/schemas/RelationshipBlockResponse"},"type":"array","title":"Blocks"}},"type":"object","required":["blocks"],"title":"RelationshipBlocksResponse"},"ReleaseComponentView":{"properties":{"name":{"type":"string","title":"Name"},"state":{"type":"string","title":"State"},"detail":{"type":"string","title":"Detail"}},"type":"object","required":["name","state","detail"],"title":"ReleaseComponentView"},"ReleaseListOut":{"properties":{"releases":{"items":{"$ref":"#/components/schemas/ReleaseSummaryOut"},"type":"array","title":"Releases"}},"type":"object","required":["releases"],"title":"ReleaseListOut"},"ReleaseStatusView":{"properties":{"verdict":{"type":"string","title":"Verdict"},"headline":{"type":"string","title":"Headline"},"summary":{"type":"string","title":"Summary"},"current_release":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Release"},"available_release":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Available Release"},"last_checked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Checked At"},"components":{"items":{"$ref":"#/components/schemas/ReleaseComponentView"},"type":"array","title":"Components"}},"type":"object","required":["verdict","headline","summary","current_release","available_release","last_checked_at","components"],"title":"ReleaseStatusView"},"ReleaseSummaryOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"version_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Version Number"},"bundle_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bundle Version"},"source":{"type":"string","title":"Source"},"category":{"type":"string","title":"Category"},"title":{"type":"string","title":"Title"},"summary":{"type":"string","title":"Summary"},"notes_markdown":{"type":"string","title":"Notes Markdown"},"notes_markdown_admin":{"type":"string","title":"Notes Markdown Admin"},"notify_users":{"type":"boolean","title":"Notify Users"},"status":{"type":"string","title":"Status"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"released_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Released At"},"installed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Installed At"},"seen":{"type":"boolean","title":"Seen"}},"type":"object","required":["id","version_number","bundle_version","source","category","title","summary","notes_markdown","notes_markdown_admin","notify_users","status","published_at","released_at","installed_at","seen"],"title":"ReleaseSummaryOut"},"ReloadRuleRequest":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":true},"threshold_usd":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string"}],"title":"Threshold Usd"},"topup_usd":{"anyOf":[{"type":"number"},{"type":"string"}],"title":"Topup Usd","description":"Whole dollars, 10 to 500"},"monthly_cap_usd":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string"}],"title":"Monthly Cap Usd"}},"type":"object","required":["threshold_usd","topup_usd","monthly_cap_usd"],"title":"ReloadRuleRequest"},"RemovalImpactAuthority":{"properties":{"kind":{"type":"string","title":"Kind"},"label":{"type":"string","title":"Label"}},"type":"object","required":["kind","label"],"title":"RemovalImpactAuthority"},"RemovalImpactDocuments":{"properties":{"currently_held":{"type":"integer","title":"Currently Held"},"would_remain":{"type":"integer","title":"Would Remain"},"would_be_withdrawn":{"type":"integer","title":"Would Be Withdrawn"},"minds_holding":{"type":"integer","title":"Minds Holding"}},"type":"object","required":["currently_held","would_remain","would_be_withdrawn","minds_holding"],"title":"RemovalImpactDocuments"},"RemovalImpactMember":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"display_name":{"type":"string","title":"Display Name"},"role":{"type":"string","title":"Role"},"kind":{"type":"string","title":"Kind"}},"type":"object","required":["identity_id","display_name","role","kind"],"title":"RemovalImpactMember"},"RemovalImpactPending":{"properties":{"open_runs":{"type":"integer","title":"Open Runs"},"pending_approvals":{"type":"integer","title":"Pending Approvals"},"items":{"items":{"$ref":"#/components/schemas/RemovalImpactRun"},"type":"array","title":"Items"}},"type":"object","required":["open_runs","pending_approvals","items"],"title":"RemovalImpactPending"},"RemovalImpactReach":{"properties":{"still_reaches":{"type":"boolean","title":"Still Reaches"},"via":{"items":{"$ref":"#/components/schemas/RemovalImpactRoute"},"type":"array","title":"Via"},"summary":{"type":"string","title":"Summary"}},"type":"object","required":["still_reaches","via","summary"],"title":"RemovalImpactReach"},"RemovalImpactResponse":{"properties":{"member":{"$ref":"#/components/schemas/RemovalImpactMember"},"remaining_reach":{"$ref":"#/components/schemas/RemovalImpactReach"},"documents":{"$ref":"#/components/schemas/RemovalImpactDocuments"},"surviving_authority":{"items":{"$ref":"#/components/schemas/RemovalImpactAuthority"},"type":"array","title":"Surviving Authority"},"surviving_authority_truncated":{"type":"boolean","title":"Surviving Authority Truncated"},"pending_work":{"$ref":"#/components/schemas/RemovalImpactPending"},"last_admin_blocked":{"type":"boolean","title":"Last Admin Blocked"},"notes":{"items":{"type":"string"},"type":"array","title":"Notes"}},"type":"object","required":["member","remaining_reach","documents","surviving_authority","surviving_authority_truncated","pending_work","last_admin_blocked","notes"],"title":"RemovalImpactResponse","description":"TOS-3760: what removing one member leaves in place. Read only; promises nothing."},"RemovalImpactRoute":{"properties":{"kind":{"type":"string","title":"Kind"},"label":{"type":"string","title":"Label"},"role":{"type":"string","title":"Role"}},"type":"object","required":["kind","label","role"],"title":"RemovalImpactRoute"},"RemovalImpactRun":{"properties":{"run_id":{"type":"string","format":"uuid","title":"Run Id"},"status":{"type":"string","title":"Status"},"title":{"type":"string","title":"Title"}},"type":"object","required":["run_id","status","title"],"title":"RemovalImpactRun"},"RemoveResultOut":{"properties":{"installation_id":{"type":"string","format":"uuid","title":"Installation Id"},"removed":{"type":"boolean","title":"Removed"}},"additionalProperties":false,"type":"object","required":["installation_id","removed"],"title":"RemoveResultOut","description":"Outcome of ``DELETE /installations/{id}`` (remove-from-folder)."},"RenameKBRequest":{"properties":{"name":{"type":"string","title":"Name"}},"type":"object","required":["name"],"title":"RenameKBRequest"},"RenameSkillBody":{"properties":{"slug":{"type":"string","title":"Slug"}},"type":"object","required":["slug"],"title":"RenameSkillBody"},"RenderBundledReleaseIn":{"properties":{"bundleVersion":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]*$","title":"Bundleversion"},"gitSha":{"type":"string","pattern":"^[0-9a-f]{40}$","title":"Gitsha"},"source":{"type":"string","enum":["backend","web","bridge","docs","full_stack"],"title":"Source"},"codeDiff":{"type":"string","minLength":1,"title":"Codediff"},"diffStats":{"$ref":"#/components/schemas/DiffStatsIn"},"notesInput":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notesinput"},"publishedAt":{"type":"string","format":"date-time","title":"Publishedat"}},"type":"object","required":["bundleVersion","gitSha","source","codeDiff","publishedAt"],"title":"RenderBundledReleaseIn"},"RenewBody":{"properties":{"owner_token":{"type":"string","format":"uuid","title":"Owner Token"}},"type":"object","required":["owner_token"],"title":"RenewBody"},"ReorderPinsRequest":{"properties":{"chat_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Chat Ids"}},"type":"object","required":["chat_ids"],"title":"ReorderPinsRequest"},"ReplaceDocumentOriginalRequest":{"properties":{"filename":{"type":"string","title":"Filename"},"mime_type":{"type":"string","title":"Mime Type"},"content_base64":{"type":"string","title":"Content Base64"}},"type":"object","required":["filename","mime_type","content_base64"],"title":"ReplaceDocumentOriginalRequest"},"ReplayTurnRequest":{"properties":{"experiment_id":{"type":"string","format":"uuid","title":"Experiment Id"},"variant":{"type":"string","maxLength":80,"minLength":1,"pattern":"^[a-zA-Z0-9._-]+$","title":"Variant","default":"baseline"},"legacy_summary_message_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Legacy Summary Message Id"}},"type":"object","title":"ReplayTurnRequest"},"ReplayTurnResponse":{"properties":{"experiment_id":{"type":"string","format":"uuid","title":"Experiment Id"},"variant":{"type":"string","title":"Variant"},"replay_chat_id":{"type":"string","format":"uuid","title":"Replay Chat Id"},"source_message_id":{"type":"string","format":"uuid","title":"Source Message Id"},"source_user_message_id":{"type":"string","format":"uuid","title":"Source User Message Id"},"source_response_message_id":{"type":"string","format":"uuid","title":"Source Response Message Id"},"user_message_id":{"type":"string","format":"uuid","title":"User Message Id"},"assistant_message_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Assistant Message Ids"},"request_id":{"type":"string","title":"Request Id"},"trace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trace Id"},"duration_ms":{"type":"integer","title":"Duration Ms"},"event_counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Event Counts"},"fidelity":{"additionalProperties":{"type":"string"},"type":"object","title":"Fidelity"}},"type":"object","required":["experiment_id","variant","replay_chat_id","source_message_id","source_user_message_id","source_response_message_id","user_message_id","assistant_message_ids","request_id","trace_id","duration_ms","event_counts","fidelity"],"title":"ReplayTurnResponse"},"ReplyWorkflow":{"type":"string","enum":["manual","draft","send"],"title":"ReplyWorkflow"},"RepoFolderOut":{"properties":{"path":{"type":"string","title":"Path"},"files":{"type":"integer","title":"Files"},"markdown_files":{"type":"integer","title":"Markdown Files"}},"type":"object","required":["path","files","markdown_files"],"title":"RepoFolderOut"},"ReporterWeeklyStatusCheckOut":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"week_start":{"type":"string","title":"Week Start"},"count":{"type":"integer","title":"Count"},"period":{"type":"string","title":"Period"}},"type":"object","required":["identity_id","week_start","count","period"],"title":"ReporterWeeklyStatusCheckOut"},"RequestCard":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"requester":{"$ref":"#/components/schemas/RequestIdentity"},"target":{"$ref":"#/components/schemas/RequestIdentity"},"approver":{"$ref":"#/components/schemas/RequestIdentity"},"requester_identity_id":{"type":"string","format":"uuid","title":"Requester Identity Id"},"target_identity_id":{"type":"string","format":"uuid","title":"Target Identity Id"},"owner_identity_id":{"type":"string","format":"uuid","title":"Owner Identity Id"},"chat_id":{"type":"string","format":"uuid","title":"Chat Id"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"proposed_duration":{"type":"string","title":"Proposed Duration"},"status":{"type":"string","title":"Status"},"version":{"type":"integer","title":"Version"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"decided_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Decided At"},"grant":{"anyOf":[{"$ref":"#/components/schemas/RequestGrant"},{"type":"null"}]},"grant_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Grant Id"},"approved_duration":{"anyOf":[{"type":"string","enum":["one_session","timed","indefinite"]},{"type":"null"}],"title":"Approved Duration"},"approved_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Approved Expires At"},"expiry_timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expiry Timezone"},"session_idle_minutes":{"type":"integer","title":"Session Idle Minutes","default":15},"session_max_minutes":{"type":"integer","title":"Session Max Minutes","default":120}},"type":"object","required":["id","requester","target","approver","requester_identity_id","target_identity_id","owner_identity_id","chat_id","reason","proposed_duration","status","version","expires_at","created_at","decided_at","grant","grant_id","approved_duration","approved_expires_at","expiry_timezone"],"title":"RequestCard"},"RequestGrant":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"duration_mode":{"type":"string","title":"Duration Mode"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"expiry_timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expiry Timezone"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"},"consumed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Consumed At"}},"type":"object","required":["id","duration_mode","expires_at","expiry_timezone","revoked_at","consumed_at"],"title":"RequestGrant"},"RequestIdentity":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"display_name":{"type":"string","title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"kind":{"type":"string","title":"Kind"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","required":["id","display_name","avatar_url","kind","email"],"title":"RequestIdentity"},"RequestRunInputRequest":{"properties":{"run_id":{"type":"string","format":"uuid","title":"Run Id"},"question":{"type":"string","title":"Question"}},"type":"object","required":["run_id","question"],"title":"RequestRunInputRequest"},"RequestRunInputResponse":{"properties":{"run_id":{"type":"string","format":"uuid","title":"Run Id"},"status":{"type":"string","title":"Status"}},"type":"object","required":["run_id","status"],"title":"RequestRunInputResponse"},"RequestUpdatesMetricsOut":{"properties":{"since":{"type":"string","format":"date-time","title":"Since"},"until":{"type":"string","format":"date-time","title":"Until"},"launched_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Launched At"},"notices_delivered":{"type":"integer","title":"Notices Delivered"},"notices_read":{"type":"integer","title":"Notices Read"},"notices_replied":{"type":"integer","title":"Notices Replied"},"read_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Read Rate"},"reply_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Reply Rate"},"reporters_delivered":{"type":"integer","title":"Reporters Delivered"},"opt_outs":{"type":"integer","title":"Opt Outs"},"opt_out_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Opt Out Rate"},"status_checks_by_reporter_week":{"items":{"$ref":"#/components/schemas/ReporterWeeklyStatusCheckOut"},"type":"array","title":"Status Checks By Reporter Week"}},"type":"object","required":["since","until","launched_at","notices_delivered","notices_read","notices_replied","read_rate","reply_rate","reporters_delivered","opt_outs","opt_out_rate","status_checks_by_reporter_week"],"title":"RequestUpdatesMetricsOut"},"RequestsResponse":{"properties":{"requests":{"items":{"$ref":"#/components/schemas/RequestCard"},"type":"array","title":"Requests"}},"type":"object","required":["requests"],"title":"RequestsResponse"},"RequiredResponse":{"properties":{"needs_acceptance":{"type":"boolean","title":"Needs Acceptance"},"documents":{"items":{"$ref":"#/components/schemas/DocumentStatusResponse"},"type":"array","title":"Documents"}},"type":"object","required":["needs_acceptance","documents"],"title":"RequiredResponse"},"ResolveChatTaskApprovalRequest":{"properties":{"status":{"type":"string","enum":["approved","denied","canceled"],"title":"Status"},"resolution_note":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Resolution Note"}},"type":"object","required":["status"],"title":"ResolveChatTaskApprovalRequest"},"ResolveResponseProposalRequest":{"properties":{"action":{"type":"string","enum":["approve","reject"],"title":"Action"},"edited_text":{"anyOf":[{"type":"string","maxLength":100000},{"type":"null"}],"title":"Edited Text"},"note":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Note"}},"type":"object","required":["action"],"title":"ResolveResponseProposalRequest"},"ResolvedAddressResponse":{"properties":{"address":{"type":"string","title":"Address"},"object_type":{"type":"string","title":"Object Type"},"object_id":{"type":"string","format":"uuid","title":"Object Id"},"domain_id":{"type":"string","format":"uuid","title":"Domain Id"},"domain_address":{"type":"string","title":"Domain Address"},"my_role":{"type":"string","title":"My Role"},"route":{"type":"string","title":"Route"}},"type":"object","required":["address","object_type","object_id","domain_id","domain_address","my_role","route"],"title":"ResolvedAddressResponse","description":"A resolved address, plus the in-app route that renders it."},"ResourceBindingCreateBody":{"properties":{"capture_window_days":{"type":"integer","maximum":365.0,"minimum":1.0,"title":"Capture Window Days","default":30},"external_resource_ref":{"anyOf":[{"type":"string","maxLength":500,"minLength":1},{"type":"null"}],"title":"External Resource Ref"},"selection_kind":{"anyOf":[{"type":"string","enum":["label","sender","all_mail","calendar"]},{"type":"null"}],"title":"Selection Kind"},"selection_value":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Selection Value"},"display_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Display Name"},"sync_in_enabled":{"type":"boolean","title":"Sync In Enabled","default":false},"sync_out_enabled":{"type":"boolean","title":"Sync Out Enabled","default":false},"reply_policy":{"type":"string","enum":["always","when_addressed","never"],"title":"Reply Policy","default":"when_addressed"},"autonomy_mode_default":{"type":"string","enum":["human","agent_augmented","agent"],"title":"Autonomy Mode Default","default":"human"},"mind_extraction_consented":{"type":"boolean","title":"Mind Extraction Consented","default":false}},"type":"object","title":"ResourceBindingCreateBody"},"ResourceBindingOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"instance_id":{"type":"string","format":"uuid","title":"Instance Id"},"external_resource_ref":{"type":"string","title":"External Resource Ref"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"sync_in_enabled":{"type":"boolean","title":"Sync In Enabled"},"sync_out_enabled":{"type":"boolean","title":"Sync Out Enabled"},"reply_policy":{"type":"string","title":"Reply Policy"},"autonomy_mode_default":{"type":"string","title":"Autonomy Mode Default"},"mind_extraction_consented":{"type":"boolean","title":"Mind Extraction Consented"},"selection_kind":{"anyOf":[{"type":"string","enum":["label","sender","all_mail","calendar"]},{"type":"null"}],"title":"Selection Kind"},"selection_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Selection Value"},"capture_window_days":{"type":"integer","title":"Capture Window Days"},"capture_page_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capture Page Token"},"capture_window_started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Capture Window Started At"},"sync_watermark_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sync Watermark At"},"last_sync_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Sync At"},"last_sync_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Sync Error"},"created_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","instance_id","external_resource_ref","display_name","sync_in_enabled","sync_out_enabled","reply_policy","autonomy_mode_default","mind_extraction_consented","capture_window_days","capture_page_token","capture_window_started_at","sync_watermark_at","last_sync_at","last_sync_error","created_by","created_at","updated_at"],"title":"ResourceBindingOut"},"ResourceBindingPatchBody":{"properties":{"capture_window_days":{"anyOf":[{"type":"integer","maximum":365.0,"minimum":1.0},{"type":"null"}],"title":"Capture Window Days"},"selection_kind":{"anyOf":[{"type":"string","enum":["label","sender","all_mail","calendar"]},{"type":"null"}],"title":"Selection Kind"},"selection_value":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Selection Value"},"display_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Display Name"},"sync_in_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Sync In Enabled"},"sync_out_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Sync Out Enabled"},"reply_policy":{"anyOf":[{"type":"string","enum":["always","when_addressed","never"]},{"type":"null"}],"title":"Reply Policy"},"autonomy_mode_default":{"anyOf":[{"type":"string","enum":["human","agent_augmented","agent"]},{"type":"null"}],"title":"Autonomy Mode Default"},"mind_extraction_consented":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Mind Extraction Consented"}},"type":"object","title":"ResourceBindingPatchBody"},"ResourceCatalogItem":{"properties":{"external_resource_ref":{"type":"string","title":"External Resource Ref"},"display_name":{"type":"string","title":"Display Name"},"kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kind"}},"type":"object","required":["external_resource_ref","display_name"],"title":"ResourceCatalogItem"},"ResourceCatalogOut":{"properties":{"resources":{"items":{"$ref":"#/components/schemas/ResourceCatalogItem"},"type":"array","title":"Resources"},"supports_enumeration":{"type":"boolean","title":"Supports Enumeration"}},"type":"object","required":["resources","supports_enumeration"],"title":"ResourceCatalogOut"},"ResponseProposalListResponse":{"properties":{"proposals":{"items":{"$ref":"#/components/schemas/ResponseProposalView"},"type":"array","title":"Proposals"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["proposals"],"title":"ResponseProposalListResponse","description":"A keyset-paginated page of reply proposals (TOS-3280).\n\n``next_cursor`` is ``None`` exactly when no older rows remain; pass it back\nas ``cursor`` to fetch the next page. A non-``None`` value IS the\ntruncation signal - there is no separate ``truncated`` flag to check."},"ResponseProposalView":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"chat_id":{"type":"string","format":"uuid","title":"Chat Id"},"responder_identity_id":{"type":"string","format":"uuid","title":"Responder Identity Id"},"triggering_message_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Triggering Message Id"},"candidate_text":{"type":"string","title":"Candidate Text"},"status":{"type":"string","title":"Status"},"resolved_by_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Resolved By Identity Id"},"resolved_message_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Resolved Message Id"},"resolution_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution Note"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"resolved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Resolved At"}},"type":"object","required":["id","chat_id","responder_identity_id","triggering_message_id","candidate_text","status","resolved_by_identity_id","resolved_message_id","resolution_note","created_at","resolved_at"],"title":"ResponseProposalView"},"ResponseTimingObservation":{"properties":{"observation_id":{"type":"string","format":"uuid","title":"Observation Id"},"send_to_first_visible_us":{"anyOf":[{"type":"integer","maximum":86400000000.0,"minimum":0.0},{"type":"null"}],"title":"Send To First Visible Us"},"send_to_answer_complete_us":{"type":"integer","maximum":86400000000.0,"minimum":0.0,"title":"Send To Answer Complete Us"},"source":{"type":"string","const":"browser_monotonic","title":"Source","default":"browser_monotonic"},"resolution_us":{"type":"integer","const":1000,"title":"Resolution Us","default":1000},"displayed_estimates":{"items":{"$ref":"#/components/schemas/DisplayedEstimate"},"type":"array","maxItems":16,"title":"Displayed Estimates"}},"type":"object","required":["observation_id","send_to_answer_complete_us"],"title":"ResponseTimingObservation"},"RestToolTestRequest":{"properties":{"tool_name":{"type":"string","title":"Tool Name"},"arguments":{"additionalProperties":true,"type":"object","title":"Arguments"}},"type":"object","required":["tool_name"],"title":"RestToolTestRequest"},"RestToolTestResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"duration_ms":{"type":"integer","title":"Duration Ms"},"result_preview":{"title":"Result Preview"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["success","duration_ms"],"title":"RestToolTestResponse"},"ResultBlock":{"properties":{"kind":{"type":"string","enum":["artifact","create-document","generate-image","edit-document","unknown"],"title":"Kind"},"title":{"type":"string","maxLength":200,"minLength":1,"title":"Title"},"body":{"type":"string","title":"Body"}},"additionalProperties":false,"type":"object","required":["kind","title","body"],"title":"ResultBlock","description":"The only result-block shape exposed to the chat renderer."},"ResultBlockResponse":{"properties":{"kind":{"type":"string","enum":["artifact","create-document","generate-image","edit-document","unknown"],"title":"Kind"},"title":{"type":"string","title":"Title"},"body":{"type":"string","title":"Body"}},"type":"object","required":["kind","title","body"],"title":"ResultBlockResponse","description":"Validated, inert presentation result attached to an assistant message."},"RetirePeopleIn":{"properties":{"identity_ids":{"items":{"type":"string","format":"uuid"},"type":"array","maxItems":50,"minItems":1,"title":"Identity Ids"},"dry_run":{"type":"boolean","title":"Dry Run","default":true}},"additionalProperties":false,"type":"object","required":["identity_ids"],"title":"RetirePeopleIn"},"RetirePeopleOut":{"properties":{"dry_run":{"type":"boolean","title":"Dry Run"},"people":{"items":{"type":"string"},"type":"array","title":"People"},"agents":{"type":"integer","title":"Agents"},"agents_left_alone":{"items":{"type":"string"},"type":"array","title":"Agents Left Alone"},"homes":{"type":"integer","title":"Homes"},"homes_left_alone":{"items":{"type":"string"},"type":"array","title":"Homes Left Alone"},"chats":{"type":"integer","title":"Chats"},"documents":{"type":"integer","title":"Documents"},"documents_in_shared_libraries":{"type":"integer","title":"Documents In Shared Libraries"},"api_keys":{"type":"integer","title":"Api Keys"},"oauth_tokens":{"type":"integer","title":"Oauth Tokens"},"bypass_tokens":{"type":"integer","title":"Bypass Tokens"}},"type":"object","required":["dry_run","people","agents","agents_left_alone","homes","homes_left_alone","chats","documents","documents_in_shared_libraries","api_keys","oauth_tokens","bypass_tokens"],"title":"RetirePeopleOut"},"RetryContributionRequest":{"properties":{"confirm_possible_side_effects":{"type":"boolean","title":"Confirm Possible Side Effects","default":false}},"type":"object","title":"RetryContributionRequest"},"RetryContributionResponse":{"properties":{"status":{"type":"string","title":"Status"},"message_id":{"type":"string","format":"uuid","title":"Message Id"},"run_id":{"type":"string","format":"uuid","title":"Run Id"},"chat_id":{"type":"string","format":"uuid","title":"Chat Id"},"done":{"type":"boolean","title":"Done"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"poll_with":{"type":"string","const":"chat_messages_list","title":"Poll With","default":"chat_messages_list"},"status_poll_with":{"type":"string","const":"chat_message_status","title":"Status Poll With","default":"chat_message_status"},"poll_after_ms":{"type":"integer","title":"Poll After Ms","default":1500},"retry_guidance":{"type":"string","title":"Retry Guidance","default":"Poll chat_messages_list and the chat task status. Do not retry blindly; reuse the same idempotency_key."},"failed_message_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Failed Message Id"},"agent_identity_id":{"type":"string","format":"uuid","title":"Agent Identity Id"}},"type":"object","required":["status","message_id","run_id","chat_id","done","failed_message_id","agent_identity_id"],"title":"RetryContributionResponse"},"RetryEnvelopeContributionRequest":{"properties":{"confirm_possible_side_effects":{"type":"boolean","title":"Confirm Possible Side Effects","default":false},"turn_id":{"type":"string","format":"uuid","title":"Turn Id"}},"type":"object","required":["turn_id"],"title":"RetryEnvelopeContributionRequest"},"ReviewBody":{"properties":{"action":{"type":"string","enum":["approved","dismissed"],"title":"Action"}},"type":"object","required":["action"],"title":"ReviewBody"},"RollbackBody":{"properties":{"target_version":{"type":"integer","title":"Target Version"}},"type":"object","required":["target_version"],"title":"RollbackBody"},"RollbackRequest":{"properties":{"version_id":{"type":"string","format":"uuid","title":"Version Id"}},"type":"object","required":["version_id"],"title":"RollbackRequest"},"RoomTurnResponderStatus":{"properties":{"identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Identity Id"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kind"},"state":{"type":"string","title":"State"},"role_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role Label"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},"type":"object","required":["state"],"title":"RoomTurnResponderStatus"},"RoomTurnStatus":{"properties":{"activity_runs":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Activity Runs"},"activity_runs_truncated":{"type":"boolean","title":"Activity Runs Truncated","default":false},"status":{"type":"string","title":"Status"},"response_status_visible":{"type":"boolean","title":"Response Status Visible"},"floor_control_mode":{"type":"string","title":"Floor Control Mode"},"routing_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Routing Source"},"selected":{"items":{"$ref":"#/components/schemas/RoomTurnResponderStatus"},"type":"array","title":"Selected"},"invoked":{"items":{"$ref":"#/components/schemas/RoomTurnResponderStatus"},"type":"array","title":"Invoked"},"skipped":{"items":{"$ref":"#/components/schemas/RoomTurnResponderStatus"},"type":"array","title":"Skipped"},"availability":{"items":{"$ref":"#/components/schemas/RoomTurnResponderStatus"},"type":"array","title":"Availability"},"budget_before":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Budget Before"},"budget_after_selection":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Budget After Selection"},"max_responders":{"type":"integer","title":"Max Responders"},"max_chain_depth":{"type":"integer","title":"Max Chain Depth"},"top_k_claimants":{"type":"integer","title":"Top K Claimants"}},"type":"object","required":["status","response_status_visible","floor_control_mode","max_responders","max_chain_depth","top_k_claimants"],"title":"RoomTurnStatus"},"RotateWebhookTokenResponse":{"properties":{"trigger":{"$ref":"#/components/schemas/AgentTriggerResponse"},"delivery_token":{"type":"string","title":"Delivery Token"},"delivery_url":{"type":"string","title":"Delivery Url"}},"type":"object","required":["trigger","delivery_token","delivery_url"],"title":"RotateWebhookTokenResponse","description":"TOS-2081. Same shape as create, for the same reason: the new token is\nreadable exactly once, here, and the old one is dead as of this response."},"RoutingHintBatchOut":{"properties":{"id":{"type":"string","title":"Id"},"created_at":{"type":"string","title":"Created At"},"checked_count":{"type":"integer","title":"Checked Count"},"eval_passed":{"type":"boolean","title":"Eval Passed"},"eval_summary":{"additionalProperties":true,"type":"object","title":"Eval Summary"},"published_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Published At"}},"type":"object","required":["id","created_at","checked_count","eval_passed","eval_summary","published_at"],"title":"RoutingHintBatchOut"},"RoutingHintOut":{"properties":{"id":{"type":"string","title":"Id"},"keyword":{"type":"string","title":"Keyword"},"bundle_key":{"type":"string","title":"Bundle Key"},"weight":{"type":"integer","title":"Weight"},"source":{"type":"string","title":"Source"},"identity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Identity Id"},"state":{"type":"string","title":"State"},"batch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Batch Id"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"}},"type":"object","required":["id","keyword","bundle_key","weight","source","identity_id","state","batch_id","created_at","updated_at"],"title":"RoutingHintOut"},"RowKey":{"properties":{"registration_id":{"type":"string","format":"uuid","title":"Registration Id"},"connection_id":{"type":"string","format":"uuid","title":"Connection Id"},"tool_name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Tool Name"}},"additionalProperties":false,"type":"object","required":["registration_id","connection_id"],"title":"RowKey"},"RuleCompileBody":{"properties":{"text":{"type":"string","title":"Text"}},"type":"object","required":["text"],"title":"RuleCompileBody","description":"TOS-1287 Phase 3: one plain-English rule description to compile."},"RuleCompileResponse":{"properties":{"predicates":{"items":{"$ref":"#/components/schemas/RulePredicateResponse"},"type":"array","title":"Predicates"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"judged_question":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Judged Question"}},"type":"object","required":["predicates","description","judged_question"],"title":"RuleCompileResponse","description":"TOS-1287 Phase 3: a compiled-but-not-yet-targeted rule, for the Mind\ntab's rules editor to show back for explicit confirmation before staging\nit. Never persisted by this endpoint - the owner still picks a target\nmodel (the same two-tier picker any rule uses) and Save commits it\nthrough ``PUT .../ai-config/rules`` like every other rule edit."},"RulePredicateResponse":{"properties":{"predicate":{"type":"string","title":"Predicate"},"op":{"type":"string","title":"Op"},"value":{"title":"Value"}},"type":"object","required":["predicate","op","value"],"title":"RulePredicateResponse"},"RuleSummaryResponse":{"properties":{"id":{"type":"string","title":"Id"},"enabled":{"type":"boolean","title":"Enabled"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"predicates":{"items":{"$ref":"#/components/schemas/RulePredicateResponse"},"type":"array","title":"Predicates"},"then":{"$ref":"#/components/schemas/RuleThenResponse"},"operations":{"items":{"type":"string"},"type":"array","title":"Operations"},"judged_question":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Judged Question"}},"type":"object","required":["id","enabled","description","predicates","then","operations","judged_question"],"title":"RuleSummaryResponse","description":"TOS-1287 Phase 2: one chat routing rule, for the Mind tab's \"Model\nrules\" list. Predicates are display-only in Phase 2 (authoring is Phase\n3's plain-English pass); ``then`` is the one thing this phase lets the\nowner edit, via the same two-tier provider->model picker as any override."},"RuleThenResponse":{"properties":{"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"model_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Display Name"},"params":{"additionalProperties":true,"type":"object","title":"Params"}},"type":"object","required":["provider","model","model_display_name","params"],"title":"RuleThenResponse"},"RulesBody":{"properties":{"rules":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Rules"}},"type":"object","required":["rules"],"title":"RulesBody","description":"TOS-1287 Phase 2: the identity's whole rule list, in the SAME wire\nshape stored in ``rule_overrides``/``ai_config_template_version.rules``\n(``routing_policy.RoutingRule`` - id/enabled/description/when/operations/\nthen). Replaces wholesale on save, matching how the Mind tab's editor\nalready stages a full ordered list, not per-rule diffs."},"RunDetailView":{"properties":{"id":{"type":"string","title":"Id"},"target_identity_id":{"type":"string","title":"Target Identity Id"},"target_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Display Name"},"triggered_by_identity_id":{"type":"string","title":"Triggered By Identity Id"},"probe_ids":{"items":{"type":"string"},"type":"array","title":"Probe Ids"},"status":{"type":"string","title":"Status"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"agent_cost_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Agent Cost Usd"},"judge_cost_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Judge Cost Usd"},"total_cost_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Cost Usd"},"total_duration_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Duration S"},"scenarios_total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Scenarios Total"},"scenarios_passed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Scenarios Passed"},"findings_reproduced":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Findings Reproduced"},"findings_covered":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Findings Covered"},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started At"},"finished_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finished At"},"created_at":{"type":"string","title":"Created At"},"scorecard":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Scorecard"},"transcript":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Transcript"}},"type":"object","required":["id","target_identity_id","target_display_name","triggered_by_identity_id","probe_ids","status","error_message","agent_cost_usd","judge_cost_usd","total_cost_usd","total_duration_s","scenarios_total","scenarios_passed","findings_reproduced","findings_covered","started_at","finished_at","created_at","scorecard","transcript"],"title":"RunDetailView"},"RunNowResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"run_id":{"type":"string","title":"Run Id"},"message":{"type":"string","title":"Message"}},"type":"object","required":["job_id","run_id","message"],"title":"RunNowResponse"},"RunUnitRequest":{"properties":{"kind":{"type":"string","enum":["job","sweep"],"title":"Kind"},"unit_id":{"type":"string","title":"Unit Id"},"triggered_by":{"type":"string","title":"Triggered By","default":"scheduler"},"run_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Run Id"}},"type":"object","required":["kind","unit_id"],"title":"RunUnitRequest"},"RunView":{"properties":{"id":{"type":"string","title":"Id"},"target_identity_id":{"type":"string","title":"Target Identity Id"},"target_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Display Name"},"triggered_by_identity_id":{"type":"string","title":"Triggered By Identity Id"},"probe_ids":{"items":{"type":"string"},"type":"array","title":"Probe Ids"},"status":{"type":"string","title":"Status"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"agent_cost_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Agent Cost Usd"},"judge_cost_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Judge Cost Usd"},"total_cost_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Cost Usd"},"total_duration_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Duration S"},"scenarios_total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Scenarios Total"},"scenarios_passed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Scenarios Passed"},"findings_reproduced":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Findings Reproduced"},"findings_covered":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Findings Covered"},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started At"},"finished_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finished At"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","target_identity_id","target_display_name","triggered_by_identity_id","probe_ids","status","error_message","agent_cost_usd","judge_cost_usd","total_cost_usd","total_duration_s","scenarios_total","scenarios_passed","findings_reproduced","findings_covered","started_at","finished_at","created_at"],"title":"RunView"},"RunnerTarget":{"properties":{"id":{"type":"string","title":"Id"},"slug":{"type":"string","title":"Slug"},"label":{"type":"string","title":"Label"},"base_url":{"type":"string","title":"Base Url"},"auth_kind":{"type":"string","title":"Auth Kind"},"bypass_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bypass Token"}},"type":"object","required":["id","slug","label","base_url","auth_kind","bypass_token"],"title":"RunnerTarget"},"RunnerTargetsResponse":{"properties":{"targets":{"items":{"$ref":"#/components/schemas/RunnerTarget"},"type":"array","title":"Targets"}},"type":"object","required":["targets"],"title":"RunnerTargetsResponse"},"RuntimeEnvironmentListResponse":{"properties":{"environments":{"items":{"$ref":"#/components/schemas/RuntimeEnvironmentResponse"},"type":"array","title":"Environments"}},"type":"object","required":["environments"],"title":"RuntimeEnvironmentListResponse"},"RuntimeEnvironmentResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"owner_identity_id":{"type":"string","format":"uuid","title":"Owner Identity Id"},"library_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Library Id"},"runtime_kind":{"type":"string","title":"Runtime Kind"},"name":{"type":"string","title":"Name"},"environment_ref":{"type":"string","title":"Environment Ref"},"registration_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Registration Id"},"status":{"type":"string","title":"Status"},"config":{"additionalProperties":true,"type":"object","title":"Config"},"policy_defaults":{"additionalProperties":true,"type":"object","title":"Policy Defaults"},"setup_recipe":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Setup Recipe"},"setup_recipe_version":{"type":"integer","title":"Setup Recipe Version","default":0},"setup_recipe_fingerprint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Setup Recipe Fingerprint"},"repository":{"anyOf":[{"$ref":"#/components/schemas/DevelopmentRepositoryResponse"},{"type":"null"}]},"setup_status":{"type":"string","title":"Setup Status"},"health_status":{"type":"string","title":"Health Status"},"setup_issues":{"items":{"type":"string"},"type":"array","title":"Setup Issues"},"next_action":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Action"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","owner_identity_id","runtime_kind","name","environment_ref","status","config","policy_defaults","setup_status","health_status","setup_issues","created_at","updated_at"],"title":"RuntimeEnvironmentResponse"},"SaveAsRequest":{"properties":{"agent_id":{"type":"string","format":"uuid","title":"Agent Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["agent_id","name"],"title":"SaveAsRequest"},"SaveAsResponse":{"properties":{"mindset":{"$ref":"#/components/schemas/MindsetSummaryResponse"},"agent_id":{"type":"string","format":"uuid","title":"Agent Id"}},"type":"object","required":["mindset","agent_id"],"title":"SaveAsResponse"},"SaveDocumentDraftRequest":{"properties":{"draft_content":{"type":"string","title":"Draft Content"},"based_on_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Based On Hash"}},"type":"object","required":["draft_content"],"title":"SaveDocumentDraftRequest"},"SaveDocumentDraftResponse":{"properties":{"draft_saved_at":{"type":"string","format":"date-time","title":"Draft Saved At"}},"type":"object","required":["draft_saved_at"],"title":"SaveDocumentDraftResponse"},"ScatterChartArtifact":{"properties":{"chart_type":{"type":"string","const":"scatter","title":"Chart Type"},"payload":{"$ref":"#/components/schemas/ScatterChartPayloadResponse"}},"type":"object","required":["chart_type","payload"],"title":"ScatterChartArtifact"},"ScatterChartPayloadResponse":{"properties":{"title":{"type":"string","title":"Title"},"x_label":{"type":"string","title":"X Label"},"y_label":{"type":"string","title":"Y Label"},"points":{"items":{"$ref":"#/components/schemas/_ScatterPoint"},"type":"array","title":"Points"},"y_scale":{"type":"string","title":"Y Scale","default":"linear"},"value_format":{"anyOf":[{"$ref":"#/components/schemas/_ValueFormat"},{"type":"null"}]},"x_format":{"anyOf":[{"$ref":"#/components/schemas/_ValueFormat"},{"type":"null"}]}},"type":"object","required":["title","x_label","y_label","points"],"title":"ScatterChartPayloadResponse"},"SchemaChangeListResponse":{"properties":{"requests":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Requests"},"count":{"type":"integer","title":"Count","default":0}},"type":"object","title":"SchemaChangeListResponse"},"SchemaChangeResolutionRequest":{"properties":{"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","title":"SchemaChangeResolutionRequest"},"ScoreOverviewResponse":{"properties":{"platform":{"additionalProperties":{"$ref":"#/components/schemas/ScoreWindowView"},"type":"object","title":"Platform"},"agents":{"items":{"$ref":"#/components/schemas/AgentScoreView"},"type":"array","title":"Agents"}},"additionalProperties":false,"type":"object","required":["platform","agents"],"title":"ScoreOverviewResponse"},"ScoreWindowView":{"properties":{"as_of_date":{"type":"string","format":"date","title":"As Of Date"},"turns":{"type":"integer","title":"Turns"},"clean_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Clean Rate"},"degraded_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Degraded Rate"},"failed_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Failed Rate"},"completed_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Completed Rate"},"cost_usd":{"type":"number","title":"Cost Usd"},"p50_latency_ms":{"type":"integer","title":"P50 Latency Ms"},"insufficient_data":{"type":"boolean","title":"Insufficient Data"}},"additionalProperties":false,"type":"object","required":["as_of_date","turns","clean_rate","degraded_rate","failed_rate","completed_rate","cost_usd","p50_latency_ms","insufficient_data"],"title":"ScoreWindowView"},"SearchPage":{"properties":{"results":{"items":{"$ref":"#/components/schemas/SearchRow"},"type":"array","title":"Results"},"has_more":{"type":"boolean","title":"Has More"}},"type":"object","required":["results","has_more"],"title":"SearchPage"},"SearchResultResponse":{"properties":{"content":{"type":"string","title":"Content"},"score":{"type":"number","title":"Score"},"similarity":{"type":"number","title":"Similarity"}},"type":"object","required":["content","score","similarity"],"title":"SearchResultResponse"},"SearchRow":{"properties":{"row_type":{"type":"string","title":"Row Type"},"id":{"type":"string","format":"uuid","title":"Id"},"summary":{"type":"string","title":"Summary"},"kind_or_source":{"type":"string","title":"Kind Or Source"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"mind_count":{"type":"integer","title":"Mind Count"}},"type":"object","required":["row_type","id","summary","kind_or_source","created_at","mind_count"],"title":"SearchRow"},"SectionStatuses":{"properties":{"needs_you":{"type":"string","enum":["ok","empty","error"],"title":"Needs You","default":"ok"},"done_for_you":{"type":"string","enum":["ok","empty","error"],"title":"Done For You","default":"ok"},"standing":{"type":"string","enum":["ok","empty","error"],"title":"Standing","default":"ok"},"learned":{"type":"string","enum":["ok","empty","error"],"title":"Learned","default":"ok"},"connections":{"type":"string","enum":["ok","empty","error"],"title":"Connections","default":"ok"}},"additionalProperties":false,"type":"object","title":"SectionStatuses"},"SegmentListResponse":{"properties":{"segments":{"items":{"$ref":"#/components/schemas/SegmentResponse"},"type":"array","title":"Segments"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["segments"],"title":"SegmentListResponse","description":"A keyset-paginated page of one document's chunks (TOS-3280).\n\nOrdered by ``segment_index`` - the document's own natural reading order,\nnot upload/creation time - so a page boundary lands where the chunk\nviewer would expect it: \"the next chunk after the one you were looking\nat\", not \"the next chunk indexed after it\". ``next_cursor`` is ``None``\nexactly when no later chunks remain."},"SegmentResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"segment_index":{"type":"integer","title":"Segment Index"},"content":{"type":"string","title":"Content"},"content_tokens":{"type":"integer","title":"Content Tokens"},"effective_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Effective Date"}},"type":"object","required":["id","segment_index","content","content_tokens","effective_date"],"title":"SegmentResponse"},"SelfImprovementPolicy":{"type":"string","enum":["off","review","minor"],"title":"SelfImprovementPolicy"},"SendChatTaskFollowUpRequest":{"properties":{"message":{"type":"string","maxLength":100000,"minLength":1,"title":"Message"}},"type":"object","required":["message"],"title":"SendChatTaskFollowUpRequest"},"SendMessageRequest":{"properties":{"first_message_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"First Message Id"},"embed_page_context":{"anyOf":[{"$ref":"#/components/schemas/EmbedPageContext"},{"type":"null"}]},"app_page_context":{"anyOf":[{"$ref":"#/components/schemas/AppPageContext"},{"type":"null"}]},"content":{"type":"string","title":"Content"},"ui_action":{"anyOf":[{"$ref":"#/components/schemas/UiActionPress"},{"type":"null"}]},"attachments":{"items":{"$ref":"#/components/schemas/AttachmentInput"},"type":"array","title":"Attachments"},"idempotency_key":{"anyOf":[{"type":"string","maxLength":160},{"type":"null"}],"title":"Idempotency Key"},"tool_filter":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tool Filter"},"suggestion_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Suggestion Id"},"suggestion_outcome":{"anyOf":[{"type":"string","enum":["accepted_as_is","edited"]},{"type":"null"}],"title":"Suggestion Outcome"},"submitted_by_mode":{"anyOf":[{"type":"string","const":"agent"},{"type":"null"}],"title":"Submitted By Mode"},"source_chat_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Source Chat Id"},"source_message_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Source Message Id"},"reply_to_message_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Reply To Message Id"},"client_capabilities":{"items":{"type":"string"},"type":"array","uniqueItems":true,"title":"Client Capabilities"},"capture_capabilities":{"items":{"type":"string","enum":["page","display","camera"]},"type":"array","maxItems":3,"title":"Capture Capabilities"}},"type":"object","required":["content"],"title":"SendMessageRequest"},"SendMessageResponse":{"properties":{"content":{"type":"string","title":"Content"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"input_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Input Tokens"},"output_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Tokens"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms"},"message_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Message Id"}},"type":"object","required":["content","model","provider","input_tokens","output_tokens","duration_ms"],"title":"SendMessageResponse"},"SendNowResponse":{"properties":{"to":{"type":"string","title":"To"},"agent_changes":{"type":"integer","title":"Agent Changes"},"platform_findings":{"type":"integer","title":"Platform Findings"},"headline":{"type":"string","title":"Headline"}},"type":"object","required":["to","agent_changes","platform_findings","headline"],"title":"SendNowResponse"},"SendRequestBody":{"properties":{"to_identity_id":{"type":"string","format":"uuid","title":"To Identity Id"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"type":"object","required":["to_identity_id"],"title":"SendRequestBody"},"SenderSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"display_name":{"type":"string","title":"Display Name"},"kind":{"type":"string","title":"Kind","default":"person"}},"type":"object","required":["id","display_name"],"title":"SenderSummary","description":"Minimal identity info for attribution on a message or participant."},"SentryAlertRuleOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"query":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query"},"aggregate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aggregate"},"time_window":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Time Window"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"date_created":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Created"}},"type":"object","required":["id","name","query","aggregate","time_window","status","date_created"],"title":"SentryAlertRuleOut"},"SentryAlertsResponse":{"properties":{"alerts":{"items":{"$ref":"#/components/schemas/SentryAlertRuleOut"},"type":"array","title":"Alerts"},"incidents":{"items":{"$ref":"#/components/schemas/SentryIncidentOut"},"type":"array","title":"Incidents"},"configured":{"type":"boolean","title":"Configured","default":true}},"type":"object","required":["alerts","incidents"],"title":"SentryAlertsResponse"},"SentryIncidentOut":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"status":{"type":"string","title":"Status"},"date_started":{"type":"string","title":"Date Started"},"date_closed":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Closed"},"alert_rule":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alert Rule"}},"type":"object","required":["id","title","status","date_started","date_closed","alert_rule"],"title":"SentryIncidentOut"},"SentryIssueOut":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"culprit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Culprit"},"permalink":{"type":"string","title":"Permalink"},"status":{"type":"string","title":"Status"},"level":{"type":"string","title":"Level"},"count":{"anyOf":[{"type":"string"},{"type":"integer"}],"title":"Count"},"user_count":{"type":"integer","title":"User Count"},"first_seen":{"type":"string","title":"First Seen"},"last_seen":{"type":"string","title":"Last Seen"},"project":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project"},"tags":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Tags"}},"type":"object","required":["id","title","culprit","permalink","status","level","count","user_count","first_seen","last_seen","project","tags"],"title":"SentryIssueOut"},"SentryIssueUpdateRequest":{"properties":{"status":{"type":"string","enum":["resolved","resolvedInNextRelease","unresolved","ignored"],"title":"Status"},"in_release":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"In Release"}},"type":"object","required":["status"],"title":"SentryIssueUpdateRequest"},"SentryIssueUpdateResponse":{"properties":{"ok":{"type":"boolean","title":"Ok"},"status":{"type":"string","title":"Status"},"status_details":{"additionalProperties":true,"type":"object","title":"Status Details"},"configured":{"type":"boolean","title":"Configured","default":true}},"type":"object","required":["ok","status","status_details"],"title":"SentryIssueUpdateResponse"},"SentryIssuesPageOut":{"properties":{"issues":{"items":{"$ref":"#/components/schemas/SentryIssueOut"},"type":"array","title":"Issues"},"prev_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prev Cursor"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"configured":{"type":"boolean","title":"Configured","default":true}},"type":"object","required":["issues","prev_cursor","next_cursor"],"title":"SentryIssuesPageOut"},"SessionResponse":{"properties":{"visitor_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visitor Token"},"chat_id":{"type":"string","title":"Chat Id"},"visitor_identity_id":{"type":"string","title":"Visitor Identity Id"},"entry_profile":{"$ref":"#/components/schemas/EmbedEntryProfile"},"page_awareness":{"$ref":"#/components/schemas/EmbedPageAwareness"},"visitor_screen_share":{"type":"boolean","title":"Visitor Screen Share"}},"type":"object","required":["visitor_token","chat_id","visitor_identity_id","entry_profile","page_awareness","visitor_screen_share"],"title":"SessionResponse","description":"A visitor's token, identity and the chat they'll talk in - nothing else.\n\nDeliberately the entire payload. This endpoint mints identity, not\nconversation: no message is sent, no ceiling is spent, no model is\ncalled."},"SetAgentHomeBody":{"properties":{"home_library_id":{"type":"string","format":"uuid","title":"Home Library Id"}},"type":"object","required":["home_library_id"],"title":"SetAgentHomeBody"},"SetAgentProviderKeyRequest":{"properties":{"api_key":{"type":"string","minLength":1,"title":"Api Key"},"provider_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Scope"}},"type":"object","required":["api_key"],"title":"SetAgentProviderKeyRequest"},"SetAgentProviderKeyResponse":{"properties":{"provider":{"type":"string","title":"Provider"},"valid":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Valid"},"validation_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Validation Error"},"provider_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Scope"},"scope_outcome":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope Outcome"},"scope_candidates":{"items":{"type":"string"},"type":"array","title":"Scope Candidates"},"scope_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope Detail"},"batch_eligible":{"type":"boolean","title":"Batch Eligible","default":true}},"type":"object","required":["provider","valid"],"title":"SetAgentProviderKeyResponse"},"SetApprovalRequest":{"properties":{"consuming_identity_id":{"type":"string","format":"uuid","title":"Consuming Identity Id"},"artifact_type":{"type":"string","title":"Artifact Type"},"artifact_id":{"type":"string","format":"uuid","title":"Artifact Id"},"state":{"type":"string","title":"State"},"capability_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capability Role"},"clear_capability_role":{"type":"boolean","title":"Clear Capability Role","default":false}},"type":"object","required":["consuming_identity_id","artifact_type","artifact_id","state"],"title":"SetApprovalRequest","description":"Request body for PUT /api/folders/{library_id}/approvals."},"SetApprovalResponse":{"properties":{"consuming_identity_id":{"type":"string","format":"uuid","title":"Consuming Identity Id"},"artifact_type":{"type":"string","title":"Artifact Type"},"artifact_id":{"type":"string","format":"uuid","title":"Artifact Id"},"effective_state":{"type":"string","title":"Effective State"},"capability_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capability Role"}},"type":"object","required":["consuming_identity_id","artifact_type","artifact_id","effective_state"],"title":"SetApprovalResponse","description":"Response for PUT /api/folders/{library_id}/approvals."},"SetCapabilityApprovalRequest":{"properties":{"artifact_type":{"type":"string","title":"Artifact Type"},"artifact_id":{"type":"string","format":"uuid","title":"Artifact Id"},"state":{"type":"string","title":"State"},"capability_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capability Role"},"clear_capability_role":{"type":"boolean","title":"Clear Capability Role","default":false}},"type":"object","required":["artifact_type","artifact_id","state"],"title":"SetCapabilityApprovalRequest"},"SetCapabilityApprovalResponse":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"artifact_type":{"type":"string","title":"Artifact Type"},"artifact_id":{"type":"string","format":"uuid","title":"Artifact Id"},"state":{"type":"string","title":"State"},"capability_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capability Role"},"effective_capability_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Effective Capability Role"}},"type":"object","required":["identity_id","artifact_type","artifact_id","state"],"title":"SetCapabilityApprovalResponse"},"SetDomainDefaultRequest":{"properties":{"template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Id"}},"type":"object","required":["template_id"],"title":"SetDomainDefaultRequest"},"SetEnabledRequest":{"properties":{"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["enabled"],"title":"SetEnabledRequest"},"SetFolderBoundaryRequest":{"properties":{"statement":{"type":"string","maxLength":500,"minLength":1,"title":"Statement"},"binding":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Binding"},"kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kind"}},"type":"object","required":["statement"],"title":"SetFolderBoundaryRequest"},"SetGlobalIn":{"properties":{"is_global":{"type":"boolean","title":"Is Global"}},"type":"object","required":["is_global"],"title":"SetGlobalIn"},"SetGrantTrustModeRequest":{"properties":{"trust_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trust Mode"},"capability_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capability Role"},"clear_capability_role":{"type":"boolean","title":"Clear Capability Role","default":false}},"type":"object","title":"SetGrantTrustModeRequest"},"SetGrantTrustModeResponse":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"library_id":{"type":"string","format":"uuid","title":"Library Id"},"trust_mode":{"type":"string","title":"Trust Mode"},"capability_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capability Role"}},"type":"object","required":["identity_id","library_id","trust_mode"],"title":"SetGrantTrustModeResponse"},"SetManagedByRequest":{"properties":{"managed_by_library_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Managed By Library Id"}},"type":"object","required":["managed_by_library_id"],"title":"SetManagedByRequest","description":"Name the folder that operates this identity, or ``None`` to end it."},"SetMemberLearningRequest":{"properties":{"learns_from_library":{"type":"boolean","title":"Learns From Library"}},"type":"object","required":["learns_from_library"],"title":"SetMemberLearningRequest","description":"TOS-6954: flip a member's \"learns from this folder\" switch."},"SetMemberRoleIn":{"properties":{"role":{"type":"string","title":"Role"}},"type":"object","required":["role"],"title":"SetMemberRoleIn"},"SetNamespaceAccessIn":{"properties":{"subject_identity_id":{"type":"string","title":"Subject Identity Id"},"namespace_id":{"type":"string","title":"Namespace Id"},"level":{"type":"string","title":"Level"}},"type":"object","required":["subject_identity_id","namespace_id","level"],"title":"SetNamespaceAccessIn"},"SetNotificationOverrideBody":{"properties":{"style":{"anyOf":[{"type":"string","enum":["banner","alert","silent","muted"]},{"type":"null"}],"title":"Style"}},"type":"object","title":"SetNotificationOverrideBody"},"SetOutboundEmailPolicyRequest":{"properties":{"outbound_email_policy":{"type":"string","enum":["allowed","blocked"],"title":"Outbound Email Policy"}},"type":"object","required":["outbound_email_policy"],"title":"SetOutboundEmailPolicyRequest","description":"Set whether an identity may trigger outbound email delivery."},"SetPlatformKeyOwnerRequest":{"properties":{"owner_tenant_id":{"type":"string","format":"uuid","title":"Owner Tenant Id"}},"type":"object","required":["owner_tenant_id"],"title":"SetPlatformKeyOwnerRequest"},"SetPlatformPrivilegesRequest":{"properties":{"is_platform_admin":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Platform Admin"},"is_platform_admin_readonly":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Platform Admin Readonly"}},"type":"object","title":"SetPlatformPrivilegesRequest","description":"Partial update: omit a tier to leave it untouched."},"SetPlatformProviderKeyRequest":{"properties":{"api_key":{"type":"string","minLength":1,"title":"Api Key"},"probe":{"type":"boolean","title":"Probe","default":true},"owner_tenant_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner Tenant Id"}},"type":"object","required":["api_key"],"title":"SetPlatformProviderKeyRequest"},"SetProviderKeyRequest":{"properties":{"api_key":{"type":"string","title":"Api Key"},"provider_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Scope"}},"type":"object","required":["api_key"],"title":"SetProviderKeyRequest"},"SetProviderKeyResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true},"provider":{"type":"string","title":"Provider"},"valid":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Valid"},"validation_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Validation Error"},"provider_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Scope"},"scope_outcome":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope Outcome"},"scope_candidates":{"items":{"type":"string"},"type":"array","title":"Scope Candidates"},"scope_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope Detail"},"batch_eligible":{"type":"boolean","title":"Batch Eligible","default":true},"platform_key_hint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platform Key Hint"}},"type":"object","required":["provider"],"title":"SetProviderKeyResponse"},"SetSkillEnabledBody":{"properties":{"install_kind":{"type":"string","const":"identity","title":"Install Kind","default":"identity"},"install_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Install Id"},"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["enabled"],"title":"SetSkillEnabledBody"},"SetupJob":{"properties":{"key":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Key"},"text":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Text"},"run_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Run Id"},"result_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Result At"}},"type":"object","title":"SetupJob","description":"TOS-5094: the first job the person handed their Subconscious in setup.\n\n``key`` is a catalog key (``services/home_jobs.py``) or ``custom``; ``text``\nis the person's own words when they typed them; ``run_id`` is the ad-hoc run\non their self chat; ``result_at`` is stamped once that run's\n``home_job_result`` has been read back. Additive: a record without it reads\nas ``None``."},"SetupOut":{"properties":{"kind":{"type":"string","title":"Kind"},"current_step":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Step"},"steps":{"items":{"$ref":"#/components/schemas/SetupStepOut"},"type":"array","title":"Steps"},"instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instructions"},"server_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Server Url"},"behavior_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Behavior Prompt"},"behavior_prompt_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Behavior Prompt Note"},"prerequisite":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prerequisite"},"docs_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Docs Url"}},"additionalProperties":false,"type":"object","required":["kind"],"title":"SetupOut","description":"What the viewer must do to configure this installation (from ``SetupDescriptor``).\n\nCarries the concrete setup CONTENT the retired hard-coded connect UI held as\nfrontend constants, so no client hard-codes an app list again: the thinqOS\nMCP ``server_url``, the primary-Mind ``behavior_prompt`` (+ its note), the\nclient ``prerequisite``, the typed ``steps``, and a ``docs_url``. Every field\nis publishable; none ever carries credential material."},"SetupPatch":{"properties":{"steps":{"anyOf":[{"additionalProperties":{"type":"string","enum":["done","skipped"]},"type":"object"},{"type":"null"}],"title":"Steps"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"role_source":{"anyOf":[{"type":"string","enum":["inferred","confirmed"]},{"type":"null"}],"title":"Role Source"},"picks":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":64},{"type":"null"}],"title":"Picks"},"mind_path":{"anyOf":[{"type":"string","enum":["judgment","full","later"]},{"type":"null"}],"title":"Mind Path"},"completed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Completed"},"reset":{"type":"boolean","title":"Reset","default":false},"job":{"anyOf":[{"$ref":"#/components/schemas/SetupJob"},{"type":"null"}]},"business":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Business"},"team_size":{"anyOf":[{"type":"string","enum":["1","2-5","6-15","16+"]},{"type":"null"}],"title":"Team Size"},"not_for_me":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":32},{"type":"null"}],"title":"Not For Me"},"mind_interview":{"anyOf":[{"type":"string","enum":["requested","done","not_for_me"]},{"type":"null"}],"title":"Mind Interview"},"handoff_seen":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Handoff Seen"}},"additionalProperties":false,"type":"object","title":"SetupPatch","description":"A merge, not a replacement. Every field is optional on purpose."},"SetupRecord":{"properties":{"version":{"type":"integer","title":"Version","default":1},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"steps":{"additionalProperties":{"type":"string","enum":["done","skipped"]},"type":"object","title":"Steps"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"role_source":{"anyOf":[{"type":"string","enum":["inferred","confirmed"]},{"type":"null"}],"title":"Role Source"},"picks":{"items":{"type":"string"},"type":"array","title":"Picks"},"mind_path":{"anyOf":[{"type":"string","enum":["judgment","full","later"]},{"type":"null"}],"title":"Mind Path"},"job":{"anyOf":[{"$ref":"#/components/schemas/SetupJob"},{"type":"null"}]},"business":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Business"},"team_size":{"anyOf":[{"type":"string","enum":["1","2-5","6-15","16+"]},{"type":"null"}],"title":"Team Size"},"not_for_me":{"items":{"type":"string"},"type":"array","maxItems":32,"title":"Not For Me"},"mind_interview":{"anyOf":[{"type":"string","enum":["requested","done","not_for_me"]},{"type":"null"}],"title":"Mind Interview"},"home_last_seen_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Home Last Seen At"},"handoff_seen_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Handoff Seen At"}},"type":"object","title":"SetupRecord","description":"The persisted setup record, normalised. Unknown keys are dropped."},"SetupStartRequest":{"properties":{"current_step":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Step"}},"additionalProperties":false,"type":"object","title":"SetupStartRequest","description":"Start or resume the viewer's setup (``POST /installations/{id}/setup``)."},"SetupStateOut":{"properties":{"installation_id":{"type":"string","format":"uuid","title":"Installation Id"},"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"state":{"type":"string","title":"State"},"current_step":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Step"},"configured_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Configured At"}},"additionalProperties":false,"type":"object","required":["installation_id","identity_id","state"],"title":"SetupStateOut","description":"The viewer's setup for one installation, derived from their live connection.\n\nViewer-scoped (decision D14): never carries another member's setup. Distinct\nfrom :class:`SetupOut`, which is the handler's setup *descriptor* (what to\ndo). Nothing stores it (TOS-5190 slice 3)."},"SetupStatus":{"properties":{"record":{"anyOf":[{"$ref":"#/components/schemas/SetupRecord"},{"type":"null"}]},"state":{"type":"string","enum":["never","in_progress","completed"],"title":"State"},"steps_done":{"type":"integer","title":"Steps Done"},"steps_total":{"type":"integer","title":"Steps Total","default":4},"badge_count":{"type":"integer","title":"Badge Count","default":0},"first_run_stage":{"type":"integer","title":"First Run Stage","default":3}},"type":"object","required":["record","state","steps_done"],"title":"SetupStatus"},"SetupStepOut":{"properties":{"id":{"type":"string","title":"Id"},"label":{"type":"string","title":"Label"},"instructions":{"items":{"type":"string"},"type":"array","title":"Instructions"},"copy_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Copy Value"},"copy_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Copy Label"},"action":{"anyOf":[{"$ref":"#/components/schemas/CatalogActionId"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["id","label"],"title":"SetupStepOut","description":"One ordered setup step (from ``SetupStep``).\n\n``copy_value`` is publishable setup content (a server URL, an install\ncommand, a connect link) - never a credential. ``action`` names the\nserver-allowlisted action id this step runs, when it has one."},"ShadowedSkillCopyOut":{"properties":{"skill_id":{"type":"string","format":"uuid","title":"Skill Id"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"builtin_skill_id":{"type":"string","format":"uuid","title":"Builtin Skill Id"}},"type":"object","required":["skill_id","slug","name","builtin_skill_id"],"title":"ShadowedSkillCopyOut","description":"An identity's own copy that yields its slug to a newer built-in (TOS-6903).\n\nThe copy is kept and reachable; the built-in is what runs. ``POST\n/api/skills/{skill_id}/keep-copy`` marks it as an intentional fork so it\nruns instead again."},"ShareAgentBody":{"properties":{"person_identity_id":{"type":"string","format":"uuid","title":"Person Identity Id"},"role":{"type":"string","const":"admin","title":"Role","default":"admin"},"folder":{"anyOf":[{"$ref":"#/components/schemas/ShareFolderChoice"},{"type":"null"}]}},"type":"object","required":["person_identity_id"],"title":"ShareAgentBody"},"ShareFolderChoice":{"properties":{"existing_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Existing Id"},"create_name":{"anyOf":[{"type":"string","maxLength":80,"minLength":1},{"type":"null"}],"title":"Create Name"}},"type":"object","title":"ShareFolderChoice","description":"Where a shared agent should live: exactly one of an existing folder or a new one."},"ShortcutIn":{"properties":{"kind":{"type":"string","enum":["document","agent","skill","connection","environment","database"],"title":"Kind"},"item_id":{"type":"string","format":"uuid","title":"Item Id"}},"type":"object","required":["kind","item_id"],"title":"ShortcutIn"},"ShortcutOut":{"properties":{"folder_id":{"type":"string","format":"uuid","title":"Folder Id"},"kind":{"type":"string","title":"Kind"},"item_id":{"type":"string","format":"uuid","title":"Item Id"},"placed_by_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Placed By Identity Id"},"placed_at":{"type":"string","format":"date-time","title":"Placed At"},"created":{"type":"boolean","title":"Created"}},"type":"object","required":["folder_id","kind","item_id","placed_by_identity_id","placed_at","created"],"title":"ShortcutOut"},"ShowRequestResponse":{"properties":{"kind":{"type":"string","enum":["screen","object"],"title":"Kind"},"capabilities":{"items":{"type":"string","enum":["page","display","camera"]},"type":"array","title":"Capabilities"}},"type":"object","required":["kind","capabilities"],"title":"ShowRequestResponse"},"SkillBulkErrorItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"reason":{"type":"string","title":"Reason"}},"type":"object","required":["id","reason"],"title":"SkillBulkErrorItem"},"SkillCapabilityReviewOut":{"properties":{"source":{"type":"string","title":"Source"},"key":{"type":"string","title":"Key"},"status":{"type":"string","enum":["supported","operator_gated","metadata_only","blocked"],"title":"Status"},"message":{"type":"string","title":"Message"},"requested":{"items":{"type":"string"},"type":"array","title":"Requested"},"tool_patterns":{"items":{"type":"string"},"type":"array","title":"Tool Patterns"}},"type":"object","required":["source","key","status","message"],"title":"SkillCapabilityReviewOut"},"SkillCatalogFacetOut":{"properties":{"source_id":{"type":"string","format":"uuid","title":"Source Id"},"source_slug":{"type":"string","title":"Source Slug"},"source_name":{"type":"string","title":"Source Name"},"count":{"type":"integer","title":"Count"},"source_icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Icon Url"}},"type":"object","required":["source_id","source_slug","source_name","count"],"title":"SkillCatalogFacetOut","description":"A source facet with the count matching the current query (0 allowed)."},"SkillCatalogItemOut":{"properties":{"catalog_entry_id":{"type":"string","format":"uuid","title":"Catalog Entry Id"},"source_id":{"type":"string","format":"uuid","title":"Source Id"},"source_slug":{"type":"string","title":"Source Slug"},"source_name":{"type":"string","title":"Source Name"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"when_to_use":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"When To Use"},"argument_hint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Argument Hint"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version"},"homepage_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Homepage Url"},"install_count":{"type":"integer","title":"Install Count"},"rating_avg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rating Avg"},"rating_count":{"type":"integer","title":"Rating Count","default":0},"capability_review":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Capability Review"},"installed":{"type":"boolean","title":"Installed","default":false},"installed_skill_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Installed Skill Id"},"source_icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Icon Url"}},"type":"object","required":["catalog_entry_id","source_id","source_slug","source_name","slug","name","description","install_count"],"title":"SkillCatalogItemOut","description":"One catalog skill served to the Discover UI."},"SkillCatalogRefreshOut":{"properties":{"sources":{"type":"integer","title":"Sources"},"ok":{"type":"integer","title":"Ok"},"unchanged":{"type":"integer","title":"Unchanged"},"errors":{"type":"integer","title":"Errors"},"upserted":{"type":"integer","title":"Upserted"},"removed":{"type":"integer","title":"Removed"}},"type":"object","required":["sources","ok","unchanged","errors","upserted","removed"],"title":"SkillCatalogRefreshOut","description":"Aggregate outcome of a sync sweep."},"SkillCatalogSearchOut":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SkillCatalogItemOut"},"type":"array","title":"Items"},"facets":{"items":{"$ref":"#/components/schemas/SkillCatalogFacetOut"},"type":"array","title":"Facets"},"total":{"type":"integer","title":"Total"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["total"],"title":"SkillCatalogSearchOut"},"SkillCommandResponse":{"properties":{"slug":{"type":"string","title":"Slug"},"slash_command":{"type":"string","title":"Slash Command"},"title":{"type":"string","title":"Title"},"summary":{"type":"string","title":"Summary"},"argument_hint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Argument Hint"}},"type":"object","required":["slug","slash_command","title","summary"],"title":"SkillCommandResponse","description":"One skill the slash menu lists (TOS-7418); selecting it inserts ``/<slug> ``."},"SkillExportTarget":{"type":"string","enum":["thinqos","anthropic","openai"]},"SkillExtensionsOut":{"properties":{"session_latch":{"type":"boolean","title":"Session Latch","default":false},"builtin_holders":{"items":{"type":"string"},"type":"array","title":"Builtin Holders","default":[]},"menu_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Menu Summary"},"interaction_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Interaction Source"},"capabilities":{"items":{"type":"string"},"type":"array","title":"Capabilities","default":[]},"side_effects":{"items":{"type":"string"},"type":"array","title":"Side Effects","default":[]},"token_budget":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Token Budget"}},"type":"object","title":"SkillExtensionsOut"},"SkillFrontmatterOut":{"properties":{"license":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"License"},"compatibility":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compatibility"},"metadata":{"additionalProperties":{"type":"string"},"type":"object","title":"Metadata"},"extra_frontmatter":{"additionalProperties":true,"type":"object","title":"Extra Frontmatter"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"type":"string","title":"Description"},"when_to_use":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"When To Use"},"when_not_to_use":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"When Not To Use"},"argument_hint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Argument Hint"},"arguments":{"items":{"type":"string"},"type":"array","title":"Arguments","default":[]},"disable_model_invocation":{"type":"boolean","title":"Disable Model Invocation","default":false},"user_invocable":{"type":"boolean","title":"User Invocable","default":true},"allowed_tools":{"items":{"type":"string"},"type":"array","title":"Allowed Tools","default":[]},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"effort":{"anyOf":[{"type":"string","enum":["low","medium","high","xhigh","max"]},{"type":"null"}],"title":"Effort"},"context":{"type":"string","enum":["inline","fork"],"title":"Context","default":"inline"},"agent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent"},"paths":{"items":{"type":"string"},"type":"array","title":"Paths","default":[]},"shell":{"type":"string","enum":["bash","powershell"],"title":"Shell","default":"bash"},"hooks":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Hooks"},"extensions":{"$ref":"#/components/schemas/SkillExtensionsOut","default":{"session_latch":false,"builtin_holders":[],"capabilities":[],"side_effects":[]}},"capability_review":{"items":{"$ref":"#/components/schemas/SkillCapabilityReviewOut"},"type":"array","title":"Capability Review"}},"type":"object","required":["description"],"title":"SkillFrontmatterOut"},"SkillInstallOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"skill_id":{"type":"string","format":"uuid","title":"Skill Id"},"install_kind":{"type":"string","title":"Install Kind"},"install_id":{"type":"string","format":"uuid","title":"Install Id"},"enabled":{"type":"boolean","title":"Enabled"},"pinned_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pinned Version"},"trusted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Trusted At"}},"type":"object","required":["id","skill_id","install_kind","install_id","enabled"],"title":"SkillInstallOut"},"SkillLibraryPreviewOut":{"properties":{"library_id":{"type":"string","format":"uuid","title":"Library Id"},"library_name":{"type":"string","title":"Library Name"},"document_count":{"type":"integer","title":"Document Count"},"integration_count":{"type":"integer","title":"Integration Count"},"skill_count":{"type":"integer","title":"Skill Count"}},"type":"object","required":["library_id","library_name","document_count","integration_count","skill_count"],"title":"SkillLibraryPreviewOut","description":"Object counts for a skill's folder - shown before an attach grant.\n\n``use`` membership grants all skills and integrations in the folder, not\njust the selected skill. Documents still require a read-capable role. The\nconfirm dialog surfaces all counts and that boundary before confirmation."},"SkillOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"slug":{"type":"string","title":"Slug"},"library_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Library Id"},"library_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Library Name"},"frontmatter":{"$ref":"#/components/schemas/SkillFrontmatterOut"},"bundle_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bundle Hash"},"schema_version":{"type":"string","title":"Schema Version"},"version":{"type":"integer","title":"Version"},"enabled":{"type":"boolean","title":"Enabled"},"approved":{"type":"boolean","title":"Approved"},"requires_admin_approval":{"type":"boolean","title":"Requires Admin Approval","default":false},"visibility":{"type":"string","enum":["private","public"],"title":"Visibility"},"source_kind":{"type":"string","enum":["authored","imported","bundled","plugin"],"title":"Source Kind"},"imported_from":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Imported From"},"import_status":{"type":"string","enum":["installing","failed","ready"],"title":"Import Status","default":"ready"},"import_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Import Error"},"body":{"type":"string","title":"Body"},"tool_reachability_warnings":{"items":{"type":"string"},"type":"array","title":"Tool Reachability Warnings"},"bundled_programs":{"items":{"type":"string"},"type":"array","title":"Bundled Programs"},"import_warnings":{"items":{"type":"string"},"type":"array","title":"Import Warnings"}},"type":"object","required":["id","slug","frontmatter","schema_version","version","enabled","approved","visibility","source_kind","body"],"title":"SkillOut"},"SkillPackageImportBody":{"properties":{"package":{"additionalProperties":true,"type":"object","title":"Package"}},"type":"object","required":["package"],"title":"SkillPackageImportBody"},"SkillSourceAuditEntry":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"status":{"type":"string","enum":["ready","blocked","review"],"title":"Status"},"blocked_count":{"type":"integer","title":"Blocked Count"},"supported_count":{"type":"integer","title":"Supported Count"},"capability_review":{"items":{"$ref":"#/components/schemas/SkillCapabilityReviewOut"},"type":"array","title":"Capability Review"}},"type":"object","required":["slug","name","description","status","blocked_count","supported_count"],"title":"SkillSourceAuditEntry","description":"Install-readiness audit for one source skill."},"SkillSourceAuditOut":{"properties":{"source_id":{"type":"string","format":"uuid","title":"Source Id"},"source_slug":{"type":"string","title":"Source Slug"},"total":{"type":"integer","title":"Total"},"ready":{"type":"integer","title":"Ready"},"blocked":{"type":"integer","title":"Blocked"},"review":{"type":"integer","title":"Review"},"entries":{"items":{"$ref":"#/components/schemas/SkillSourceAuditEntry"},"type":"array","title":"Entries"}},"type":"object","required":["source_id","source_slug","total","ready","blocked","review"],"title":"SkillSourceAuditOut","description":"Dependency/capability readiness summary for one registry source."},"SkillSourceOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"kind":{"type":"string","enum":["github_repo","json_index","skills_sh"],"title":"Kind"},"config":{"additionalProperties":true,"type":"object","title":"Config"},"trust_default":{"type":"string","enum":["none","allowed_tools_review","verified"],"title":"Trust Default"},"enabled":{"type":"boolean","title":"Enabled"},"priority":{"type":"integer","title":"Priority"},"tenant_kind":{"type":"string","enum":["system","identity"],"title":"Tenant Kind"},"tenant_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Tenant Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","slug","name","kind","trust_default","enabled","priority","tenant_kind","created_at","updated_at"],"title":"SkillSourceOut","description":"Public representation of a skill source. ``*_secret`` config fields are\nredacted before this is constructed."},"SkillSourceSummary":{"properties":{"source_id":{"type":"string","format":"uuid","title":"Source Id"},"source_slug":{"type":"string","title":"Source Slug"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"homepage_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Homepage Url"},"capability_review":{"items":{"$ref":"#/components/schemas/SkillCapabilityReviewOut"},"type":"array","title":"Capability Review"},"installed":{"type":"boolean","title":"Installed","default":false},"installed_skill_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Installed Skill Id"}},"type":"object","required":["source_id","source_slug","slug","name","description"],"title":"SkillSourceSummary","description":"One adapter-discovered skill, plus the source it lives on."},"SkillSummaryOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"slug":{"type":"string","title":"Slug"},"library_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Library Id"},"library_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Library Name"},"frontmatter":{"$ref":"#/components/schemas/SkillFrontmatterOut"},"bundle_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bundle Hash"},"schema_version":{"type":"string","title":"Schema Version"},"version":{"type":"integer","title":"Version"},"enabled":{"type":"boolean","title":"Enabled"},"approved":{"type":"boolean","title":"Approved"},"requires_admin_approval":{"type":"boolean","title":"Requires Admin Approval","default":false},"visibility":{"type":"string","enum":["private","public"],"title":"Visibility"},"source_kind":{"type":"string","enum":["authored","imported","bundled","plugin"],"title":"Source Kind"},"imported_from":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Imported From"},"import_status":{"type":"string","enum":["installing","failed","ready"],"title":"Import Status","default":"ready"},"import_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Import Error"}},"type":"object","required":["id","slug","frontmatter","schema_version","version","enabled","approved","visibility","source_kind"],"title":"SkillSummaryOut"},"SkillVersionOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"skill_id":{"type":"string","format":"uuid","title":"Skill Id"},"version":{"type":"integer","title":"Version"},"bundle_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bundle Hash"},"change_type":{"type":"string","title":"Change Type"},"changed_at":{"type":"string","format":"date-time","title":"Changed At"},"changed_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Changed By"}},"type":"object","required":["id","skill_id","version","change_type","changed_at"],"title":"SkillVersionOut"},"SlackChannelOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"bound":{"type":"boolean","title":"Bound"},"reply_policy":{"type":"string","title":"Reply Policy"},"spend_cap_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Spend Cap Cents"},"problem":{"anyOf":[{"type":"string","enum":["gone","archived","removed"]},{"type":"null"}],"title":"Problem"}},"type":"object","required":["id","name","bound","reply_policy","spend_cap_cents"],"title":"SlackChannelOut"},"SlackChannelPatch":{"properties":{"bound":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Bound"},"reply_policy":{"anyOf":[{"type":"string","enum":["always","when_addressed","never"]},{"type":"null"}],"title":"Reply Policy"},"spend_cap_cents":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Spend Cap Cents"}},"type":"object","title":"SlackChannelPatch"},"SlackConfigTokenBody":{"properties":{"token":{"type":"string","maxLength":2000,"minLength":1,"title":"Token"}},"type":"object","required":["token"],"title":"SlackConfigTokenBody"},"SlackEnableBody":{"properties":{"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"}},"type":"object","title":"SlackEnableBody"},"SlackIdentityLinkBody":{"properties":{"state":{"type":"string","maxLength":400,"minLength":1,"title":"State"}},"type":"object","required":["state"],"title":"SlackIdentityLinkBody"},"SlackIdentityLinkPreview":{"properties":{"agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"},"workspace_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Name"},"slack_user_id":{"type":"string","title":"Slack User Id"},"your_name":{"type":"string","title":"Your Name"},"already_linked_to_you":{"type":"boolean","title":"Already Linked To You"}},"type":"object","required":["agent_name","workspace_name","slack_user_id","your_name","already_linked_to_you"],"title":"SlackIdentityLinkPreview"},"SlackLinkedPersonOut":{"properties":{"slack_user_id":{"type":"string","title":"Slack User Id"},"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"linked_at":{"type":"string","format":"date-time","title":"Linked At"}},"type":"object","required":["slack_user_id","identity_id","display_name","linked_at"],"title":"SlackLinkedPersonOut"},"SlackPresencePatch":{"properties":{"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"dm_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Dm Enabled"}},"type":"object","title":"SlackPresencePatch"},"SlackPresenceStatus":{"properties":{"state":{"type":"string","enum":["off","needs_token","provisioning","needs_install","active","paused","failed"],"title":"State"},"provisioning_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provisioning Status"},"enabled":{"type":"boolean","title":"Enabled","default":false},"app_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"App Id"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"team_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Name"},"dm_enabled":{"type":"boolean","title":"Dm Enabled","default":false},"permissions_current":{"type":"boolean","title":"Permissions Current","default":false},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"install_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Install Url"},"app_settings_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"App Settings Url"},"avatar_download_url":{"type":"string","title":"Avatar Download Url"},"workspaces":{"items":{"$ref":"#/components/schemas/SlackWorkspace"},"type":"array","title":"Workspaces"},"needs_config_token":{"type":"boolean","title":"Needs Config Token","default":false},"subconscious":{"type":"boolean","title":"Subconscious","default":false},"owner_slack_accounts":{"items":{"type":"string"},"type":"array","title":"Owner Slack Accounts"},"app_needs_manual_delete":{"type":"boolean","title":"App Needs Manual Delete","default":false}},"type":"object","required":["state","avatar_download_url"],"title":"SlackPresenceStatus"},"SlackUpdatePermissionsOut":{"properties":{"status":{"$ref":"#/components/schemas/SlackPresenceStatus"},"reinstall_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reinstall Url"}},"type":"object","required":["status"],"title":"SlackUpdatePermissionsOut"},"SlackWorkspace":{"properties":{"team_id":{"type":"string","title":"Team Id"}},"type":"object","required":["team_id"],"title":"SlackWorkspace"},"SourceCaptureDispositionPreviewRequest":{"properties":{"rule":{"type":"string","enum":["mark-existing-read","archive-existing"],"title":"Rule"},"batch_size":{"type":"integer","maximum":1000.0,"minimum":1.0,"title":"Batch Size","default":100},"source":{"type":"string","minLength":1,"title":"Source"}},"type":"object","required":["rule","source"],"title":"SourceCaptureDispositionPreviewRequest"},"SourceStateUpdateV1":{"properties":{"blocked":{"type":"boolean","title":"Blocked"}},"type":"object","required":["blocked"],"title":"SourceStateUpdateV1"},"SourceStatus":{"properties":{"source_id":{"type":"string","title":"Source Id"},"vendor":{"type":"string","title":"Vendor"},"name":{"type":"string","title":"Name"},"url":{"type":"string","title":"Url"},"status":{"type":"string","title":"Status"},"last_checked_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Checked At"},"last_changed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Changed At"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"status_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Note"}},"type":"object","required":["source_id","vendor","name","url","status","last_checked_at","last_changed_at","last_error","status_note"],"title":"SourceStatus"},"SourceTime":{"properties":{"occurred_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Occurred At"},"observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Observed At"},"recorded_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Recorded At"},"precision":{"anyOf":[{"type":"string","enum":["instant","day","month","year"]},{"type":"null"}],"title":"Precision"},"provenance":{"type":"string","enum":["stated","parsed_from_title","parsed_from_body","inferred","unknown"],"title":"Provenance","default":"unknown"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"evidence":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Evidence"}},"additionalProperties":false,"type":"object","title":"SourceTime","description":"When source content happened, was observed, and entered thinqOS."},"SpawnConfig":{"properties":{"command":{"type":"string","title":"Command"},"args":{"items":{"type":"string"},"type":"array","title":"Args"},"env":{"additionalProperties":{"type":"string"},"type":"object","title":"Env"}},"type":"object","required":["command","args","env"],"title":"SpawnConfig","description":"Resolved spawn config for a stdio_bridge registration."},"SqlTrace":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"status":{"type":"string","title":"Status"},"started_at":{"type":"string","title":"Started At"},"stopped_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stopped At"},"started_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started By"},"query_count":{"type":"integer","title":"Query Count"},"total_duration_ms":{"type":"integer","title":"Total Duration Ms"},"filter_min_duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Filter Min Duration Ms"},"filter_path_pattern":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Path Pattern"},"max_queries":{"type":"integer","title":"Max Queries"},"max_duration_seconds":{"type":"integer","title":"Max Duration Seconds"},"explain_threshold_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Explain Threshold Ms"},"dropped_queries":{"type":"integer","title":"Dropped Queries"}},"type":"object","required":["id","name","status","started_at","stopped_at","started_by","query_count","total_duration_ms","filter_min_duration_ms","filter_path_pattern","max_queries","max_duration_seconds","explain_threshold_ms","dropped_queries"],"title":"SqlTrace"},"StageTiming":{"properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"duration_ms":{"type":"integer","title":"Duration Ms"}},"type":"object","required":["key","label","duration_ms"],"title":"StageTiming","description":"One pipeline stage's wall-clock slice of the turn (TOS-1396).\n\nSourced from ``turn_stage_spans``; the sum of these plus small gaps equals\n``total_duration_ms`` (the whole-turn span), which is the real server-side\nwall-clock - not the provider-generation-only figure the panel used to show."},"StandingJobOut":{"properties":{"trigger_id":{"type":"string","format":"uuid","title":"Trigger Id"},"job_key":{"type":"string","title":"Job Key"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"schedule":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Schedule"},"paused":{"type":"boolean","title":"Paused"},"next_run_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Run At"}},"type":"object","required":["trigger_id","job_key","title","schedule","paused","next_run_at"],"title":"StandingJobOut"},"StandingJobPatchIn":{"properties":{"schedule":{"anyOf":[{"type":"string","enum":["morning","evening","weekly_mon"]},{"type":"null"}],"title":"Schedule"},"paused":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Paused"}},"additionalProperties":false,"type":"object","title":"StandingJobPatchIn"},"StandingLast":{"properties":{"summary":{"type":"string","title":"Summary"},"at":{"type":"string","format":"date-time","title":"At"}},"additionalProperties":false,"type":"object","required":["summary","at"],"title":"StandingLast"},"StandingRow":{"properties":{"trigger_id":{"type":"string","format":"uuid","title":"Trigger Id"},"job_key":{"type":"string","title":"Job Key"},"title":{"type":"string","title":"Title"},"schedule":{"type":"string","title":"Schedule"},"schedule_label":{"type":"string","title":"Schedule Label"},"paused":{"type":"boolean","title":"Paused"},"last":{"anyOf":[{"$ref":"#/components/schemas/StandingLast"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["trigger_id","job_key","title","schedule","schedule_label","paused"],"title":"StandingRow"},"StartChatTaskRequest":{"properties":{"instruction":{"type":"string","maxLength":100000,"minLength":1,"title":"Instruction"},"idempotency_key":{"anyOf":[{"type":"string","maxLength":160},{"type":"null"}],"title":"Idempotency Key"},"runtime_kind":{"anyOf":[{"type":"string","maxLength":80,"minLength":1},{"type":"null"}],"title":"Runtime Kind"},"runtime_environment_ref":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Runtime Environment Ref"},"runtime_external_ref":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Runtime External Ref"},"supervision_metadata":{"additionalProperties":true,"type":"object","title":"Supervision Metadata"}},"type":"object","required":["instruction"],"title":"StartChatTaskRequest"},"StartConversationRequest":{"properties":{"participant_identity_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Participant Identity Ids"},"content":{"type":"string","maxLength":20000,"minLength":1,"pattern":"\\S","title":"Content"},"idempotency_key":{"type":"string","format":"uuid","title":"Idempotency Key"},"extraction_excluded":{"type":"boolean","title":"Extraction Excluded","default":false}},"type":"object","required":["participant_identity_ids","content","idempotency_key"],"title":"StartConversationRequest"},"StartConversationResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"container_kind":{"type":"string","title":"Container Kind"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"first_message_id":{"type":"string","format":"uuid","title":"First Message Id"},"first_response_run_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"First Response Run Id"}},"type":"object","required":["id","title","container_kind","first_message_id"],"title":"StartConversationResponse"},"StartIn":{"properties":{"decisions":{"additionalProperties":{"type":"string","enum":["theirs","ours"]},"type":"object","title":"Decisions"}},"type":"object","title":"StartIn"},"StartRequest":{"properties":{"target_identity_id":{"type":"string","format":"uuid","title":"Target Identity Id"},"start_key":{"type":"string","format":"uuid","title":"Start Key"}},"type":"object","required":["target_identity_id"],"title":"StartRequest"},"StartResponse":{"properties":{"target":{"$ref":"#/components/schemas/TargetInfo"},"session_id":{"type":"string","format":"uuid","title":"Session Id"}},"type":"object","required":["target","session_id"],"title":"StartResponse"},"StartRunsRequest":{"properties":{"scenarios":{"items":{"type":"string"},"type":"array","maxItems":50,"title":"Scenarios"},"recipe_ref":{"type":"string","title":"Recipe Ref","default":"live"},"runs":{"type":"integer","title":"Runs","default":3},"trigger":{"type":"string","enum":["admin","action"],"title":"Trigger","default":"admin"}},"type":"object","title":"StartRunsRequest"},"StartRunsResponse":{"properties":{"invocation_id":{"type":"string","title":"Invocation Id"},"status":{"type":"string","const":"queued","title":"Status"}},"type":"object","required":["invocation_id","status"],"title":"StartRunsResponse"},"StartSqlTraceBody":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"filter_path_pattern":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Path Pattern"},"filter_min_duration_ms":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Filter Min Duration Ms"},"explain_threshold_ms":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Explain Threshold Ms"},"max_queries":{"type":"integer","maximum":1000000.0,"minimum":1.0,"title":"Max Queries","default":10000},"max_duration_seconds":{"type":"integer","maximum":86400.0,"minimum":1.0,"title":"Max Duration Seconds","default":1800}},"type":"object","title":"StartSqlTraceBody"},"StepCharge":{"properties":{"state":{"type":"string","enum":["billed","no_ai_charge","included","non_billed","not_applicable","unknown"],"title":"State","default":"unknown"},"amount_usd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amount Usd"},"included_in_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Included In Id"},"billable_record_ids":{"items":{"type":"string"},"type":"array","title":"Billable Record Ids"},"scope":{"type":"string","title":"Scope","default":"operation"}},"type":"object","title":"StepCharge"},"StepTiming":{"properties":{"start_offset_us":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Offset Us"},"duration_us":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Us"},"source":{"type":"string","title":"Source","default":"unknown"},"resolution_us":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Resolution Us"},"state":{"type":"string","enum":["measured","derived","below_resolution","event","not_run","unknown"],"title":"State","default":"unknown"},"raw_duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Raw Duration Ms"}},"type":"object","title":"StepTiming"},"StepView":{"properties":{"title":{"type":"string","title":"Title"},"occurred_at":{"type":"string","format":"date-time","title":"Occurred At"},"detail":{"type":"string","title":"Detail"},"code":{"type":"string","title":"Code"}},"additionalProperties":false,"type":"object","required":["title","occurred_at","detail","code"],"title":"StepView"},"StepsBlock":{"properties":{"type":{"type":"string","const":"steps","title":"Type"},"items":{"items":{"$ref":"#/components/schemas/UiStep"},"type":"array","maxItems":20,"minItems":1,"title":"Items"}},"additionalProperties":false,"type":"object","required":["type","items"],"title":"StepsBlock"},"StoryView":{"properties":{"trace_id":{"type":"string","format":"uuid","title":"Trace Id"},"kind":{"type":"string","title":"Kind"},"status":{"type":"string","title":"Status"},"headline":{"type":"string","title":"Headline"},"proof":{"type":"string","title":"Proof"},"when":{"type":"string","format":"date-time","title":"When"},"who":{"type":"string","title":"Who"},"steps":{"items":{"$ref":"#/components/schemas/StepView"},"type":"array","title":"Steps"},"evidence":{"additionalProperties":true,"type":"object","title":"Evidence"},"decision_href":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decision Href"}},"additionalProperties":false,"type":"object","required":["trace_id","kind","status","headline","proof","when","who","steps"],"title":"StoryView"},"StreamJobRun":{"properties":{"job_id":{"type":"string","title":"Job Id"},"last_success_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Success At"},"last_error_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Error At"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"}},"type":"object","required":["job_id","last_success_at","last_error_at","last_error"],"title":"StreamJobRun"},"StreamLane":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"watches":{"type":"string","title":"Watches"},"cadence":{"type":"string","title":"Cadence"},"pending_count":{"type":"integer","title":"Pending Count"},"pending_label":{"type":"string","title":"Pending Label"},"last_run_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Run At"},"last_run_status":{"type":"string","title":"Last Run Status"},"runs":{"items":{"$ref":"#/components/schemas/StreamJobRun"},"type":"array","title":"Runs"},"loop":{"$ref":"#/components/schemas/LoopStrip"}},"type":"object","required":["key","name","watches","cadence","pending_count","pending_label","last_run_at","last_run_status","runs","loop"],"title":"StreamLane","description":"One self-improvement stream, described the same way as every other."},"SubconsciousAside":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"source_message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Message Id"},"ask":{"type":"string","title":"Ask"},"reply":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reply"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","ask"],"title":"SubconsciousAside","description":"TOS-581: one private inner-voice exchange the caller had about a source\nconversation. ``ask`` is the caller's question; ``reply`` is the\nSubconscious's answer (None if not yet generated). ``source_message_id``\nanchors it inline under a specific message in the source thread."},"SubconsciousAsidesResponse":{"properties":{"asides":{"items":{"$ref":"#/components/schemas/SubconsciousAside"},"type":"array","title":"Asides"}},"type":"object","title":"SubconsciousAsidesResponse"},"SubjectRecordOut":{"properties":{"record_id":{"type":"string","format":"uuid","title":"Record Id"},"collection":{"type":"string","title":"Collection"},"recorded_at":{"type":"string","format":"date-time","title":"Recorded At"},"disclosure":{"type":"string","enum":["full","existence_only"],"title":"Disclosure"},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value"},"dispute_state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dispute State"}},"type":"object","required":["record_id","collection","recorded_at","disclosure","value","dispute_state"],"title":"SubjectRecordOut","description":"One record about the caller.\n\n``value`` is populated only when ``disclosure == \"full\"``. There is no field\nhere for the writing identity, and adding one would breach the commitment\nthis endpoint exists to keep."},"SubscribeIn":{"properties":{"plan_id":{"type":"string","format":"uuid","title":"Plan Id"},"plan_version":{"type":"integer","minimum":1.0,"title":"Plan Version"},"resume_only":{"type":"boolean","title":"Resume Only","default":false}},"additionalProperties":false,"type":"object","required":["plan_id","plan_version"],"title":"SubscribeIn"},"SubstrateOverview":{"properties":{"entity_count":{"type":"integer","title":"Entity Count"},"proposition_count":{"type":"integer","title":"Proposition Count"},"proposition_relation_count":{"type":"integer","title":"Proposition Relation Count"},"contradiction_count":{"type":"integer","title":"Contradiction Count"},"entities_by_kind":{"items":{"$ref":"#/components/schemas/CountBucket"},"type":"array","title":"Entities By Kind"},"propositions_by_source":{"items":{"$ref":"#/components/schemas/CountBucket"},"type":"array","title":"Propositions By Source"}},"type":"object","required":["entity_count","proposition_count","proposition_relation_count","contradiction_count","entities_by_kind","propositions_by_source"],"title":"SubstrateOverview"},"SuggestVoiceResponse":{"properties":{"voice_id":{"type":"string","title":"Voice Id"}},"type":"object","required":["voice_id"],"title":"SuggestVoiceResponse"},"SuggestedConnectionResponse":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"display_name":{"type":"string","title":"Display Name"},"kind":{"type":"string","title":"Kind"},"reason":{"type":"string","title":"Reason"},"via_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Via Identity Id"},"via_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Via Display Name"},"shared_chat_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Shared Chat Id"},"shared_chat_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shared Chat Title"}},"type":"object","required":["identity_id","display_name","kind","reason","via_identity_id","via_display_name","shared_chat_id","shared_chat_title"],"title":"SuggestedConnectionResponse"},"SuggestionsResponse":{"properties":{"suggestions":{"items":{"$ref":"#/components/schemas/SuggestedConnectionResponse"},"type":"array","title":"Suggestions"},"truncated":{"type":"boolean","title":"Truncated"}},"type":"object","required":["suggestions","truncated"],"title":"SuggestionsResponse","description":"Connection suggestions, plus an honest completeness signal.\n\nTwo signals feed ``suggestions`` (TOS-3442): ``reason == \"shared_chat\"``\n(you share an active chat with them) and ``reason ==\n\"mutual_connection\"`` (they're connected to one of your own connections,\nvia ``via_identity_id``/``via_display_name``). This is a discovery aid\nover a bounded, on-the-fly computation, not a ranked top-N list - there\nis no score to report. ``truncated`` is True when the underlying\ncomputation hit one of its caps (a very active account: hundreds of\nchats or connections, or a very large room) and therefore MAY be missing\na qualifying suggestion that a fuller scan would have found. ``False``\nmeans the computation considered everything and this is the complete\nset."},"SweepStatus":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"cron":{"type":"string","title":"Cron"},"effective_cron":{"type":"string","title":"Effective Cron"},"effective_timezone":{"type":"string","title":"Effective Timezone"},"cron_overridden":{"type":"boolean","title":"Cron Overridden"},"timeout_seconds":{"type":"integer","title":"Timeout Seconds"},"effective_timeout_seconds":{"type":"integer","title":"Effective Timeout Seconds"},"enabled_override":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled Override"},"members":{"items":{"type":"string"},"type":"array","title":"Members"},"next_run_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Run At"},"execution":{"type":"string","enum":["resident","offloaded","disabled"],"title":"Execution"}},"type":"object","required":["id","name","cron","effective_cron","effective_timezone","cron_overridden","timeout_seconds","effective_timeout_seconds","enabled_override","members","next_run_at","execution"],"title":"SweepStatus"},"SyncDetailOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"library_id":{"type":"string","format":"uuid","title":"Library Id"},"kind":{"type":"string","title":"Kind"},"direction":{"type":"string","title":"Direction"},"state":{"type":"string","title":"State"},"target":{"anyOf":[{"$ref":"#/components/schemas/SyncTarget"},{"type":"null"}]},"website":{"anyOf":[{"$ref":"#/components/schemas/WebsiteOut"},{"type":"null"}]},"google":{"anyOf":[{"$ref":"#/components/schemas/GoogleSyncOut"},{"type":"null"}]},"interval_seconds":{"type":"integer","title":"Interval Seconds"},"auto_merge":{"type":"boolean","title":"Auto Merge"},"on_remove":{"type":"string","title":"On Remove"},"write_note":{"type":"boolean","title":"Write Note"},"last_run_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Run At"},"last_success_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Success At"},"last_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Status"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"counts":{"additionalProperties":true,"type":"object","title":"Counts"},"pr_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pr Number"},"pr_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pr Url"},"pr_state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pr State"},"sync_branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sync Branch"},"created_by_identity_id":{"type":"string","format":"uuid","title":"Created By Identity Id"},"mind_training":{"anyOf":[{"$ref":"#/components/schemas/MindTrainingSummary"},{"type":"null"}]},"conflicts":{"items":{"$ref":"#/components/schemas/SyncDocumentOut"},"type":"array","title":"Conflicts"},"kept_out":{"items":{"$ref":"#/components/schemas/SyncDocumentOut"},"type":"array","title":"Kept Out"},"managed_count":{"type":"integer","title":"Managed Count"},"runs":{"items":{"$ref":"#/components/schemas/SyncRunOut"},"type":"array","title":"Runs"}},"type":"object","required":["id","library_id","kind","direction","state","target","website","interval_seconds","auto_merge","on_remove","write_note","last_run_at","last_success_at","last_status","last_error","counts","pr_number","pr_url","pr_state","sync_branch","created_by_identity_id","conflicts","kept_out","managed_count","runs"],"title":"SyncDetailOut"},"SyncDocumentOut":{"properties":{"document_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Document Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"path":{"type":"string","title":"Path"},"state":{"type":"string","title":"State"},"resolution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution"}},"type":"object","required":["document_id","title","path","state","resolution"],"title":"SyncDocumentOut"},"SyncLinkView":{"properties":{"id":{"type":"string","title":"Id"},"peer_base_url":{"type":"string","title":"Peer Base Url"},"peer_label":{"type":"string","title":"Peer Label"},"layers":{"items":{"type":"string"},"type":"array","title":"Layers"},"enabled":{"type":"boolean","title":"Enabled"},"interval_minutes":{"type":"integer","title":"Interval Minutes","default":60},"last_run_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Run At"},"last_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Status"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"last_report":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Last Report"},"run_count":{"type":"integer","title":"Run Count","default":0}},"type":"object","required":["id","peer_base_url","peer_label","layers","enabled"],"title":"SyncLinkView"},"SyncLinksResponse":{"properties":{"links":{"items":{"$ref":"#/components/schemas/SyncLinkView"},"type":"array","title":"Links"},"interval_minutes":{"type":"integer","title":"Interval Minutes","default":60}},"type":"object","title":"SyncLinksResponse"},"SyncOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"library_id":{"type":"string","format":"uuid","title":"Library Id"},"kind":{"type":"string","title":"Kind"},"direction":{"type":"string","title":"Direction"},"state":{"type":"string","title":"State"},"target":{"anyOf":[{"$ref":"#/components/schemas/SyncTarget"},{"type":"null"}]},"website":{"anyOf":[{"$ref":"#/components/schemas/WebsiteOut"},{"type":"null"}]},"google":{"anyOf":[{"$ref":"#/components/schemas/GoogleSyncOut"},{"type":"null"}]},"interval_seconds":{"type":"integer","title":"Interval Seconds"},"auto_merge":{"type":"boolean","title":"Auto Merge"},"on_remove":{"type":"string","title":"On Remove"},"write_note":{"type":"boolean","title":"Write Note"},"last_run_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Run At"},"last_success_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Success At"},"last_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Status"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"counts":{"additionalProperties":true,"type":"object","title":"Counts"},"pr_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pr Number"},"pr_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pr Url"},"pr_state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pr State"},"sync_branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sync Branch"},"created_by_identity_id":{"type":"string","format":"uuid","title":"Created By Identity Id"},"mind_training":{"anyOf":[{"$ref":"#/components/schemas/MindTrainingSummary"},{"type":"null"}]}},"type":"object","required":["id","library_id","kind","direction","state","target","website","interval_seconds","auto_merge","on_remove","write_note","last_run_at","last_success_at","last_status","last_error","counts","pr_number","pr_url","pr_state","sync_branch","created_by_identity_id"],"title":"SyncOut"},"SyncRunOut":{"properties":{"started_at":{"type":"string","format":"date-time","title":"Started At"},"finished_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Finished At"},"status":{"type":"string","title":"Status"},"counts":{"additionalProperties":true,"type":"object","title":"Counts"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"pr_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pr Number"}},"type":"object","required":["started_at","finished_at","status","counts","error","pr_number"],"title":"SyncRunOut"},"SyncTarget":{"properties":{"owner":{"type":"string","title":"Owner"},"name":{"type":"string","title":"Name"},"branch":{"type":"string","title":"Branch"},"path":{"type":"string","title":"Path"}},"type":"object","required":["owner","name","branch","path"],"title":"SyncTarget"},"SystemEventParticipant":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"kind":{"type":"string","enum":["person","agent"],"title":"Kind"},"name_at_event":{"type":"string","title":"Name At Event"}},"type":"object","required":["id","kind","name_at_event"],"title":"SystemEventParticipant","description":"One side (actor or subject) of a participant lifecycle event."},"SystemEventResponse":{"properties":{"kind":{"type":"string","enum":["participant_added","participant_removed","participant_left","participants_added_batch","direct_chat_converted","context_compacted","conversation_catchup","autopilot_paused"],"title":"Kind"},"actor":{"anyOf":[{"$ref":"#/components/schemas/SystemEventParticipant"},{"type":"null"}]},"subject":{"anyOf":[{"$ref":"#/components/schemas/SystemEventParticipant"},{"type":"null"}]},"subjects":{"anyOf":[{"items":{"$ref":"#/components/schemas/SystemEventParticipant"},"type":"array"},{"type":"null"}],"title":"Subjects"},"room_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Room Title"},"room_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Room Description"},"summary_message_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Summary Message Id"},"owner_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner Identity Id"},"source_message_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Source Message Count"},"covered_message_start_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Covered Message Start Id"},"covered_message_end_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Covered Message End Id"},"summary_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary Model"},"summary_provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary Provider"},"summary_model_run_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Summary Model Run Id"},"validation_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Validation Status"},"fallback_used":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Fallback Used"},"summary_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary Text"},"catchup_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Catchup Text"},"fact_ledger":{"items":{"$ref":"#/components/schemas/FactLedgerEntryResponse"},"type":"array","title":"Fact Ledger"},"pause_reason":{"anyOf":[{"type":"string","enum":["identity_auto_send_limit","conversation_loop_guard","loop_guard_n_consecutive","time_budget_exhausted","agent_mode_expired"]},{"type":"null"}],"title":"Pause Reason"},"identity_auto_sends":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Identity Auto Sends"},"auto_send_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auto Send Limit"},"conversation_non_human":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Conversation Non Human"},"conversation_loop_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Conversation Loop Limit"},"consecutive_non_human":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Consecutive Non Human"},"auto_reply_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auto Reply Limit"},"auto_reply_window_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auto Reply Window Seconds"}},"type":"object","required":["kind"],"title":"SystemEventResponse","description":"Parsed view of a role='system' chat event.\n\nThe raw ``metadata_`` dict is flat; participant events nest the actor/subject\nsides, while context compaction exposes the durable summary row it references."},"TTSRequest":{"properties":{"text":{"type":"string","title":"Text"},"voice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice"},"speaker_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Speaker Identity Id"},"with_alignment":{"type":"boolean","title":"With Alignment","default":false}},"type":"object","required":["text"],"title":"TTSRequest"},"TableArtifact":{"properties":{"chart_type":{"type":"string","const":"table","title":"Chart Type"},"payload":{"$ref":"#/components/schemas/TableArtifactPayloadResponse"}},"type":"object","required":["chart_type","payload"],"title":"TableArtifact"},"TableArtifactPayloadResponse":{"properties":{"title":{"type":"string","title":"Title"},"columns":{"items":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/_TableColumn"}]},"type":"array","title":"Columns"},"rows":{"items":{"items":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},"type":"array"},"type":"array","title":"Rows"},"default_sorts":{"items":{"$ref":"#/components/schemas/_TableSort"},"type":"array","title":"Default Sorts"},"summary":{"items":{"$ref":"#/components/schemas/_TableSummaryStat"},"type":"array","title":"Summary"},"notes":{"items":{"type":"string"},"type":"array","title":"Notes"}},"type":"object","required":["title","columns","rows"],"title":"TableArtifactPayloadResponse"},"TargetCounts":{"properties":{"agent":{"type":"integer","title":"Agent","default":0},"organization":{"type":"integer","title":"Organization","default":0},"person":{"type":"integer","title":"Person","default":0},"other":{"type":"integer","title":"Other","default":0}},"type":"object","title":"TargetCounts"},"TargetCreate":{"properties":{"slug":{"type":"string","maxLength":64,"minLength":1,"title":"Slug"},"label":{"type":"string","maxLength":120,"minLength":1,"title":"Label"},"base_url":{"type":"string","maxLength":2000,"minLength":1,"title":"Base Url"},"auth_kind":{"type":"string","title":"Auth Kind"},"bypass_token":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Bypass Token"}},"type":"object","required":["slug","label","base_url","auth_kind"],"title":"TargetCreate"},"TargetInfo":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"display_name":{"type":"string","title":"Display Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"kind":{"type":"string","title":"Kind"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"}},"type":"object","required":["id","display_name","email","kind","avatar_url"],"title":"TargetInfo"},"TargetRow":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"kind":{"type":"string","title":"Kind"},"display_name":{"type":"string","title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"subtitle":{"type":"string","title":"Subtitle"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"last_acted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Acted At"}},"type":"object","required":["id","kind","display_name","avatar_url","subtitle","description","last_acted_at"],"title":"TargetRow"},"TargetUpdate":{"properties":{"label":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Label"},"base_url":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Base Url"},"auth_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Kind"},"bypass_token":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Bypass Token"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"}},"type":"object","title":"TargetUpdate"},"TargetView":{"properties":{"id":{"type":"string","title":"Id"},"slug":{"type":"string","title":"Slug"},"label":{"type":"string","title":"Label"},"base_url":{"type":"string","title":"Base Url"},"auth_kind":{"type":"string","title":"Auth Kind"},"token_last4":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token Last4"},"enabled":{"type":"boolean","title":"Enabled"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","slug","label","base_url","auth_kind","token_last4","enabled","created_at","updated_at"],"title":"TargetView"},"TargetsResponse":{"properties":{"targets":{"items":{"$ref":"#/components/schemas/TargetRow"},"type":"array","title":"Targets"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"total":{"type":"integer","title":"Total","default":0},"counts":{"$ref":"#/components/schemas/TargetCounts"},"recheck_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Recheck At"}},"type":"object","required":["targets","next_cursor"],"title":"TargetsResponse"},"TaskStateIn":{"properties":{"repo":{"type":"string","minLength":1,"title":"Repo","description":"Normalized git remote, owner/name."},"machine_id":{"type":"string","minLength":1,"title":"Machine Id"},"worktree_path":{"type":"string","minLength":1,"title":"Worktree Path"},"branch":{"type":"string","title":"Branch","default":""},"dirty_files":{"items":{"type":"string"},"type":"array","title":"Dirty Files"},"pr_number":{"type":"integer","title":"Pr Number","default":0},"ci_status":{"type":"string","title":"Ci Status","default":""},"merge_state":{"type":"string","title":"Merge State","default":""},"summary":{"type":"string","title":"Summary","default":""}},"type":"object","required":["repo","machine_id","worktree_path"],"title":"TaskStateIn","description":"One machine's in-flight task-state for a repo."},"TestCaptureResultV1":{"properties":{"chat_id":{"type":"string","title":"Chat Id"},"source":{"type":"string","title":"Source"},"source_external_id":{"type":"string","title":"Source External Id"}},"type":"object","required":["chat_id","source","source_external_id"],"title":"TestCaptureResultV1","description":"Result of POST /api/ingest/external/v1/test-capture.\n\nReturns the synthesized chat's id + source/source_external_id so the\nfrontend can navigate to its detail page right after the call."},"TestProviderKeyRequest":{"properties":{"api_key":{"type":"string","title":"Api Key"}},"type":"object","required":["api_key"],"title":"TestProviderKeyRequest"},"TestProviderKeyResponse":{"properties":{"provider":{"type":"string","title":"Provider"},"valid":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Valid"},"validation_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Validation Error"},"error_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Class"},"scope_required":{"type":"boolean","title":"Scope Required","default":false},"scope_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope Label"},"provider_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Scope"},"scope_outcome":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope Outcome"},"scope_candidates":{"items":{"type":"string"},"type":"array","title":"Scope Candidates"},"scope_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope Detail"}},"type":"object","required":["provider","valid","validation_error"],"title":"TestProviderKeyResponse"},"TextBlock":{"properties":{"type":{"type":"string","const":"text","title":"Type"},"text":{"type":"string","maxLength":2000,"minLength":1,"title":"Text"}},"additionalProperties":false,"type":"object","required":["type","text"],"title":"TextBlock"},"TokenSummary":{"properties":{"id":{"type":"integer","title":"Id"},"token_prefix":{"type":"string","title":"Token Prefix"},"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"created_by_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By Identity Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"use_count":{"type":"integer","title":"Use Count"}},"type":"object","required":["id","token_prefix","identity_id","note","created_by_identity_id","created_at","expires_at","last_used_at","use_count"],"title":"TokenSummary"},"ToolApprovalListResponse":{"properties":{"approvals":{"items":{"$ref":"#/components/schemas/ToolApprovalView"},"type":"array","title":"Approvals"}},"type":"object","required":["approvals"],"title":"ToolApprovalListResponse"},"ToolApprovalPolicy":{"properties":{"mode":{"type":"string","enum":["pause_non_read","off"],"title":"Mode"}},"type":"object","required":["mode"],"title":"ToolApprovalPolicy"},"ToolApprovalView":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"status":{"type":"string","title":"Status"},"message":{"type":"string","title":"Message"},"agent_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Identity Id"},"agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"},"chat_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Chat Id"},"run_id":{"type":"string","format":"uuid","title":"Run Id"},"originating_user_message_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Originating User Message Id"},"tool_name":{"type":"string","title":"Tool Name"},"tool_label":{"type":"string","title":"Tool Label"},"connection_name":{"type":"string","title":"Connection Name"},"connection_server":{"type":"string","title":"Connection Server"},"arguments_redacted":{"additionalProperties":true,"type":"object","title":"Arguments Redacted"},"effect":{"type":"string","title":"Effect"},"evidence_reason":{"type":"string","title":"Evidence Reason"},"policy_reason":{"type":"string","title":"Policy Reason"},"requested_at":{"type":"string","format":"date-time","title":"Requested At"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"resolved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Resolved At"},"resolved_by_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Resolved By Identity Id"},"resolution_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution Note"},"dispatch_state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dispatch State"},"outcome_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outcome Detail"},"forwarded_call_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Forwarded Call Id"}},"type":"object","required":["id","status","message","agent_identity_id","agent_name","chat_id","run_id","tool_name","tool_label","connection_name","connection_server","arguments_redacted","effect","evidence_reason","policy_reason","requested_at","expires_at","resolved_at","resolved_by_identity_id","resolution_note","dispatch_state","outcome_detail","forwarded_call_id"],"title":"ToolApprovalView","description":"One decision record, safe to show: no secrets and no raw arguments."},"ToolsOut":{"properties":{"ai_tools":{"items":{"$ref":"#/components/schemas/AiToolOut"},"type":"array","title":"Ai Tools"},"work_tools":{"items":{"$ref":"#/components/schemas/WorkToolOut"},"type":"array","title":"Work Tools"},"sorted_by":{"type":"string","enum":["cohort","featured"],"title":"Sorted By","default":"featured"},"cohort_role_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cohort Role Label"}},"type":"object","required":["ai_tools","work_tools"],"title":"ToolsOut"},"TopupRequest":{"properties":{"amount_usd":{"type":"integer","title":"Amount Usd","description":"Whole dollars, 10 to 500"}},"additionalProperties":false,"type":"object","required":["amount_usd"],"title":"TopupRequest"},"TraceCoverage":{"properties":{"parent_duration_ms":{"type":"integer","title":"Parent Duration Ms"},"covered_ms":{"type":"integer","title":"Covered Ms"},"coverage_pct":{"type":"number","title":"Coverage Pct"},"unattributed_ms":{"type":"integer","title":"Unattributed Ms"},"overlap_ms":{"type":"integer","title":"Overlap Ms"},"async_ms":{"type":"integer","title":"Async Ms"},"completeness":{"type":"string","title":"Completeness"},"parent_duration_us":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Duration Us"},"covered_us":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Covered Us"},"unattributed_us":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Unattributed Us"},"overlap_us":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Overlap Us"},"clock_quality":{"type":"string","title":"Clock Quality","default":"historical_wall_intervals"},"measured_coverage_complete":{"type":"boolean","title":"Measured Coverage Complete","default":false}},"type":"object","required":["parent_duration_ms","covered_ms","coverage_pct","unattributed_ms","overlap_ms","async_ms","completeness"],"title":"TraceCoverage"},"TraceNode":{"properties":{"kind":{"type":"string","title":"Kind","default":"unknown"},"action":{"type":"string","title":"Action","default":"Detailed action evidence unavailable."},"outcome_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outcome Summary"},"ai_use":{"type":"string","title":"Ai Use","default":"unknown"},"ai_evidence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ai Evidence"},"timing":{"$ref":"#/components/schemas/StepTiming"},"charge":{"$ref":"#/components/schemas/StepCharge"},"model_run_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Run Id"},"tool_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Call Id"},"span_id":{"type":"string","title":"Span Id"},"parent_span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Span Id"},"trace_id":{"type":"string","title":"Trace Id"},"category":{"type":"string","title":"Category"},"operation":{"type":"string","title":"Operation"},"label":{"type":"string","title":"Label"},"duration_ms":{"type":"integer","title":"Duration Ms"},"percent_of_parent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Percent Of Parent"},"cost_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cost Usd"},"status":{"type":"string","title":"Status"},"relationship":{"type":"string","title":"Relationship"},"evidence":{"type":"string","title":"Evidence"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"ended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ended At"},"coverage":{"$ref":"#/components/schemas/TraceCoverage"},"attributes":{"additionalProperties":true,"type":"object","title":"Attributes"},"children":{"items":{"$ref":"#/components/schemas/TraceNode"},"type":"array","title":"Children"}},"type":"object","required":["span_id","parent_span_id","trace_id","category","operation","label","duration_ms","percent_of_parent","cost_usd","status","relationship","evidence","started_at","ended_at","coverage"],"title":"TraceNode"},"TraceTree":{"properties":{"trace_id":{"type":"string","title":"Trace Id"},"schema_version":{"type":"string","title":"Schema Version"},"integrity_status":{"type":"string","title":"Integrity Status"},"issues":{"items":{"type":"string"},"type":"array","title":"Issues"},"root":{"$ref":"#/components/schemas/TraceNode"},"detached_nodes":{"items":{"$ref":"#/components/schemas/TraceNode"},"type":"array","title":"Detached Nodes"},"recorded_span_count":{"type":"integer","title":"Recorded Span Count","default":0}},"type":"object","required":["trace_id","schema_version","integrity_status","issues","root"],"title":"TraceTree"},"TrackRecordOut":{"properties":{"risk_class":{"type":"string","title":"Risk Class"},"verified_count":{"type":"integer","title":"Verified Count"},"did_not_hold_count":{"type":"integer","title":"Did Not Hold Count"},"unattended":{"type":"boolean","title":"Unattended"}},"type":"object","required":["risk_class","verified_count","did_not_hold_count","unattended"],"title":"TrackRecordOut"},"TrainingReceiptCard":{"properties":{"tool_name":{"type":"string","title":"Tool Name"},"operation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operation Id"},"source_message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Message Id"},"surface":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Surface"},"actor_identity_id":{"type":"string","title":"Actor Identity Id"},"actor_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Display Name"},"teacher_identity_id":{"type":"string","title":"Teacher Identity Id"},"teacher_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Teacher Display Name"},"target_identity_id":{"type":"string","title":"Target Identity Id"},"target_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Display Name"},"destination":{"type":"string","enum":["shared","private","none"],"title":"Destination"},"destination_library_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Destination Library Id"},"status":{"type":"string","title":"Status"},"write_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Write Status"},"document_count":{"type":"integer","title":"Document Count","default":0},"mind_status":{"type":"string","title":"Mind Status"},"source_kind":{"type":"string","enum":["text","website"],"title":"Source Kind"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"reason_codes":{"items":{"type":"string"},"type":"array","title":"Reason Codes"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"},"imported_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Imported Count"},"skipped_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Skipped Count"},"failed_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Failed Count"},"remaining_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Remaining Count"},"generated_summary":{"type":"boolean","title":"Generated Summary","default":false}},"type":"object","required":["tool_name","actor_identity_id","teacher_identity_id","target_identity_id","destination","status","mind_status","source_kind"],"title":"TrainingReceiptCard","description":"Attributed system UI for one owner-authorized training write (TOS-4503).\n\nRendered as its own labelled block under the message, never merged into the\nagent's prose. ``teacher`` and ``target`` are separate fields because on the\nconcierge surface they differ (thinqOS Help teaching another agent) and a\nreader could not otherwise tell who was being taught. ``destination`` is\nread from the folder the documents actually landed in, so \"shared\" is a\nfinding rather than a restatement of what was requested."},"TransferDomainRequest":{"properties":{"organization_id":{"type":"string","format":"uuid","title":"Organization Id","description":"The id of the organization that will own the folder. You must be an owner or admin of it."}},"type":"object","required":["organization_id"],"title":"TransferDomainRequest","description":"TOS-6927: hand a top-level folder and its subfolders to an organization."},"TransferMonitorSettingsPatch":{"properties":{"values":{"additionalProperties":{"anyOf":[{"type":"number"},{"type":"integer"}]},"type":"object","title":"Values","description":"Setting key to its new value. Only the keys listed by GET may be set."}},"additionalProperties":false,"type":"object","required":["values"],"title":"TransferMonitorSettingsPatch"},"TransferRequest":{"properties":{"source_identity_id":{"type":"string","format":"uuid","title":"Source Identity Id","description":"Wallet the credit leaves. Must be you, an identity you actively control, or any identity if you are a platform admin."},"dest_identity_id":{"type":"string","format":"uuid","title":"Dest Identity Id","description":"Wallet the credit lands in."},"amount_usd":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string"}],"title":"Amount Usd","description":"Amount to move, in USD."},"idempotency_key":{"type":"string","maxLength":200,"minLength":8,"title":"Idempotency Key","description":"Client-generated key; replaying it returns the original transfer."},"note":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Note"}},"type":"object","required":["source_identity_id","dest_identity_id","amount_usd","idempotency_key"],"title":"TransferRequest","description":"Move existing credit from one identity's wallet to another's (TOS-2640 P1)."},"TransferReversalRequest":{"properties":{"reason":{"type":"string","maxLength":500,"minLength":1,"title":"Reason","description":"Why this transfer is being reversed. Recorded on the reversal row."}},"type":"object","required":["reason"],"title":"TransferReversalRequest"},"TransferSettingsPatch":{"properties":{"values":{"additionalProperties":{"anyOf":[{"type":"number"},{"type":"integer"}]},"type":"object","title":"Values","description":"Setting key to its new value. Only the keys listed by GET may be set."},"outbound_allowed_countries":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Outbound Allowed Countries","description":"ISO 3166-1 alpha-2 codes. Empty list means unrestricted."}},"additionalProperties":false,"type":"object","title":"TransferSettingsPatch"},"TrialConfigPatch":{"properties":{"default_trial_grant_usd":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Default Trial Grant Usd"},"default_trial_duration_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Default Trial Duration Days"},"trial_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Trial Enabled"},"max_per_call_usd":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Max Per Call Usd"},"per_identity_rate_limit_per_min":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Per Identity Rate Limit Per Min"},"one_trial_per_identity":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"One Trial Per Identity"},"warn_days_before_expiry":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Warn Days Before Expiry"},"warn_below_usd":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string"},{"type":"null"}],"title":"Warn Below Usd"}},"type":"object","title":"TrialConfigPatch"},"TrialOffer":{"properties":{"amount_usd":{"type":"number","title":"Amount Usd"},"duration_days":{"type":"integer","title":"Duration Days"}},"type":"object","required":["amount_usd","duration_days"],"title":"TrialOffer","description":"What a new account starts with, read from ``platform_trial_config`` (TOS-7368)."},"TriggerRunRequest":{"properties":{"agent_identity_id":{"type":"string","title":"Agent Identity Id"},"probe_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Probe Ids"}},"type":"object","required":["agent_identity_id"],"title":"TriggerRunRequest"},"TurnBody":{"properties":{"message":{"type":"string","maxLength":4000,"minLength":1,"title":"Message"},"page_path":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Page Path"},"page_title":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Page Title"}},"additionalProperties":false,"type":"object","required":["message"],"title":"TurnBody"},"TurnDurationStatsResponse":{"properties":{"agent_id":{"type":"string","format":"uuid","title":"Agent Id"},"capability":{"type":"string","title":"Capability"},"p90_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"P90 Ms"},"sample_size":{"type":"integer","title":"Sample Size"},"window_days":{"type":"integer","title":"Window Days"},"min_sample_size":{"type":"integer","title":"Min Sample Size"},"sufficient_data":{"type":"boolean","title":"Sufficient Data"}},"type":"object","required":["agent_id","capability","p90_ms","sample_size","window_days","min_sample_size","sufficient_data"],"title":"TurnDurationStatsResponse","description":"TOS-2629 Phase 4: advisory input to the composer's \"Run as task\" nudge.\n\nDeliberately just a measurement - the frontend augments its existing\ncontent-shaped regex heuristic with this signal but must never auto-flip\nthe task toggle from it (see ``web/src/pages/chats/chatTasks.ts``\n``shouldSuggestDurableTask`` and ``MessageComposer.tsx``'s\n``taskSuggested`` contract)."},"TurnInboxRequest":{"properties":{"content":{"type":"string","maxLength":100000,"minLength":1,"title":"Content"},"idempotency_key":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Idempotency Key"},"reply_to_message_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Reply To Message Id"}},"type":"object","required":["content"],"title":"TurnInboxRequest","description":"Body for ``POST /{chat_id}/turn-inbox`` (TOS-7144).\n\nA message sent while this chat has a turn running. ``idempotency_key`` is\nthe client's key for the message, so a retried POST persists it once."},"TurnInboxResponse":{"properties":{"disposition":{"type":"string","enum":["appended","proposed","ignored","replace","stopped","duplicate","no_turn"],"title":"Disposition"},"user_message_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"User Message Id"}},"type":"object","required":["disposition"],"title":"TurnInboxResponse","description":"What happened to a mid-turn message (TOS-7144).\n\n``appended``, ``proposed``, ``ignored`` and ``stopped`` are final and the\nmessage is in the timeline (``user_message_id``). ``duplicate`` persisted\nnothing: the same message from the same person already reached this turn.\n``replace`` (the turn's owner redirected it) and ``no_turn`` (nothing is\nrunning any more) persisted nothing: the client sends the message the\nordinary way, steering first for ``replace``."},"TurnResponse":{"properties":{"visitor_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visitor Token"},"reply":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reply"},"chat_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chat Id"},"rejected_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rejected Reason"}},"type":"object","required":["visitor_token","reply","chat_id"],"title":"TurnResponse"},"UUIDRowKey":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"}},"additionalProperties":false,"type":"object","required":["id"],"title":"UUIDRowKey"},"UiActionArtifact":{"properties":{"chart_type":{"type":"string","const":"ui_action","title":"Chart Type"},"message_id":{"type":"string","format":"uuid","title":"Message Id"},"action_id":{"type":"string","title":"Action Id"},"label":{"type":"string","title":"Label"},"action":{"oneOf":[{"$ref":"#/components/schemas/UiReplyAction"},{"$ref":"#/components/schemas/UiToolAction"}],"title":"Action","discriminator":{"propertyName":"type","mapping":{"reply":"#/components/schemas/UiReplyAction","tool":"#/components/schemas/UiToolAction"}}}},"type":"object","required":["chart_type","message_id","action_id","label","action"],"title":"UiActionArtifact","description":"A press of a panel button, stored on the pressing message (TOS-2341 Phase 2).\n\nBuilt server-side from the stored panel, so ``label`` and ``action`` are\nexactly what the button said, whoever pressed it."},"UiActionPress":{"properties":{"message_id":{"type":"string","format":"uuid","title":"Message Id"},"action_id":{"type":"string","maxLength":64,"minLength":1,"title":"Action Id"}},"type":"object","required":["message_id","action_id"],"title":"UiActionPress","description":"TOS-2341 Phase 2: this message is a press of a UI panel button."},"UiArtifact":{"properties":{"chart_type":{"type":"string","const":"ui","title":"Chart Type"},"payload":{"$ref":"#/components/schemas/UiPayload"}},"type":"object","required":["chart_type","payload"],"title":"UiArtifact","description":"A declarative UI panel an agent sent with emit_ui (TOS-2341). The payload\nreuses the tool's own strict model, so the API can never emit a block the\ntool would have rejected."},"UiBadge":{"properties":{"label":{"type":"string","maxLength":40,"minLength":1,"title":"Label"},"tone":{"type":"string","enum":["neutral","green","amber","red","blue"],"title":"Tone","default":"neutral"}},"additionalProperties":false,"type":"object","required":["label"],"title":"UiBadge"},"UiButton":{"properties":{"label":{"type":"string","maxLength":60,"minLength":1,"title":"Label"},"style":{"type":"string","enum":["primary","secondary"],"title":"Style","default":"secondary"},"action":{"oneOf":[{"$ref":"#/components/schemas/UiReplyAction"},{"$ref":"#/components/schemas/UiLinkAction"},{"$ref":"#/components/schemas/UiToolAction"}],"title":"Action","discriminator":{"propertyName":"type","mapping":{"link":"#/components/schemas/UiLinkAction","reply":"#/components/schemas/UiReplyAction","tool":"#/components/schemas/UiToolAction"}}}},"additionalProperties":false,"type":"object","required":["label","action"],"title":"UiButton"},"UiChecklistItem":{"properties":{"label":{"type":"string","maxLength":300,"minLength":1,"title":"Label"},"checked":{"type":"boolean","title":"Checked","default":false}},"additionalProperties":false,"type":"object","required":["label"],"title":"UiChecklistItem"},"UiLinkAction":{"properties":{"type":{"type":"string","const":"link","title":"Type"},"url":{"type":"string","maxLength":2000,"minLength":1,"title":"Url"}},"additionalProperties":false,"type":"object","required":["type","url"],"title":"UiLinkAction","description":"Open an https URL in a new tab."},"UiListItem":{"properties":{"title":{"type":"string","maxLength":120,"minLength":1,"title":"Title"},"subtitle":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Subtitle"},"badge":{"anyOf":[{"$ref":"#/components/schemas/UiBadge"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["title"],"title":"UiListItem"},"UiMetric":{"properties":{"label":{"type":"string","maxLength":60,"minLength":1,"title":"Label"},"value":{"type":"string","maxLength":40,"minLength":1,"title":"Value"},"delta":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Delta"},"tone":{"type":"string","enum":["neutral","green","amber","red","blue"],"title":"Tone","default":"neutral"}},"additionalProperties":false,"type":"object","required":["label","value"],"title":"UiMetric"},"UiPayload":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Title"},"blocks":{"items":{"oneOf":[{"$ref":"#/components/schemas/HeadingBlock"},{"$ref":"#/components/schemas/TextBlock"},{"$ref":"#/components/schemas/CardBlock"},{"$ref":"#/components/schemas/ListBlock"},{"$ref":"#/components/schemas/ChecklistBlock"},{"$ref":"#/components/schemas/StepsBlock"},{"$ref":"#/components/schemas/MetricsBlock"},{"$ref":"#/components/schemas/ActionsBlock"}],"discriminator":{"propertyName":"type","mapping":{"actions":"#/components/schemas/ActionsBlock","card":"#/components/schemas/CardBlock","checklist":"#/components/schemas/ChecklistBlock","heading":"#/components/schemas/HeadingBlock","list":"#/components/schemas/ListBlock","metrics":"#/components/schemas/MetricsBlock","steps":"#/components/schemas/StepsBlock","text":"#/components/schemas/TextBlock"}}},"type":"array","maxItems":20,"minItems":1,"title":"Blocks"}},"additionalProperties":false,"type":"object","required":["blocks"],"title":"UiPayload","description":"The whole ``emit_ui`` argument object, persisted verbatim as the payload."},"UiReplyAction":{"properties":{"type":{"type":"string","const":"reply","title":"Type"},"text":{"type":"string","maxLength":300,"minLength":1,"title":"Text"}},"additionalProperties":false,"type":"object","required":["type","text"],"title":"UiReplyAction","description":"Send ``text`` as the viewer's own chat message."},"UiStateEntry":{"properties":{"checked":{"type":"boolean","title":"Checked"},"by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"By"},"by_name":{"type":"string","title":"By Name"},"at":{"type":"string","title":"At"}},"type":"object","required":["checked","by_name","at"],"title":"UiStateEntry","description":"One interactive checklist item's shared state (TOS-2341 Phase 3)."},"UiStateRequest":{"properties":{"item_id":{"type":"string","maxLength":64,"minLength":1,"title":"Item Id"},"checked":{"type":"boolean","title":"Checked"}},"type":"object","required":["item_id","checked"],"title":"UiStateRequest","description":"TOS-2341 Phase 3: tick or untick one interactive checklist item."},"UiStep":{"properties":{"label":{"type":"string","maxLength":120,"minLength":1,"title":"Label"},"status":{"type":"string","enum":["done","current","todo"],"title":"Status","default":"todo"},"detail":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Detail"}},"additionalProperties":false,"type":"object","required":["label"],"title":"UiStep"},"UiToolAction":{"properties":{"type":{"type":"string","const":"tool","title":"Type"},"name":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-]+$","title":"Name"},"arguments":{"additionalProperties":true,"type":"object","title":"Arguments"}},"additionalProperties":false,"type":"object","required":["type","name"],"title":"UiToolAction","description":"Ask the panel's author agent to call ``name`` with ``arguments``.\n\nPressing it executes nothing. It records the press on the pressing message,\nand the agent that authored the panel then makes the call itself, under its\nown tool permissions and approval gates (TOS-2341 Phase 2). A button can\ntherefore never reach a tool its author could not already call, and a\nperson clicking it grants no new authority."},"UndoCaptureRequest":{"properties":{"token":{"type":"string","maxLength":512,"minLength":1,"title":"Token"}},"type":"object","required":["token"],"title":"UndoCaptureRequest"},"UndoCaptureResponse":{"properties":{"credential_id":{"type":"string","format":"uuid","title":"Credential Id"},"ref_kind":{"type":"string","title":"Ref Kind"},"ref_id":{"type":"string","format":"uuid","title":"Ref Id"},"restored":{"type":"boolean","title":"Restored"},"credential_retired":{"type":"boolean","title":"Credential Retired"},"remaining_references":{"type":"integer","title":"Remaining References"}},"type":"object","required":["credential_id","ref_kind","ref_id","restored","credential_retired","remaining_references"],"title":"UndoCaptureResponse"},"UndoCleanupBatchIn":{"properties":{"positions":{"anyOf":[{"items":{"type":"integer"},"type":"array","maxItems":500},{"type":"null"}],"title":"Positions"}},"additionalProperties":false,"type":"object","title":"UndoCleanupBatchIn"},"UninstallBody":{"properties":{"install_kind":{"type":"string","title":"Install Kind"},"install_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Install Id"}},"type":"object","required":["install_kind"],"title":"UninstallBody"},"UnreviewedInformationScope":{"type":"string","enum":["limited","full"],"title":"UnreviewedInformationScope"},"UnseenReleaseIdsOut":{"properties":{"ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Ids"}},"type":"object","required":["ids"],"title":"UnseenReleaseIdsOut"},"UpdateAcceptIn":{"properties":{"version_id":{"type":"string","format":"uuid","title":"Version Id"},"permissions":{"items":{"type":"string"},"type":"array","maxItems":64,"title":"Permissions"}},"type":"object","required":["version_id","permissions"],"title":"UpdateAcceptIn"},"UpdateAcceptOut":{"properties":{"status":{"type":"string","enum":["saved","needs_provider"],"title":"Status"},"approved":{"items":{"type":"string"},"type":"array","title":"Approved"},"permissions":{"items":{"type":"string"},"type":"array","title":"Permissions"}},"type":"object","required":["status"],"title":"UpdateAcceptOut","description":"``saved``: approved and re-pinned now. ``needs_provider``: nothing was\nwritten; the chosen permissions need a new grant, so the page starts the\nprovider sign-in with ``upgrade_version_id`` and these ``permissions``."},"UpdateActionResult":{"properties":{"request":{"$ref":"#/components/schemas/UpdateRequestView"},"coalesced":{"type":"boolean","title":"Coalesced"},"wakeup_requested":{"type":"boolean","title":"Wakeup Requested"}},"type":"object","required":["request","coalesced","wakeup_requested"],"title":"UpdateActionResult"},"UpdateAgentTriggerRequest":{"properties":{"instruction":{"anyOf":[{"type":"string","maxLength":8000,"minLength":1},{"type":"null"}],"title":"Instruction"},"run_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Run At"},"interval_minutes":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Interval Minutes"},"cron_expr":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Cron Expr"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"action_type":{"anyOf":[{"type":"string","const":"chat"},{"type":"null"}],"title":"Action Type"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"context_mode":{"anyOf":[{"type":"string","enum":["adaptive","literal"]},{"type":"null"}],"title":"Context Mode"}},"type":"object","title":"UpdateAgentTriggerRequest"},"UpdateByoEnvironmentDsnIn":{"properties":{"admin_dsn":{"type":"string","title":"Admin Dsn"}},"type":"object","required":["admin_dsn"],"title":"UpdateByoEnvironmentDsnIn"},"UpdateConnectionDefaultsRequest":{"properties":{"show_status":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Show Status"},"read_receipts":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Read Receipts"},"typing_indicators":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Typing Indicators"}},"type":"object","title":"UpdateConnectionDefaultsRequest"},"UpdateDiscoverabilityRequest":{"properties":{"discoverable_by_username":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Discoverable By Username"},"discoverable_by_email":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Discoverable By Email"},"auto_accept":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Accept"},"connection_policy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connection Policy"}},"type":"object","title":"UpdateDiscoverabilityRequest"},"UpdateDocumentContentRequest":{"properties":{"content":{"type":"string","title":"Content"},"expected_content_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Content Hash"}},"type":"object","required":["content"],"title":"UpdateDocumentContentRequest"},"UpdateEnvironmentIn":{"properties":{"admin_dsn":{"type":"string","title":"Admin Dsn"}},"type":"object","required":["admin_dsn"],"title":"UpdateEnvironmentIn"},"UpdateEvent":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"decision":{"type":"string","title":"Decision"},"bundle_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bundle Version"},"git_sha":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Git Sha"},"channel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel"},"phase":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phase"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms"},"migrations_applied":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Migrations Applied"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","decision","bundle_version","git_sha","channel","phase","duration_ms","migrations_applied","detail","created_at"],"title":"UpdateEvent"},"UpdateFacilitationRequest":{"properties":{"mode":{"type":"string","enum":["natural","facilitated"],"title":"Mode"},"facilitator_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Facilitator Identity Id"},"alternate_facilitator_identity_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Alternate Facilitator Identity Ids"}},"type":"object","required":["mode"],"title":"UpdateFacilitationRequest"},"UpdateLifecycleProfileRequest":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Description"},"status":{"anyOf":[{"type":"string","enum":["published","archived"]},{"type":"null"}],"title":"Status"}},"type":"object","title":"UpdateLifecycleProfileRequest"},"UpdateMindsetInfoRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"listed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Listed"}},"type":"object","title":"UpdateMindsetInfoRequest"},"UpdateModelStatusRequest":{"properties":{"status":{"type":"string","enum":["active","previously_used","never_used"],"title":"Status"}},"type":"object","required":["status"],"title":"UpdateModelStatusRequest"},"UpdateMySpendLimitRequest":{"properties":{"max_chat_spend_usd":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Max Chat Spend Usd"}},"type":"object","title":"UpdateMySpendLimitRequest","description":"Body for `PUT /api/chats/{chat_id}/my-spend-limit` (TOS-2393).\n\nNo payer field, ever - the write always targets the AUTHENTICATED-OR-\nIMPERSONATED caller's own identity (`identity.id`, resolved server-side\nfrom `get_identity`), and impersonation is gated by\n`check_can_impersonate` (see `set_my_chat_spend_limit`'s docstring for\nwhy this is an authorization claim, not an impossibility claim - a\nplatform admin or agent owner CAN write a different person's/agent's key\nvia `X-Impersonate-Identity-Id`, authorized, not absent).\n\nA `null` value does NOT clear the caller's own cap - it sets an explicit,\ndurable \"no cap\" that beats the legacy room-wide scalar fallback (review\nfinding #2). Use `DELETE` on the same route to remove the entry entirely\nand revert to \"no preference stated\" - the two are deliberately NOT\nequivalent any more."},"UpdateOfferOut":{"properties":{"available":{"type":"boolean","title":"Available"},"version_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Version Id"},"version_no":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Version No"},"adds":{"items":{"$ref":"#/components/schemas/ConsentPermissionOut"},"type":"array","title":"Adds"},"options":{"anyOf":[{"$ref":"#/components/schemas/ConsentOptionsOut"},{"type":"null"}]}},"type":"object","required":["available"],"title":"UpdateOfferOut","description":"A connection's pending connector update (TOS-6949, TOS-6919 Target model 4).\n\n``available`` false: nothing to ask (already current, no new permission, or\nthe connection has no recorded approval and so is not gated). Otherwise\n``adds`` names the new permissions and ``options`` is exactly what the\nconsent step renders: the offered version's permissions, with ``current``\nholding what the connection has now and never anything new."},"UpdateOrganizationConversationConfigIn":{"properties":{"mindset_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Mindset Id"},"reply_workflow":{"anyOf":[{"type":"string","enum":["manual","send"]},{"type":"null"}],"title":"Reply Workflow"},"confirm_reply_workflow":{"type":"boolean","title":"Confirm Reply Workflow","default":false},"expected_updated_at":{"type":"string","format":"date-time","title":"Expected Updated At"}},"type":"object","required":["expected_updated_at"],"title":"UpdateOrganizationConversationConfigIn"},"UpdateOrganizationIn":{"properties":{"display_name":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Display Name"},"discoverable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Discoverable"}},"type":"object","title":"UpdateOrganizationIn","description":"Rename an organization, or list it in the directory (TOS-4113 Lane A)."},"UpdatePolicyUpdate":{"properties":{"auto_update_enabled":{"type":"boolean","title":"Auto Update Enabled"},"channel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel"},"check_interval_minutes":{"type":"integer","title":"Check Interval Minutes","default":60},"window_start_hour":{"anyOf":[{"type":"integer","maximum":23.0,"minimum":0.0},{"type":"null"}],"title":"Window Start Hour"},"window_end_hour":{"anyOf":[{"type":"integer","maximum":23.0,"minimum":0.0},{"type":"null"}],"title":"Window End Hour"},"window_timezone":{"type":"string","maxLength":100,"minLength":1,"title":"Window Timezone","default":"UTC"}},"type":"object","required":["auto_update_enabled","channel"],"title":"UpdatePolicyUpdate"},"UpdatePolicyView":{"properties":{"auto_update_enabled":{"type":"boolean","title":"Auto Update Enabled"},"channel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel"},"check_interval_minutes":{"type":"integer","title":"Check Interval Minutes"},"window_start_hour":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Window Start Hour"},"window_end_hour":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Window End Hour"},"window_timezone":{"type":"string","title":"Window Timezone"},"last_read_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Read At"},"last_checked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Checked At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["auto_update_enabled","channel","check_interval_minutes","window_start_hour","window_end_hour","window_timezone","last_read_at","last_checked_at","updated_at","updated_by"],"title":"UpdatePolicyView","description":"The operator's settings, plus the evidence that they are in effect.\n\n``last_read_at`` is the honest part. It is when the updater last actually\nread this policy. Absent means no update run has consulted it yet, and the\nscreen says so rather than implying the switch is doing something."},"UpdatePreferencesRequest":{"properties":{"tts_voice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tts Voice"},"tts_voice_backup":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tts Voice Backup"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"default_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Mode"},"notification_style":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notification Style"},"notification_device":{"anyOf":[{"additionalProperties":{"type":"boolean"},"type":"object"},{"type":"null"}],"title":"Notification Device"},"subconscious_agent_mode_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Subconscious Agent Mode Expires At"},"subconscious_agent_auto_reply_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subconscious Agent Auto Reply Limit"},"subconscious_agent_auto_reply_window_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subconscious Agent Auto Reply Window Seconds"},"dock_page_capture":{"anyOf":[{"type":"string","enum":["ask","always","never"]},{"type":"null"}],"title":"Dock Page Capture"},"disclose_capabilities":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disclose Capabilities"},"disclose_reputation":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disclose Reputation"},"request_resolution_updates":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Request Resolution Updates"},"decision_digest_email":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Decision Digest Email"},"appearance_mode":{"anyOf":[{"type":"string","enum":["system","dark","light"]},{"type":"null"}],"title":"Appearance Mode"}},"type":"object","title":"UpdatePreferencesRequest"},"UpdateRequestView":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"mode":{"type":"string","title":"Mode"},"state":{"type":"string","title":"State"},"channel":{"type":"string","title":"Channel"},"requested_at":{"type":"string","format":"date-time","title":"Requested At"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"finished_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Finished At"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"}},"type":"object","required":["id","mode","state","channel","requested_at","started_at","finished_at","detail"],"title":"UpdateRequestView"},"UpdateRoomRequest":{"properties":{"title":{"type":"string","maxLength":200,"minLength":1,"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"}},"type":"object","required":["title"],"title":"UpdateRoomRequest"},"UpdateRuntimeEnvironmentRequest":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Name"},"environment_ref":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Environment Ref"},"status":{"anyOf":[{"type":"string","enum":["enabled","disabled","archived"]},{"type":"null"}],"title":"Status"},"registration_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Registration Id"},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config"},"policy_defaults":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Policy Defaults"},"setup_recipe":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Setup Recipe"},"repository":{"anyOf":[{"$ref":"#/components/schemas/DevelopmentRepositoryRequest"},{"type":"null"}]}},"additionalProperties":false,"type":"object","title":"UpdateRuntimeEnvironmentRequest"},"UpdateRuntimePolicyRequest":{"properties":{"max_responders":{"type":"integer","maximum":3.0,"minimum":0.0,"title":"Max Responders","default":3},"max_chain_depth":{"type":"integer","maximum":3.0,"minimum":0.0,"title":"Max Chain Depth","default":2},"top_k_claimants":{"type":"integer","maximum":10.0,"minimum":0.0,"title":"Top K Claimants","default":5},"max_concurrent_generations":{"type":"integer","maximum":3.0,"minimum":0.0,"title":"Max Concurrent Generations","default":3},"max_concurrent_generations_per_provider":{"type":"integer","maximum":3.0,"minimum":0.0,"title":"Max Concurrent Generations Per Provider","default":3},"max_root_container_spend_usd":{"anyOf":[{"type":"number","maximum":500.0,"minimum":0.0},{"type":"null"}],"title":"Max Root Container Spend Usd"}},"type":"object","title":"UpdateRuntimePolicyRequest","description":"Room-wide fan-out policy, plus the tree-wide container spend ceiling.\n\nTOS-2393: deliberately carries NO per-chat/per-payer spend field. It used\nto accept `max_chat_spend_usd`, but that let any caller of this\ngeneral-purpose endpoint silently rewrite the room-wide spend figure as a\nside effect of changing responder fan-out. Per-payer spend caps now have\ntheir own dedicated, payer-scoped write path -\n`PUT/DELETE /api/chats/{chat_id}/my-spend-limit`\n(`UpdateMySpendLimitRequest` below) - which is the ONLY way to set that\nfigure. `ChatService.update_runtime_policy` carries the per-payer map\nthrough from existing stored state unconditionally, so an extra\n`max_chat_spend_usd` key in a stale client's request body is simply\nignored (Pydantic's default `extra=\"ignore\"`), not silently destructive.\n\nThat silence has a cost worth knowing about: because this body is\n`extra=\"ignore\"` rather than `extra=\"forbid\"`, a caller still sending\n`max_chat_spend_usd` gets a 200 and no effect. That is exactly how the\nproduction room-UX smoke broke in TOS-2393 - it PATCHed a `0` cap here to\nforce a blocked turn, the key was dropped, and the room ran uncapped.\n`test_smoke_runtime_policy_matches_rest_contract`\n(backend/tests/test_agent_config_contract_parity.py) now fails the PR\nthat removes a field from this body while a hard-coded payload still\nsends it. TOS-2394 removed the legacy scalar entirely, so there is no\nlonger any stored figure for this endpoint to carry or to wipe.\n\n`max_root_container_spend_usd` is a DIFFERENT figure - the tree-wide\ncontainer ceiling, not the per-chat cap - and review finding #3 caught\nthat an earlier pass removed it here with no replacement write path\nanywhere, freezing every chat's ceiling at whatever it already held. It\nis intentionally OPTIONAL (`None` default) rather than carrying the\nalways-defaulted `Field(default=...)` shape the fan-out fields use below:\n`update_runtime_policy` only overwrites the stored ceiling when this key\nwas actually present in the request body (checked via\n`body.model_fields_set`, not `is not None` - the latter can't tell\n\"omitted\" from \"explicitly set to null to clear it\"), so a client that\nonly changes fan-out settings and never mentions this field can't wipe it\nby omission - the same failure mode the fan-out-only design above exists\nto prevent for the chat-level scalar."},"UpdateSettingsBody":{"properties":{"show_status":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Show Status"},"read_receipts":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Read Receipts"},"typing_indicators":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Typing Indicators"}},"type":"object","title":"UpdateSettingsBody"},"UpdateSkillBody":{"properties":{"skill_md":{"type":"string","title":"Skill Md"}},"type":"object","required":["skill_md"],"title":"UpdateSkillBody"},"UpdateSkillSourceBody":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"kind":{"anyOf":[{"type":"string","enum":["github_repo","json_index","skills_sh"]},{"type":"null"}],"title":"Kind"},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config"},"trust_default":{"anyOf":[{"type":"string","enum":["none","allowed_tools_review","verified"]},{"type":"null"}],"title":"Trust Default"},"priority":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Priority"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"}},"type":"object","title":"UpdateSkillSourceBody"},"UpdateSyncLinkRequest":{"properties":{"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["enabled"],"title":"UpdateSyncLinkRequest"},"UpdateTitleRequest":{"properties":{"title":{"type":"string","title":"Title"}},"type":"object","required":["title"],"title":"UpdateTitleRequest"},"UpdatesOverview":{"properties":{"install":{"$ref":"#/components/schemas/InstallState"},"activation":{"$ref":"#/components/schemas/ActivationView"},"release_status":{"$ref":"#/components/schemas/ReleaseStatusView"},"viewer_timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Viewer Timezone"},"policy":{"$ref":"#/components/schemas/UpdatePolicyView"},"availability":{"items":{"$ref":"#/components/schemas/AvailabilityView"},"type":"array","title":"Availability"},"requests":{"items":{"$ref":"#/components/schemas/UpdateRequestView"},"type":"array","title":"Requests"},"events":{"items":{"$ref":"#/components/schemas/UpdateEvent"},"type":"array","title":"Events"},"checkins":{"items":{"$ref":"#/components/schemas/CheckinView"},"type":"array","title":"Checkins"}},"type":"object","required":["install","activation","release_status","viewer_timezone","policy","availability","requests","events","checkins"],"title":"UpdatesOverview"},"UploadLibraryMediaRequest":{"properties":{"library_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Library Id"},"filename":{"type":"string","title":"Filename"},"mime_type":{"type":"string","title":"Mime Type"},"content_base64":{"type":"string","title":"Content Base64"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}},"type":"object","required":["filename","mime_type","content_base64"],"title":"UploadLibraryMediaRequest"},"UpsertAgentRuntimeBindingRequest":{"properties":{"runtime_kind":{"type":"string","maxLength":80,"minLength":1,"title":"Runtime Kind"},"environment_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Environment Id"},"status":{"type":"string","enum":["enabled","disabled"],"title":"Status","default":"enabled"},"is_default":{"type":"boolean","title":"Is Default","default":false},"model_policy":{"additionalProperties":true,"type":"object","title":"Model Policy"},"policy_overrides":{"additionalProperties":true,"type":"object","title":"Policy Overrides"}},"type":"object","required":["runtime_kind"],"title":"UpsertAgentRuntimeBindingRequest"},"UpstreamStatusBatchIn":{"properties":{"skill_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Skill Ids"}},"type":"object","required":["skill_ids"],"title":"UpstreamStatusBatchIn","description":"Request body for the batch upstream-status endpoint (Sentry FE-28).\n\nThe skills catalog used to fire one ``GET /{id}/upstream-status`` per\nregistry-installed skill on page load (an N+1 the browser flagged). It now\nsends every id in one POST."},"UpstreamStatusBatchOut":{"properties":{"statuses":{"additionalProperties":{"$ref":"#/components/schemas/UpstreamStatusOut"},"type":"object","title":"Statuses"}},"type":"object","required":["statuses"],"title":"UpstreamStatusBatchOut","description":"``{skill_id: UpstreamStatusOut}``, keyed by stringified UUID.\n\nSkills the caller can't read, that don't exist, or whose upstream fetch\nfails are omitted - the badge is a non-blocking hint, so a missing entry is\ntreated as \"no update\" by the client."},"UpstreamStatusOut":{"properties":{"state":{"type":"string","enum":["up_to_date","update_available","source_removed","not_a_registry_install"],"title":"State"},"current_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Hash"},"upstream_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Upstream Hash"},"source_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Slug"},"skill_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Skill Slug"}},"type":"object","required":["state"],"title":"UpstreamStatusOut","description":"Drift state for a registry-installed skill (TOS-320).\n\n``state`` is one of:\n  - ``not_a_registry_install`` — ``imported_from`` is missing or not a\n    ``thinqos-source://`` URL. No upstream to compare against.\n  - ``source_removed`` — the registry source the skill came from no\n    longer exists or has been disabled.\n  - ``up_to_date`` — comparable SKILL.md content matches upstream.\n  - ``update_available`` — comparable SKILL.md content differs.\n\nThe single-skill endpoint compares the full rendered SKILL.md returned by\na live fetch. The batch endpoint compares the subset persisted by the\nsource-level catalog snapshot, so it can answer without remote N+1 calls."},"UserProviderHealthResponse":{"properties":{"overall":{"type":"string","enum":["green","yellow","red"],"title":"Overall"},"database_status":{"type":"string","enum":["healthy","degraded","unhealthy","unknown"],"title":"Database Status"},"platform":{"items":{"$ref":"#/components/schemas/PlatformProviderHealthItem"},"type":"array","title":"Platform"},"identity_keys":{"items":{"$ref":"#/components/schemas/ProviderHealthItem"},"type":"array","title":"Identity Keys"}},"type":"object","required":["overall","database_status","platform","identity_keys"],"title":"UserProviderHealthResponse"},"V2AboutEntityResponse":{"properties":{"mind_id":{"type":"string","format":"uuid","title":"Mind Id"},"entity_id":{"type":"string","format":"uuid","title":"Entity Id"},"beliefs":{"items":{"$ref":"#/components/schemas/V2BeliefAboutEntity"},"type":"array","title":"Beliefs"}},"type":"object","required":["mind_id","entity_id"],"title":"V2AboutEntityResponse","description":"Theory-of-mind view: what this Mind believes about the focus entity."},"V2AttentionCount":{"properties":{"unconfirmed":{"type":"integer","title":"Unconfirmed"},"conflicts":{"type":"integer","title":"Conflicts"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["unconfirmed","conflicts","total"],"title":"V2AttentionCount"},"V2BeliefAboutEntity":{"properties":{"evaluation_id":{"type":"string","format":"uuid","title":"Evaluation Id"},"proposition_id":{"type":"string","format":"uuid","title":"Proposition Id"},"summary":{"type":"string","title":"Summary"},"predicate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Predicate"},"object_entity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Object Entity Id"},"confidence":{"type":"number","title":"Confidence"},"salience":{"type":"number","title":"Salience"},"valence":{"type":"number","title":"Valence"},"arousal":{"type":"number","title":"Arousal"},"confirmed":{"type":"boolean","title":"Confirmed"},"protection_level":{"type":"string","enum":["none","seeded","user_confirmed","system_consolidated","system_stable","locked"],"title":"Protection Level"}},"type":"object","required":["evaluation_id","proposition_id","summary","predicate","object_entity_id","confidence","salience","valence","arousal","confirmed","protection_level"],"title":"V2BeliefAboutEntity","description":"One Mind's evaluation of a proposition whose subject is the focus entity.\n\nLean theory-of-mind row: the belief plus the affect/confidence shape of\nthe holding Mind's perspective on it. See spec section 8."},"V2BelieveRequest":{"properties":{"belief":{"type":"string","title":"Belief"},"confidence":{"type":"number","title":"Confidence","default":0.8}},"type":"object","required":["belief"],"title":"V2BelieveRequest"},"V2CapabilityRecommendation":{"properties":{"kind":{"type":"string","enum":["integration_add","skill_add","permission_review"],"title":"Kind"},"gap_class":{"type":"string","enum":["missing_tool","unconnected_account","denied_permission","transient_failure","insufficient_context"],"title":"Gap Class"},"target":{"type":"string","title":"Target"},"requested_outcome":{"type":"string","title":"Requested Outcome"},"verified_reason":{"type":"string","enum":["credential_not_working","registration_not_authorized","tool_not_offered","mcp_discovery_timed_out","no_upstream_server_responded"],"title":"Verified Reason"},"occurrence_count":{"type":"integer","title":"Occurrence Count"},"first_seen_at":{"type":"string","format":"date-time","title":"First Seen At"},"last_seen_at":{"type":"string","format":"date-time","title":"Last Seen At"},"evidence_chat_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Evidence Chat Id"}},"type":"object","required":["kind","gap_class","target","requested_outcome","verified_reason","occurrence_count","first_seen_at","last_seen_at","evidence_chat_id"],"title":"V2CapabilityRecommendation","description":"TOS-4575: one verified capability gap, promoted for the owner to decide on.\n\nBuilt from an ``agent_capability_gaps`` row that the turn pipeline recorded\nfrom application state the platform observed for itself, and that the\nsleep-cycle feedback stage then promoted. Nothing here is the model's\nopinion about its own capabilities, and nothing here is conversation text:\n``target`` is an integration alias or a registration name, and the evidence\nis a reference to a chat rather than a copy of one.\n\n``kind`` is a suggestion the owner may act on, never an applied change.\n``permission_review`` in particular is NOT a request to grant anything: a\ndenied permission is reported so the owner can look at it, and is never\nturned into an ``integration_add``."},"V2Conflict":{"properties":{"conflict_id":{"type":"string","format":"uuid","title":"Conflict Id"},"cause":{"type":"string","title":"Cause"},"a":{"anyOf":[{"$ref":"#/components/schemas/V2ConflictSide"},{"type":"null"}]},"b":{"anyOf":[{"$ref":"#/components/schemas/V2ConflictSide"},{"type":"null"}]},"urgency":{"type":"number","title":"Urgency","default":0.0},"proposition_a_provenance":{"anyOf":[{"$ref":"#/components/schemas/V2PropositionSourceChat"},{"type":"null"}]},"proposition_b_provenance":{"anyOf":[{"$ref":"#/components/schemas/V2PropositionSourceChat"},{"type":"null"}]}},"type":"object","required":["conflict_id","cause","a","b"],"title":"V2Conflict"},"V2ConflictSide":{"properties":{"proposition_id":{"type":"string","format":"uuid","title":"Proposition Id"},"evaluation_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Evaluation Id"},"summary":{"type":"string","title":"Summary"},"confidence":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Confidence"}},"type":"object","required":["proposition_id","evaluation_id","summary","confidence"],"title":"V2ConflictSide"},"V2ConsolidatedProposition":{"properties":{"proposition":{"$ref":"#/components/schemas/V2Proposition"},"supporting_evaluation_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Supporting Evaluation Ids"}},"type":"object","required":["proposition"],"title":"V2ConsolidatedProposition"},"V2ConsolidatedPropositionListResponse":{"properties":{"propositions":{"items":{"$ref":"#/components/schemas/V2ConsolidatedProposition"},"type":"array","title":"Propositions"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","title":"V2ConsolidatedPropositionListResponse","description":"A keyset-paginated page of consolidated propositions (TOS-3280).\n\nThis is the \"Needs You\" queue: it accumulates without bound for an\naccount that never visits the Journal to confirm or dismiss them.\n``next_cursor`` is ``None`` exactly when no older rows remain; there is no\nseparate ``truncated`` flag."},"V2ContentsColumnDefinition":{"properties":{"label":{"type":"string","title":"Label"},"meaning":{"type":"string","title":"Meaning"},"allowed":{"type":"string","title":"Allowed"},"how_set":{"type":"string","title":"How Set"},"values":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Values"},"thresholds":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"integer"},{"type":"number"}]},"type":"object"},{"type":"null"}],"title":"Thresholds"}},"type":"object","required":["label","meaning","allowed","how_set"],"title":"V2ContentsColumnDefinition","description":"One Contents column: its words and the rule inputs behind its values (TOS-7842)."},"V2ContentsDefinitions":{"properties":{"columns":{"additionalProperties":{"$ref":"#/components/schemas/V2ContentsColumnDefinition"},"type":"object","title":"Columns"},"fields":{"items":{"$ref":"#/components/schemas/V2VocabularyField"},"type":"array","title":"Fields"},"values":{"items":{"$ref":"#/components/schemas/V2VocabularyValue"},"type":"array","title":"Values"},"default_fields":{"items":{"type":"string"},"type":"array","title":"Default Fields"},"phone_fields":{"items":{"type":"string"},"type":"array","title":"Phone Fields"}},"type":"object","required":["columns"],"title":"V2ContentsDefinitions","description":"Keyed by ``V2MindItemRow`` field name, in table and CSV order.\n\n``columns`` is the original TOS-7842 definition set. ``fields`` and\n``values`` are the vocabulary registry (TOS-7884) and are additive."},"V2DocumentLink":{"properties":{"document_id":{"type":"string","format":"uuid","title":"Document Id"},"ref_kind":{"type":"string","enum":["theme","entity"],"title":"Ref Kind"},"ref_id":{"type":"string","format":"uuid","title":"Ref Id"},"similarity":{"type":"number","title":"Similarity"}},"type":"object","required":["document_id","ref_kind","ref_id","similarity"],"title":"V2DocumentLink","description":"TOS-615 P4: derived link from a document to a theme or entity."},"V2DocumentNode":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"title":{"type":"string","title":"Title"},"usage_count":{"type":"integer","title":"Usage Count"},"segment_count":{"type":"integer","title":"Segment Count"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","title","usage_count","segment_count","created_at"],"title":"V2DocumentNode","description":"TOS-615 P4: an accessible folder document on the graph's outer band."},"V2Edge":{"properties":{"kind":{"type":"string","enum":["mind_edge","proposition_relation","about"],"title":"Kind"},"type":{"type":"string","title":"Type"},"weight":{"type":"number","title":"Weight"},"source_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Kind"},"source_id":{"type":"string","format":"uuid","title":"Source Id"},"target_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Kind"},"target_id":{"type":"string","format":"uuid","title":"Target Id"},"edge_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Edge Source"}},"type":"object","required":["kind","type","weight","source_id","target_id"],"title":"V2Edge"},"V2Entity":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"kind":{"type":"string","title":"Kind"},"summary":{"type":"string","title":"Summary"},"content":{"additionalProperties":true,"type":"object","title":"Content"},"identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Identity Id"},"external_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Ref"},"scope_kind":{"type":"string","title":"Scope Kind"},"owner_mind_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner Mind Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"position":{"anyOf":[{"$ref":"#/components/schemas/V2Position"},{"type":"null"}]},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"identity_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Identity Kind"},"references":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"References"}},"type":"object","required":["id","kind","summary","content","identity_id","external_ref","scope_kind","owner_mind_id","created_at"],"title":"V2Entity"},"V2EvaluationExplanation":{"properties":{"explanation":{"type":"string","title":"Explanation"},"evaluation_id":{"type":"string","format":"uuid","title":"Evaluation Id"},"proposition_id":{"type":"string","format":"uuid","title":"Proposition Id"},"prior_proposition_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Prior Proposition Id"},"confidence":{"type":"number","title":"Confidence"},"activated_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Activated Count"},"source_ref":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Source Ref"},"degraded":{"type":"boolean","title":"Degraded"}},"type":"object","required":["explanation","evaluation_id","proposition_id","prior_proposition_id","confidence","activated_count","source_ref","degraded"],"title":"V2EvaluationExplanation","description":"Response for GET /api/mind/v2/evaluations/{evaluation_id}/explanation."},"V2ForceSleepResult":{"properties":{"accepted":{"type":"boolean","title":"Accepted"},"detail":{"type":"string","title":"Detail"}},"type":"object","required":["accepted","detail"],"title":"V2ForceSleepResult","description":"TOS-6024: acceptance receipt for a forced (owner-triggered) sleep run.\n\nThe heavy work (settle -> decay -> consolidate -> ... -> waking_validate)\nruns in a detached background task AFTER this response is sent - it can\ntake minutes, far past any request timeout - so this model carries\nacceptance, not outcomes. The caller watches the resulting episode\nthrough the existing `/sleep-status` poll and `/sleep-report` timeline."},"V2GraphCounts":{"properties":{"propositions":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Propositions"},"holdings":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Holdings"}},"type":"object","title":"V2GraphCounts","description":"TOS-471: total active facet counts for the Mind, independent of the\nrender cap, so the UI can show \"showing N of TOTAL\". A null field means the\ntotal was unavailable this call; the UI should then show only the rendered\ncount rather than a wrong total."},"V2GraphPayload":{"properties":{"entities":{"items":{"$ref":"#/components/schemas/V2Entity"},"type":"array","title":"Entities"},"propositions":{"items":{"$ref":"#/components/schemas/V2Proposition"},"type":"array","title":"Propositions"},"holdings":{"items":{"$ref":"#/components/schemas/V2Holding"},"type":"array","title":"Holdings"},"edges":{"items":{"$ref":"#/components/schemas/V2Edge"},"type":"array","title":"Edges"},"themes":{"items":{"$ref":"#/components/schemas/V2Theme"},"type":"array","title":"Themes"},"theme_members":{"items":{"$ref":"#/components/schemas/V2ThemeMember"},"type":"array","title":"Theme Members"},"documents":{"items":{"$ref":"#/components/schemas/V2DocumentNode"},"type":"array","title":"Documents"},"document_links":{"items":{"$ref":"#/components/schemas/V2DocumentLink"},"type":"array","title":"Document Links"},"user_facts":{"items":{"$ref":"#/components/schemas/V2UserFact"},"type":"array","title":"User Facts"},"applied_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Applied Limit"},"total_counts":{"anyOf":[{"$ref":"#/components/schemas/V2GraphCounts"},{"type":"null"}]},"edges_truncated":{"type":"boolean","title":"Edges Truncated","default":false}},"type":"object","required":["entities","propositions","holdings","edges"],"title":"V2GraphPayload"},"V2Holding":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"kind":{"type":"string","enum":["goal","preference","working_thought","procedure","task","lesson"],"title":"Kind"},"summary":{"type":"string","title":"Summary"},"content":{"additionalProperties":true,"type":"object","title":"Content"},"confidence":{"type":"number","title":"Confidence"},"salience":{"type":"number","title":"Salience"},"decay_rate":{"type":"number","title":"Decay Rate"},"lifecycle_status":{"type":"string","enum":["active","contradicted","superseded","archived","completed","abandoned","provisional","lapsed"],"title":"Lifecycle Status"},"layer":{"type":"string","enum":["core","reinforced","transient"],"title":"Layer"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"position":{"anyOf":[{"$ref":"#/components/schemas/V2Position"},{"type":"null"}]},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},"type":"object","required":["id","kind","summary","content","confidence","salience","decay_rate","lifecycle_status","layer","created_at"],"title":"V2Holding"},"V2ItemSources":{"properties":{"origin":{"type":"string","title":"Origin"},"origin_label":{"type":"string","title":"Origin Label"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"chat_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Chat Id"},"message_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Message Id"}},"type":"object","required":["origin","origin_label"],"title":"V2ItemSources","description":"Where an Item came from (TOS-7884): an origin plus the real chat or document name."},"V2JournalDecisionsSection":{"properties":{"items":{"items":{"$ref":"#/components/schemas/V2Conflict"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total","default":0}},"type":"object","title":"V2JournalDecisionsSection","description":"Open conflicts - the one genuinely blocking category."},"V2JournalNewLessonsSection":{"properties":{"items":{"items":{"$ref":"#/components/schemas/V2ConsolidatedProposition"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total","default":0}},"type":"object","title":"V2JournalNewLessonsSection","description":"Consolidated abstractions awaiting nothing - viewing is enough.\n\nReuses ``V2ConsolidatedProposition`` verbatim (same shape the existing\n``/consolidated`` endpoint returns) so the row-evidence fields\n(reinforcement_count, activation_count, last_activated_at, confidence,\nprotection_level) come for free off ``V2MindEvaluation``."},"V2JournalOpenedRequest":{"properties":{"section_totals":{"additionalProperties":{"type":"integer"},"type":"object","title":"Section Totals"}},"type":"object","title":"V2JournalOpenedRequest","description":"Body for POST /perspective/{identity_id}/journal/opened.\n\n``section_totals`` mirrors the four section totals the client just\nrendered (e.g. ``{\"new_lessons\": 4, \"now_stable\": 1, \"needs_decision\": 0,\n\"retrospect\": 0}``) - captured verbatim into the product_events payload\nfor the admin summary."},"V2JournalResponse":{"properties":{"new_lessons":{"$ref":"#/components/schemas/V2JournalNewLessonsSection"},"now_stable":{"$ref":"#/components/schemas/V2JournalStableSection"},"needs_decision":{"$ref":"#/components/schemas/V2JournalDecisionsSection"},"retrospect":{"$ref":"#/components/schemas/V2JournalRetrospectSection"}},"type":"object","required":["new_lessons","now_stable","needs_decision","retrospect"],"title":"V2JournalResponse","description":"GET /perspective/{identity_id}/journal - the Mind Journal change feed."},"V2JournalRetrospectItem":{"properties":{"message_id":{"type":"string","format":"uuid","title":"Message Id"},"score":{"type":"number","title":"Score"},"signals":{"additionalProperties":true,"type":"object","title":"Signals"},"finding_summary":{"type":"string","title":"Finding Summary"},"proposed_field":{"type":"string","title":"Proposed Field"},"rationale":{"type":"string","title":"Rationale"},"confidence":{"type":"number","title":"Confidence"},"proposal_id":{"type":"string","format":"uuid","title":"Proposal Id"},"proposal_status":{"type":"string","title":"Proposal Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["message_id","score","signals","finding_summary","proposed_field","rationale","confidence","proposal_id","proposal_status","created_at"],"title":"V2JournalRetrospectItem","description":"One retrospect finding (TOS-2264 Phase A) - a self-critique surfaced\nfrom the sleep cycle's retrospect stage.\n\nMirrors the RETROSPECT cognitive_event payload verbatim (display-only,\nnever recomputed here), matching V2JournalStableItem's own precedent."},"V2JournalRetrospectSection":{"properties":{"items":{"items":{"$ref":"#/components/schemas/V2JournalRetrospectItem"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total","default":0}},"type":"object","title":"V2JournalRetrospectSection"},"V2JournalStableItem":{"properties":{"evaluation_id":{"type":"string","format":"uuid","title":"Evaluation Id"},"proposition":{"$ref":"#/components/schemas/V2Proposition"},"promoted_at":{"type":"string","format":"date-time","title":"Promoted At"},"reinforcement_count":{"type":"integer","title":"Reinforcement Count"},"distinct_activation_days":{"type":"integer","title":"Distinct Activation Days"},"age_days":{"type":"number","title":"Age Days"},"conflict_check":{"type":"string","title":"Conflict Check"},"claim_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Claim Key"}},"type":"object","required":["evaluation_id","proposition","promoted_at","reinforcement_count","distinct_activation_days","age_days","conflict_check"],"title":"V2JournalStableItem","description":"One earned-stable promotion (TOS-1982 Phase 1) - \"Now stable\" row.\n\n``reinforcement_count``/``distinct_activation_days``/``age_days``/\n``conflict_check`` are the exact criteria evidence snapshot the\nratification sweep captured at promotion time (``elevate_payload`` in\n``services/cognitive_v2/ratification.py``) - display-only, never\nrecomputed here per the ticket."},"V2JournalStableSection":{"properties":{"items":{"items":{"$ref":"#/components/schemas/V2JournalStableItem"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total","default":0}},"type":"object","title":"V2JournalStableSection"},"V2LearningNarrative":{"properties":{"supported":{"type":"boolean","title":"Supported"},"takeaways":{"items":{"$ref":"#/components/schemas/V2LearningTakeaway"},"type":"array","title":"Takeaways"},"unsupported_reason":{"anyOf":[{"type":"string","enum":["legacy","in_progress","resumed","no_narratable_activity"]},{"type":"null"}],"title":"Unsupported Reason"}},"type":"object","required":["supported","takeaways"],"title":"V2LearningNarrative","description":"TOS-2777: the report's PRIMARY output, per the ticket - \"the report\nmust not reduce sleep to counts... the primary output is a truthful,\nplain-language What your Mind learned narrative.\"\n\n``supported=False`` means no safe summary could be built (a legacy\nsession, an open session, or a completed session whose event log had\nnothing narratable). Clients must render an explanation drawn from\n``unsupported_reason`` in that case, never an empty section or a\ncount-based substitute."},"V2LearningTakeaway":{"properties":{"text":{"type":"string","title":"Text"},"category":{"type":"string","enum":["strengthened","proposed","rejected","unresolved"],"title":"Category"},"source_event_seq":{"type":"string","title":"Source Event Seq"},"source_sleep_stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Sleep Stage"},"source_event_kind":{"type":"string","title":"Source Event Kind"},"item_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Item Id"}},"type":"object","required":["text","category","source_event_seq","source_sleep_stage","source_event_kind"],"title":"V2LearningTakeaway","description":"One sentence of \"What your Mind learned\" (TOS-2777). Every takeaway\ntraces to a specific ``cognitive_events`` row - see\n``services.cognitive_v2.sleep_learning_narrative`` for how."},"V2MemoryPage":{"properties":{"propositions":{"items":{"$ref":"#/components/schemas/V2Proposition"},"type":"array","title":"Propositions"},"holdings":{"items":{"$ref":"#/components/schemas/V2Holding"},"type":"array","title":"Holdings"},"total":{"type":"integer","title":"Total"},"next_offset":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Offset"}},"type":"object","required":["total"],"title":"V2MemoryPage"},"V2MindColumnValue":{"properties":{"value":{"type":"string","title":"Value"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["value","count"],"title":"V2MindColumnValue"},"V2MindColumnValues":{"properties":{"column_values_truncated":{"type":"boolean","title":"Column Values Truncated","default":false},"column_values":{"items":{"$ref":"#/components/schemas/V2MindColumnValue"},"type":"array","title":"Column Values"}},"type":"object","title":"V2MindColumnValues","description":"Facet-only response; no row totals are calculated or implied."},"V2MindEvaluation":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"confidence":{"type":"number","title":"Confidence"},"salience":{"type":"number","title":"Salience"},"decay_rate":{"type":"number","title":"Decay Rate"},"valence":{"type":"number","title":"Valence"},"arousal":{"type":"number","title":"Arousal"},"confirmed":{"type":"boolean","title":"Confirmed"},"protection_level":{"type":"string","enum":["none","seeded","user_confirmed","system_consolidated","system_stable","locked"],"title":"Protection Level"},"layer":{"type":"string","enum":["core","reinforced","transient"],"title":"Layer"},"importance":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Importance"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"constitution_pinned":{"type":"boolean","title":"Constitution Pinned","default":false},"lifecycle_status":{"type":"string","enum":["active","contradicted","superseded","archived","pending_review"],"title":"Lifecycle Status"},"source_type":{"type":"string","enum":["declared","extracted","inferred","observed","consolidated","constitutional","external_observed","imported"],"title":"Source Type"},"reinforcement_count":{"type":"integer","title":"Reinforcement Count"},"last_reinforced_at":{"type":"string","format":"date-time","title":"Last Reinforced At"},"last_challenged_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Challenged At"},"activation_count":{"type":"integer","title":"Activation Count","default":0},"usage_count":{"type":"integer","title":"Usage Count","default":0},"last_stated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Stated At"},"last_recalled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Recalled At"},"last_activated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Activated At"}},"type":"object","required":["id","confidence","salience","decay_rate","valence","arousal","confirmed","protection_level","layer","created_at","lifecycle_status","source_type","reinforcement_count","last_reinforced_at","last_challenged_at"],"title":"V2MindEvaluation"},"V2MindItemConnection":{"properties":{"item":{"$ref":"#/components/schemas/V2MindItemRow"},"type":{"type":"string","title":"Type"},"direction":{"type":"string","enum":["incoming","outgoing"],"title":"Direction"}},"type":"object","required":["item","type","direction"],"title":"V2MindItemConnection","description":"One visible, bounded connection from a Mind item to another item."},"V2MindItemDetail":{"properties":{"item":{"$ref":"#/components/schemas/V2MindItemRow"},"evaluation_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Evaluation Id"},"source_chat":{"anyOf":[{"$ref":"#/components/schemas/V2PropositionSourceChat"},{"type":"null"}]},"connections":{"items":{"$ref":"#/components/schemas/V2MindItemConnection"},"type":"array","title":"Connections"},"connections_truncated":{"type":"boolean","title":"Connections Truncated","default":false}},"type":"object","required":["item"],"title":"V2MindItemDetail","description":"Detail drawer payload assembled without loading the whole Mind graph."},"V2MindItemRow":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"ref_kind":{"type":"string","enum":["proposition","mind_holding","entity"],"title":"Ref Kind"},"type":{"type":"string","title":"Type"},"summary":{"type":"string","title":"Summary"},"kind":{"anyOf":[{"type":"string","enum":["fact","event","status"]},{"type":"null"}],"title":"Kind"},"layer":{"anyOf":[{"type":"string","enum":["core","reinforced","transient"]},{"type":"null"}],"title":"Layer"},"confidence":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Confidence"},"importance":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Importance"},"salience":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Salience"},"decay_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Decay Rate"},"decay_half_life_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Decay Half Life Days"},"last_touched_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Touched At"},"valence":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Valence"},"arousal":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Arousal"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"},"protection":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Protection"},"confirmed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Confirmed"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"reinforcement_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reinforcement Count"},"usage_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Usage Count"},"activation_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Activation Count"},"links":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Links"},"attention":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Attention"},"references":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"References"},"pinned":{"type":"boolean","title":"Pinned","default":false},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"last_stated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Stated At"},"last_recalled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Recalled At"},"last_activated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Activated At"},"last_challenged_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Challenged At"},"identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Identity Id"},"mind_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Mind Id"},"subject_entity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Subject Entity Id"},"object_entity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Object Entity Id"},"about":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"About"},"source_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Detail"},"source_chat_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Source Chat Id"},"activity":{"anyOf":[{"type":"string","enum":["active_now","recurring","recent","dormant"]},{"type":"null"}],"title":"Activity"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"status_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Label"},"review_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Reason"},"said_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Said By"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"sources":{"anyOf":[{"$ref":"#/components/schemas/V2ItemSources"},{"type":"null"}]},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"content":{"additionalProperties":true,"type":"object","title":"Content"}},"type":"object","required":["id","ref_kind","type","summary"],"title":"V2MindItemRow","description":"One row of the Mind page Data tab (TOS-2314), the same shape for every kind.\n\nAn attribute the row's kind does not store is ``None``, never a default.\n``links`` and ``attention`` are ``None`` when the caller may not see the\ngraph or the working set."},"V2MindItemsPage":{"properties":{"column_values_truncated":{"type":"boolean","title":"Column Values Truncated","default":false},"rows":{"items":{"$ref":"#/components/schemas/V2MindItemRow"},"type":"array","title":"Rows"},"total":{"type":"integer","title":"Total"},"unfiltered_total":{"type":"integer","title":"Unfiltered Total"},"next_offset":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Offset"},"sortable":{"items":{"type":"string"},"type":"array","title":"Sortable"},"facets":{"anyOf":[{"additionalProperties":{"additionalProperties":{"type":"integer"},"type":"object"},"type":"object"},{"type":"null"}],"title":"Facets"},"low_confidence_beliefs_count":{"type":"integer","title":"Low Confidence Beliefs Count","default":0},"column_values":{"anyOf":[{"items":{"$ref":"#/components/schemas/V2MindColumnValue"},"type":"array"},{"type":"null"}],"title":"Column Values"}},"type":"object","required":["total","unfiltered_total"],"title":"V2MindItemsPage","description":"A filtered, sorted page of Data tab rows with optional slicer counts.\n\n``facets`` maps each of ``type``, ``layer``, ``state`` and ``source`` to\nvalue counts computed over the filtered set without that facet's own\nfilter. A NULL value is reported as ``\"none\"``."},"V2MindWriteAccessResponse":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"can_write":{"type":"boolean","title":"Can Write"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"}},"type":"object","required":["identity_id","can_write"],"title":"V2MindWriteAccessResponse","description":"Whether the caller may author this Mind, and under what role.\n\nTOS-4077. The Mind page needs this because \"am I looking at someone else's\nMind\" stopped being the same question as \"may I edit this Mind\" once an\norganization could own one: an org member is always viewing another\nidentity, yet an edit or admin member is exactly the person who should see\nthe Add-belief control. ``role`` is null for a non-org target."},"V2PersonEntityResponse":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"entity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Entity Id"}},"type":"object","required":["identity_id","entity_id"],"title":"V2PersonEntityResponse","description":"The single canonical person Entity bound to an identity (design W2).\n\n`entity_id` is null when no active person Entity exists for the\nidentity yet. Used by the theory-of-mind UI to resolve \"me\"\nauthoritatively, independent of any one Mind's graph scope."},"V2PerspectiveOption":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"display_name":{"type":"string","title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"kind":{"type":"string","title":"Kind"},"owned_by_caller":{"type":"boolean","title":"Owned By Caller"},"is_self":{"type":"boolean","title":"Is Self"}},"type":"object","required":["identity_id","display_name","avatar_url","kind","owned_by_caller","is_self"],"title":"V2PerspectiveOption"},"V2PerspectiveSettings":{"properties":{"consolidation_authority":{"type":"string","enum":["auto","manual"],"title":"Consolidation Authority"}},"type":"object","required":["consolidation_authority"],"title":"V2PerspectiveSettings","description":"TOS-1981: GET/PUT .../perspective/{identity_id}/settings body.\n\nMirrors ``IdentityConfig.consolidation_authority`` exactly (models/\nidentity_config.py) - 'auto' (default) lets a freshly consolidated\nabstraction join ranking immediately; 'manual' quarantines it\n(lifecycle_status='pending_review') until the owner confirms/dismisses\nit in the Mind Journal."},"V2PerspectiveSummary":{"properties":{"identity_id":{"type":"string","format":"uuid","title":"Identity Id"},"propositions_count":{"type":"integer","title":"Propositions Count"},"holdings_counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Holdings Counts"},"working_set_count":{"type":"integer","title":"Working Set Count"},"last_reinforced_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Reinforced At"},"beliefs_changed_answers_7d":{"type":"integer","title":"Beliefs Changed Answers 7D","default":0},"low_confidence_beliefs_count":{"type":"integer","title":"Low Confidence Beliefs Count","default":0}},"type":"object","required":["identity_id","propositions_count","holdings_counts","working_set_count","last_reinforced_at"],"title":"V2PerspectiveSummary"},"V2Position":{"properties":{"x":{"type":"number","title":"X"},"y":{"type":"number","title":"Y"},"z":{"type":"number","title":"Z"}},"type":"object","required":["x","y","z"],"title":"V2Position","description":"Stored mind-graph coordinate (TOS-518). Null until the layout pass runs."},"V2Proposition":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"subject_entity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Subject Entity Id"},"predicate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Predicate"},"object_entity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Object Entity Id"},"claim_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Claim Key"},"summary":{"type":"string","title":"Summary"},"content":{"additionalProperties":true,"type":"object","title":"Content"},"source":{"type":"string","title":"Source"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"evaluation":{"anyOf":[{"$ref":"#/components/schemas/V2MindEvaluation"},{"type":"null"}]},"source_chat":{"anyOf":[{"$ref":"#/components/schemas/V2PropositionSourceChat"},{"type":"null"}]},"position":{"anyOf":[{"$ref":"#/components/schemas/V2Position"},{"type":"null"}]},"about":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"About"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},"type":"object","required":["id","subject_entity_id","predicate","object_entity_id","claim_key","summary","content","source","created_at","evaluation"],"title":"V2Proposition"},"V2PropositionSourceChat":{"properties":{"kind":{"type":"string","title":"Kind","default":"external"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"source_external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source External Id"},"instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instance Id"},"display_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Label"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"window_seq":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Window Seq"},"chat_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chat Id"},"chat_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chat Title"},"occurred_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Occurred At"}},"type":"object","title":"V2PropositionSourceChat","description":"Source-conversation provenance for an extracted proposition.\n\nTOS-256 introduced this for external captures only; TOS-615 P3 unified\nit across both conversation kinds:\n\n- ``kind=\"external\"``: the backing chat arrived through an external\n  ingest adapter (non-null ``chats.source``). ``source`` /\n  ``source_external_id`` drive the connected-integrations session\n  back-link, exactly as before.\n- ``kind=\"in_app\"``: a normal thinqOS chat. ``chat_id`` / ``chat_title``\n  drive the Evidence panel's deep link to the conversation; they are\n  populated ONLY when the caller is a participant of that chat (active\n  or left). Non-participant callers get ``source_chat=null`` instead.\n\n``display_label`` is the chat's default agent identity display name\n(e.g. ``\"Claude Code\"``) - convenient for rendering without a second\nlookup. ``window_seq`` is the source turn's 1-based position within the\nchat. ``occurred_at`` is the created_at of the earliest live\nassert_proposition event - \"when this was learned\"."},"V2RebuildAcknowledgement":{"properties":{"accepted_estimated_cost_usd":{"type":"number","minimum":0.0,"title":"Accepted Estimated Cost Usd"},"candidate_recipe_ref":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Candidate Recipe Ref"}},"type":"object","required":["accepted_estimated_cost_usd"],"title":"V2RebuildAcknowledgement"},"V2RecallCalibration":{"properties":{"checked":{"type":"integer","title":"Checked"},"still_retrievable":{"type":"integer","title":"Still Retrievable"}},"type":"object","required":["checked","still_retrievable"],"title":"V2RecallCalibration","description":"TOS-2777: post-wake calibration's ONE implemented outcome -\nretrievability. See ``services.cognitive_v2.sleep_calibration`` for the\nhonest account of why this is the only calibration outcome measured so\nfar (the others need infrastructure this codebase does not have yet).\n\n``checked=0`` means genuinely not-yet-measurable (no prior session, or\nthe prior session published nothing) - render \"Awaiting waking\nevidence\", never a fabricated 100%."},"V2RecallRequest":{"properties":{"query":{"type":"string","title":"Query"},"limit":{"type":"integer","title":"Limit","default":15}},"type":"object","required":["query"],"title":"V2RecallRequest"},"V2ResolveConflictRequest":{"properties":{"action":{"type":"string","enum":["keep_a","keep_b","keep_both","forget_both","resuppress"],"title":"Action"}},"type":"object","required":["action"],"title":"V2ResolveConflictRequest","description":"``resuppress`` (TOS-2226 Option C) is valid only on a correction-\nresurrection card (``cause`` starting with ``correction_resurrected:``,\nsee conflicts.py's ``RESURRECTION_CAUSE_PREFIX``) - ``ConflictsService.\nresolve`` rejects it on any other conflict, and rejects the two-sided\nactions (keep_b/keep_both/forget_both) on a resurrection card, since that\ncard never has an opposing side."},"V2SleepReport":{"properties":{"last_session":{"anyOf":[{"$ref":"#/components/schemas/V2SleepReportSession"},{"type":"null"}]},"recent_sessions":{"items":{"$ref":"#/components/schemas/V2SleepReportTrendPoint"},"type":"array","title":"Recent Sessions"},"state_contract":{"$ref":"#/components/schemas/V2SleepStateContract"},"capability_recommendations":{"items":{"$ref":"#/components/schemas/V2CapabilityRecommendation"},"type":"array","title":"Capability Recommendations","default":[]}},"type":"object","required":["last_session","recent_sessions","state_contract"],"title":"V2SleepReport","description":"TOS-2532 Phase 2: GET .../perspective/{identity_id}/sleep-report.\n\n``last_session`` is ``None`` iff this Mind has never had a\n``mind_sleep_sessions`` row - the \"hasn't slept yet\" honest empty state.\n``recent_sessions`` is the trailing series (most-recent-first, capped at\n:data:`~thinqos.api.cognitive_v2.SLEEP_REPORT_SESSION_LIMIT`) the trend\nstrip renders; slicing its first 7 entries is the 7-session sparkline,\nthe full list is the 30-session one - one bounded query instead of two."},"V2SleepReportSession":{"properties":{"session_id":{"type":"string","format":"uuid","title":"Session Id"},"started_at":{"type":"string","format":"date-time","title":"Started At"},"ended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ended At"},"outcome":{"anyOf":[{"type":"string","enum":["completed","abandoned"]},{"type":"null"}],"title":"Outcome"},"lifecycle_state":{"type":"string","enum":["running","paused","waiting_to_resume","stopped","completed","completed_with_errors","abandoned"],"title":"Lifecycle State"},"worker_active":{"type":"boolean","title":"Worker Active"},"stage_error_count":{"type":"integer","title":"Stage Error Count"},"incomplete_stage_count":{"type":"integer","title":"Incomplete Stage Count"},"active_duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Active Duration Ms"},"interruption_count":{"type":"integer","title":"Interruption Count"},"quality":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Quality"},"pressure_at_start":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pressure At Start"},"pressure_at_end":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pressure At End"},"sleep_period_key":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Sleep Period Key"},"period_timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period Timezone"},"trigger_reason":{"anyOf":[{"type":"string","enum":["scheduled","work_pressure","administrative"]},{"type":"null"}],"title":"Trigger Reason"},"resume_count":{"type":"integer","title":"Resume Count"},"last_resumed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Resumed At"},"last_interrupted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Interrupted At"},"last_interruption_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Interruption Reason"},"is_legacy":{"type":"boolean","title":"Is Legacy"},"legacy_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legacy Reason"},"work_measured":{"type":"boolean","title":"Work Measured"},"learning_narrative":{"$ref":"#/components/schemas/V2LearningNarrative"},"recall_calibration":{"$ref":"#/components/schemas/V2RecallCalibration"},"stages":{"items":{"$ref":"#/components/schemas/V2SleepReportStageRun"},"type":"array","title":"Stages"}},"type":"object","required":["session_id","started_at","ended_at","outcome","lifecycle_state","worker_active","stage_error_count","incomplete_stage_count","active_duration_ms","interruption_count","quality","pressure_at_start","pressure_at_end","sleep_period_key","period_timezone","trigger_reason","resume_count","last_resumed_at","last_interrupted_at","last_interruption_reason","is_legacy","legacy_reason","work_measured","learning_narrative","recall_calibration","stages"],"title":"V2SleepReportSession","description":"TOS-2532 Phase 2: the most recent ``mind_sleep_sessions`` row, with its\nfull per-stage timeline attached - the \"last night\" report card's data."},"V2SleepReportStageRun":{"properties":{"stage":{"type":"string","enum":["settle","replay_select","decay","consolidate","prior_seed","dormancy","feedback","retrospect","rem_integrate","waking_validate"],"title":"Stage"},"started_at":{"type":"string","format":"date-time","title":"Started At"},"ended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ended At"},"outcome":{"type":"string","enum":["running","ok","error","skipped_unfunded","deferred","interrupted"],"title":"Outcome"},"work":{"additionalProperties":{"type":"integer"},"type":"object","title":"Work"}},"type":"object","required":["stage","started_at","ended_at","outcome","work"],"title":"V2SleepReportStageRun","description":"TOS-2532 Phase 2: one ``mind_sleep_stage_runs`` row, verbatim.\n\nOnly ever populated for the LAST session in a\n:class:`V2SleepReport` - the timeline the \"last night\" report card\nrenders. Trend-list entries (``V2SleepReportTrendPoint``) deliberately\nomit this to keep the 7/30-session series light."},"V2SleepReportTrendPoint":{"properties":{"session_id":{"type":"string","format":"uuid","title":"Session Id"},"started_at":{"type":"string","format":"date-time","title":"Started At"},"ended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ended At"},"outcome":{"anyOf":[{"type":"string","enum":["completed","abandoned"]},{"type":"null"}],"title":"Outcome"},"lifecycle_state":{"type":"string","enum":["running","paused","waiting_to_resume","stopped","completed","completed_with_errors","abandoned"],"title":"Lifecycle State"},"worker_active":{"type":"boolean","title":"Worker Active"},"stage_error_count":{"type":"integer","title":"Stage Error Count"},"incomplete_stage_count":{"type":"integer","title":"Incomplete Stage Count"},"active_duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Active Duration Ms"},"quality":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Quality"},"interruption_count":{"type":"integer","title":"Interruption Count"},"sleep_period_key":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Sleep Period Key"},"period_timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period Timezone"},"trigger_reason":{"anyOf":[{"type":"string","enum":["scheduled","work_pressure","administrative"]},{"type":"null"}],"title":"Trigger Reason"},"resume_count":{"type":"integer","title":"Resume Count"},"is_legacy":{"type":"boolean","title":"Is Legacy"}},"type":"object","required":["session_id","started_at","ended_at","outcome","lifecycle_state","worker_active","stage_error_count","incomplete_stage_count","active_duration_ms","quality","interruption_count","sleep_period_key","period_timezone","trigger_reason","resume_count","is_legacy"],"title":"V2SleepReportTrendPoint","description":"TOS-2532 Phase 2: one entry in the trailing session-quality/\ninterruptions series. Deliberately light: it carries aggregate active\nduration but no per-stage timeline."},"V2SleepStateContract":{"properties":{"version":{"type":"integer","title":"Version"},"states":{"items":{"$ref":"#/components/schemas/V2SleepStateDefinition"},"type":"array","title":"States"}},"type":"object","required":["version","states"],"title":"V2SleepStateContract","description":"The versioned five-state contract shared by API, UI, docs and telemetry.\n\n``version`` changes when a state's identity, order or mechanism membership\nchanges - not on rewording. A client holding its own copy should compare\nversions and defer to the server's text on a mismatch rather than\nsilently rendering stale definitions."},"V2SleepStateDefinition":{"properties":{"key":{"type":"string","enum":["settling","light","deep","rem","waking"],"title":"Key"},"order":{"type":"integer","title":"Order"},"label":{"type":"string","title":"Label"},"function":{"type":"string","title":"Function"},"mechanisms":{"items":{"type":"string"},"type":"array","title":"Mechanisms"},"human_parallel":{"type":"string","title":"Human Parallel"},"analogy_boundary":{"type":"string","title":"Analogy Boundary"},"required_measurements":{"items":{"type":"string"},"type":"array","title":"Required Measurements"},"implemented":{"type":"boolean","title":"Implemented"}},"type":"object","required":["key","order","label","function","mechanisms","human_parallel","analogy_boundary","required_measurements","implemented"],"title":"V2SleepStateDefinition","description":"TOS-2777 Gate C: one functional sleep state, server-defined.\n\nServed so the report UI, the public explainer and telemetry all render the\nsame five states from one source instead of each keeping a private copy."},"V2SleepStatus":{"properties":{"state":{"type":"string","enum":["awake","sleeping"],"title":"State"},"stage":{"anyOf":[{"type":"string","enum":["settle","replay_select","decay","consolidate","prior_seed","dormancy","feedback","retrospect","rem_integrate","waking_validate"]},{"type":"null"}],"title":"Stage"},"last_cycle_completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Cycle Completed At"},"window_start_hour_utc":{"type":"integer","title":"Window Start Hour Utc"},"window_end_hour_utc":{"type":"integer","title":"Window End Hour Utc"},"window_derived":{"type":"boolean","title":"Window Derived"},"wake_state":{"anyOf":[{"type":"string","const":"woken_by_you"},{"type":"null"}],"title":"Wake State"},"pressure":{"type":"number","title":"Pressure","default":0.0},"pressure_band":{"type":"string","enum":["rested","tired","overtired"],"title":"Pressure Band","default":"rested"},"pressure_backlog":{"type":"number","title":"Pressure Backlog","default":0.0},"pressure_volume":{"type":"number","title":"Pressure Volume","default":0.0},"pressure_debt":{"type":"number","title":"Pressure Debt","default":0.0}},"type":"object","required":["state","stage","last_cycle_completed_at","window_start_hour_utc","window_end_hour_utc","window_derived"],"title":"V2SleepStatus","description":"TOS-1984 Phase 1/2: truthful Awake/Sleeping presence for a Mind.\n\nDerived entirely from ``mind_sleep_cycles`` (the sleep-cycle-dispatcher's\nown bookkeeping, TOS-1979 Phase A) - never inferred from activity/idle\nheuristics. See ``_sleep_status_for_identity`` for the state rules."},"V2Theme":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"label":{"type":"string","title":"Label"},"summary":{"type":"string","title":"Summary"},"member_count":{"type":"integer","title":"Member Count"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","label","summary","member_count","created_at"],"title":"V2Theme","description":"TOS-615: a per-mind semantic theme cluster."},"V2ThemeMember":{"properties":{"theme_id":{"type":"string","format":"uuid","title":"Theme Id"},"ref_kind":{"type":"string","enum":["proposition","mind_holding","entity"],"title":"Ref Kind"},"ref_id":{"type":"string","format":"uuid","title":"Ref Id"},"affinity":{"type":"number","title":"Affinity"}},"type":"object","required":["theme_id","ref_kind","ref_id","affinity"],"title":"V2ThemeMember","description":"TOS-615: membership of a graph node in a theme."},"V2UpdateEvaluationRequest":{"properties":{"confidence":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Confidence"}},"type":"object","required":["confidence"],"title":"V2UpdateEvaluationRequest","description":"Body for PATCH /evaluations/{id} - confidence-only edits (TOS-128 A2-followup).\n\nProposition text is intentionally NOT editable here: claim_key, summary, and\nthe proposition hash are derived from the text and identify a shared belief\nacross Minds. Mutating them is a deeper design question deferred to a\nfollow-up."},"V2UpdateHoldingRequest":{"properties":{"confidence":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Confidence"}},"type":"object","required":["confidence"],"title":"V2UpdateHoldingRequest","description":"Body for PATCH /holdings/{id} - confidence-only edits.\n\nMirrors V2UpdateEvaluationRequest: the holding's summary/content describe\nthe goal/preference/working_thought/procedure and edits to text are a\ndeeper design question. Confidence is the user-tunable strength dial."},"V2UserFact":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"subject_identity_id":{"type":"string","format":"uuid","title":"Subject Identity Id"},"key":{"type":"string","title":"Key"},"value":{"type":"string","title":"Value"},"confidence":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Confidence"},"source_chat_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Source Chat Id"},"version":{"type":"integer","title":"Version"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","subject_identity_id","key","value","version","created_at","updated_at"],"title":"V2UserFact","description":"TOS-615 P5: a live user-fact record this Mind may recall about the caller."},"V2VocabularyField":{"properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"layer":{"type":"string","title":"Layer"},"family":{"type":"string","title":"Family"},"hover":{"type":"string","title":"Hover"},"applies_to":{"items":{"type":"string"},"type":"array","title":"Applies To"},"unknown_for":{"items":{"type":"string"},"type":"array","title":"Unknown For"},"group":{"type":"string","title":"Group"},"phone":{"type":"boolean","title":"Phone"},"blank_when_missing":{"type":"boolean","title":"Blank When Missing"},"values":{"items":{"type":"string"},"type":"array","title":"Values"}},"type":"object","required":["key","label","layer","family","hover","applies_to","unknown_for","group","phone","blank_when_missing","values"],"title":"V2VocabularyField","description":"One registry field (TOS-7884): its words, layer, applicability and default group."},"V2VocabularyValue":{"properties":{"key":{"type":"string","title":"Key"},"field":{"type":"string","title":"Field"},"label":{"type":"string","title":"Label"},"hover":{"type":"string","title":"Hover"},"stored":{"items":{"type":"string"},"type":"array","title":"Stored"}},"type":"object","required":["key","field","label","hover","stored"],"title":"V2VocabularyValue","description":"One registry value, keyed ``<field>.<value>``, with the stored values it labels."},"V2WakeResult":{"properties":{"woke":{"type":"boolean","title":"Woke"},"reason":{"anyOf":[{"type":"string","const":"not_sleeping"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["woke"],"title":"V2WakeResult","description":"TOS-2265: outcome of a deliberate wake call.\n\n``woke`` is True iff a running sleep cycle was actually flipped to\n``deferred`` by this call - the same primitive turn-start wake uses\n(``defer_running_cycle``). ``reason='not_sleeping'`` is the only\nDB-distinguishable explanation for a False result (nothing was running to\ndefer) - a rate-limited attempt never reaches this model at all; it is\nrefused with HTTP 429 before ``defer_running_cycle`` runs (see\n``services.cognitive_v2.wake_rate_limit``). Never invents a reason the DB\ncannot distinguish, per the same rule ``V2SleepStatus.wake_state``\nfollows."},"V2WorkingSetEntry":{"properties":{"ref_kind":{"type":"string","enum":["entity","proposition","mind_holding"],"title":"Ref Kind"},"ref_id":{"type":"string","format":"uuid","title":"Ref Id"},"score":{"type":"number","title":"Score"},"decayed_at":{"type":"string","format":"date-time","title":"Decayed At"},"pinned":{"type":"boolean","title":"Pinned","default":false}},"type":"object","required":["ref_kind","ref_id","score","decayed_at"],"title":"V2WorkingSetEntry","description":"A lean working-set entry for the fast read endpoint.\n\nDeliberately unresolved (no summary join): the working-set read is on\nthe chat hot path (design.md section 6 / section 12 latency note), so\nit serves the raw ordered refs and lets the caller resolve summaries\nlazily if it needs them."},"V2WorkingSetItem":{"properties":{"ref_kind":{"type":"string","enum":["entity","proposition","mind_holding"],"title":"Ref Kind"},"ref_id":{"type":"string","format":"uuid","title":"Ref Id"},"score":{"type":"number","title":"Score"},"decayed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Decayed At"},"summary":{"type":"string","title":"Summary"},"pinned":{"type":"boolean","title":"Pinned","default":false}},"type":"object","required":["ref_kind","ref_id","score","summary"],"title":"V2WorkingSetItem"},"V2WorkingSetPinRequest":{"properties":{"ref_kind":{"type":"string","enum":["proposition","mind_holding"],"title":"Ref Kind"},"ref_id":{"type":"string","format":"uuid","title":"Ref Id"},"pinned":{"type":"boolean","title":"Pinned"}},"type":"object","required":["ref_kind","ref_id","pinned"],"title":"V2WorkingSetPinRequest","description":"Pin or unpin one working-set item (TOS-1086 4.1)."},"V2WorkingSetResponse":{"properties":{"mind_id":{"type":"string","format":"uuid","title":"Mind Id"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"items":{"items":{"$ref":"#/components/schemas/V2WorkingSetEntry"},"type":"array","title":"Items"}},"type":"object","required":["mind_id","updated_at","items"],"title":"V2WorkingSetResponse","description":"TTL-pruned working set plus its last-write timestamp."},"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"},"VerifiedLegacyBundleIn":{"properties":{"bundle_version":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]*$","title":"Bundle Version"},"manifest_digest":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","title":"Manifest Digest"}},"type":"object","required":["bundle_version","manifest_digest"],"title":"VerifiedLegacyBundleIn"},"VerifiedLegacyBundleOut":{"properties":{"bundle_version":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]*$","title":"Bundle Version"},"manifest_digest":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","title":"Manifest Digest"},"verified_no_note":{"type":"boolean","title":"Verified No Note"},"stored":{"type":"boolean","title":"Stored","default":false}},"type":"object","required":["bundle_version","manifest_digest","verified_no_note"],"title":"VerifiedLegacyBundleOut"},"VersionCreateRequest":{"properties":{"operations":{"additionalProperties":true,"type":"object","title":"Operations"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"rules":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Rules"}},"type":"object","required":["operations"],"title":"VersionCreateRequest"},"VersionListResponse":{"properties":{"versions":{"items":{"$ref":"#/components/schemas/VersionSummaryResponse"},"type":"array","title":"Versions"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["versions"],"title":"VersionListResponse","description":"A keyset-paginated page of a Mindset's version history (TOS-3280).\n\nSame ``next_cursor`` contract as :class:`MindsetListResponse`."},"VersionSummaryResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"version":{"type":"integer","title":"Version"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","version","note","created_by","created_at"],"title":"VersionSummaryResponse"},"VisitorClaimBody":{"properties":{"agent_identity_id":{"type":"string","format":"uuid","title":"Agent Identity Id"},"visitor_token":{"type":"string","maxLength":512,"minLength":1,"title":"Visitor Token"}},"additionalProperties":false,"type":"object","required":["agent_identity_id","visitor_token"],"title":"VisitorClaimBody"},"VisitorClaimResponse":{"properties":{"chat_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chat Id"},"facts_migrated":{"type":"integer","title":"Facts Migrated"},"already_claimed":{"type":"boolean","title":"Already Claimed"}},"type":"object","required":["chat_id","facts_migrated","already_claimed"],"title":"VisitorClaimResponse"},"VoiceCloneResponse":{"properties":{"voice_id":{"type":"string","title":"Voice Id"},"requires_verification":{"type":"boolean","title":"Requires Verification"},"tts_voice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tts Voice"}},"type":"object","required":["voice_id","requires_verification","tts_voice"],"title":"VoiceCloneResponse"},"VoiceOut":{"properties":{"voice_id":{"type":"string","title":"Voice Id"},"name":{"type":"string","title":"Name"},"category":{"type":"string","title":"Category"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"labels":{"additionalProperties":{"type":"string"},"type":"object","title":"Labels","default":{}},"preview_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Url"}},"type":"object","required":["voice_id","name","category"],"title":"VoiceOut","description":"Voice entry returned from ``GET /api/audio/voices``."},"VoicesResponse":{"properties":{"voices":{"items":{"$ref":"#/components/schemas/VoiceOut"},"type":"array","title":"Voices"}},"type":"object","required":["voices"],"title":"VoicesResponse"},"WalletSharingSelectionBody":{"properties":{"wallet_identity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Wallet Identity Id"},"if_revision":{"type":"integer","minimum":0.0,"title":"If Revision"},"monthly_limit_usd":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string"},{"type":"null"}],"title":"Monthly Limit Usd"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"}},"additionalProperties":false,"type":"object","required":["if_revision"],"title":"WalletSharingSelectionBody"},"WalletSharingStopBody":{"properties":{"if_revision":{"type":"integer","minimum":0.0,"title":"If Revision"}},"additionalProperties":false,"type":"object","required":["if_revision"],"title":"WalletSharingStopBody"},"WebBrowseAuthProfileRevoke":{"properties":{"origin":{"type":"string","title":"Origin"}},"type":"object","required":["origin"],"title":"WebBrowseAuthProfileRevoke"},"WebBrowseAuthProfileSeed":{"properties":{"origin":{"type":"string","title":"Origin","description":"Site to authenticate on, e.g. https://app.example.com"},"storage_state":{"additionalProperties":true,"type":"object","title":"Storage State","description":"Playwright storageState captured from a real, human-performed login."},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label","description":"Human label shown when listing profiles."}},"type":"object","required":["origin","storage_state"],"title":"WebBrowseAuthProfileSeed","description":"A captured, already-authenticated browser state for one origin (TOS-3721)."},"WebhookDeliveryResponse":{"properties":{"status":{"type":"string","enum":["queued","duplicate"],"title":"Status"},"run_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Run Id"}},"type":"object","required":["status"],"title":"WebhookDeliveryResponse"},"WebsiteOut":{"properties":{"url":{"type":"string","title":"Url"},"source_kind":{"type":"string","title":"Source Kind"},"mode":{"type":"string","title":"Mode"},"destination":{"type":"string","title":"Destination"},"vouched":{"type":"boolean","title":"Vouched"},"discovery":{"type":"string","title":"Discovery"},"crawl_depth":{"type":"integer","title":"Crawl Depth"},"path_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path Prefix"},"max_pages":{"type":"integer","title":"Max Pages"},"max_bytes":{"type":"integer","title":"Max Bytes"},"effective_interval_seconds":{"type":"integer","title":"Effective Interval Seconds"},"quiet_sweeps":{"type":"integer","title":"Quiet Sweeps"},"watched_urls":{"type":"integer","title":"Watched Urls"},"coverage":{"$ref":"#/components/schemas/CoverageSummaryOut"}},"type":"object","required":["url","source_kind","mode","destination","vouched","discovery","crawl_depth","path_prefix","max_pages","max_bytes","effective_interval_seconds","quiet_sweeps","watched_urls","coverage"],"title":"WebsiteOut","description":"A website sync's settings and sweep state (the former web source)."},"WorkToolOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"vendor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vendor"},"featured":{"type":"boolean","title":"Featured"},"installed":{"type":"boolean","title":"Installed"},"connected":{"type":"boolean","title":"Connected"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"setup_state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Setup State"},"item":{"$ref":"#/components/schemas/CatalogItemOut"},"account_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Label"}},"type":"object","required":["id","name","description","vendor","featured","installed","connected","item"],"title":"WorkToolOut"},"WorkingRun":{"properties":{"run_id":{"type":"string","format":"uuid","title":"Run Id"},"title":{"type":"string","title":"Title"},"started_at":{"type":"string","format":"date-time","title":"Started At"},"chat_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Chat Id"}},"additionalProperties":false,"type":"object","required":["run_id","title","started_at"],"title":"WorkingRun"},"_BarSeries":{"properties":{"name":{"type":"string","title":"Name"},"values":{"items":{"type":"number"},"type":"array","title":"Values"}},"type":"object","required":["name","values"],"title":"_BarSeries"},"_DonutSlice":{"properties":{"label":{"type":"string","title":"Label"},"value":{"type":"number","title":"Value"}},"type":"object","required":["label","value"],"title":"_DonutSlice"},"_LinePoint":{"properties":{"x":{"anyOf":[{"type":"string"},{"type":"number"}],"title":"X"},"y":{"type":"number","title":"Y"}},"type":"object","required":["x","y"],"title":"_LinePoint"},"_LineSeries":{"properties":{"name":{"type":"string","title":"Name"},"points":{"items":{"$ref":"#/components/schemas/_LinePoint"},"type":"array","title":"Points"}},"type":"object","required":["name","points"],"title":"_LineSeries"},"_ReferenceLine":{"properties":{"value":{"type":"number","title":"Value"},"label":{"type":"string","title":"Label"},"axis":{"type":"string","title":"Axis","default":"y"}},"type":"object","required":["value","label"],"title":"_ReferenceLine"},"_ScatterPoint":{"properties":{"x":{"type":"number","title":"X"},"y":{"type":"number","title":"Y"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"size":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Size"}},"type":"object","required":["x","y"],"title":"_ScatterPoint"},"_TableColumn":{"properties":{"label":{"type":"string","title":"Label"},"key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"},"format":{"anyOf":[{"$ref":"#/components/schemas/_ValueFormat"},{"type":"null"}]},"align":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Align"},"width":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Width"},"sortable":{"type":"boolean","title":"Sortable","default":true},"filterable":{"type":"boolean","title":"Filterable","default":true},"filter_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Type"},"pill":{"type":"boolean","title":"Pill","default":false},"pill_tones":{"additionalProperties":{"type":"string"},"type":"object","title":"Pill Tones"},"link_href_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link Href Key"}},"type":"object","required":["label"],"title":"_TableColumn","description":"Mirrors ``services.artifacts.schema.TableColumn`` (TOS-2575)."},"_TableSort":{"properties":{"field":{"type":"string","title":"Field"},"dir":{"type":"string","title":"Dir","default":"asc"}},"type":"object","required":["field"],"title":"_TableSort"},"_TableSummaryStat":{"properties":{"label":{"type":"string","title":"Label"},"value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"null"}],"title":"Value"},"tone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tone"}},"type":"object","required":["label"],"title":"_TableSummaryStat"},"_ValueFormat":{"properties":{"style":{"type":"string","title":"Style","default":"number"},"currency":{"type":"string","title":"Currency","default":"USD"},"decimals":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Decimals"},"compact":{"type":"boolean","title":"Compact","default":false}},"type":"object","title":"_ValueFormat","description":"Mirrors ``services.artifacts.schema.ValueFormat`` (TOS-434).\n\nKept in lockstep with the request schema; a field missing here is silently\nstripped from the API response and never reaches the renderer."},"thinqos__api__capture_connections__ConnectionResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"source":{"type":"string","title":"Source"},"instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instance Id"},"instance_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instance Label"},"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"external_org_id":{"type":"string","title":"External Org Id"},"org_label":{"type":"string","title":"Org Label"},"created_at":{"type":"string","title":"Created At"},"last_ingest_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Ingest At"},"can_ingest":{"type":"boolean","title":"Can Ingest"},"can_use_mcp":{"type":"boolean","title":"Can Use Mcp"},"mark_new_captures_read":{"type":"boolean","title":"Mark New Captures Read"},"archive_new_captures":{"type":"boolean","title":"Archive New Captures"}},"type":"object","required":["id","source","instance_id","instance_label","environment","external_org_id","org_label","created_at","last_ingest_at","can_ingest","can_use_mcp","mark_new_captures_read","archive_new_captures"],"title":"ConnectionResponse"},"thinqos__api__connections__ConnectionResponse":{"properties":{"id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Id"},"identity_a_id":{"type":"string","format":"uuid","title":"Identity A Id"},"identity_b_id":{"type":"string","format":"uuid","title":"Identity B Id"},"connected_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Connected At"},"other_identity_id":{"type":"string","format":"uuid","title":"Other Identity Id"},"other_display_name":{"type":"string","title":"Other Display Name"},"other_avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Other Avatar Url"},"other_kind":{"type":"string","title":"Other Kind"},"relationship":{"type":"string","title":"Relationship"},"can_manage":{"type":"boolean","title":"Can Manage"},"can_receive_chat":{"type":"boolean","title":"Can Receive Chat","default":true},"unseen_notification_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Unseen Notification Id"},"notification_override":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notification Override"},"archetype":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Archetype"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"}},"type":"object","required":["id","identity_a_id","identity_b_id","connected_at","other_identity_id","other_display_name","other_avatar_url","other_kind","relationship","can_manage"],"title":"ConnectionResponse"},"thinqos__api__integrations__InstallBody":{"properties":{"install_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Install Id"}},"type":"object","title":"InstallBody"},"thinqos__api__knowledge_dossier__FactOut":{"properties":{"record_id":{"type":"string","format":"uuid","title":"Record Id"},"key":{"type":"string","title":"Key"},"value":{"type":"string","title":"Value"},"source_agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Source Agent Id"},"observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Observed At"},"open_dispute_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Open Dispute Id"},"open_dispute_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Open Dispute Kind"},"open_dispute_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Open Dispute Note"}},"type":"object","required":["record_id","key","value","source_agent_id","observed_at"],"title":"FactOut","description":"One fact an owned agent recorded about the target.\n\n``open_dispute_*`` carry the subject's side of the exchange (TOS-4788): the\nperson this fact is about has contested it and is waiting on the store\nowner. Resolving is done through ``/api/me/record-of-me/disputes/{id}/resolve``."},"thinqos__api__library_syncs__ResolveIn":{"properties":{"document_ids":{"items":{"type":"string","format":"uuid"},"type":"array","maxItems":500,"minItems":1,"title":"Document Ids"},"choice":{"type":"string","enum":["theirs","ours"],"title":"Choice"}},"type":"object","required":["document_ids","choice"],"title":"ResolveIn"},"thinqos__api__record_of_me__ResolveIn":{"properties":{"resolution":{"type":"string","enum":["corrected","removed","upheld"],"title":"Resolution"}},"type":"object","required":["resolution"],"title":"ResolveIn"},"thinqos__api__setup__FactOut":{"properties":{"key":{"type":"string","title":"Key"},"value":{"type":"string","title":"Value"}},"type":"object","required":["key","value"],"title":"FactOut"},"thinqos__api__skills_schemas__InstallBody":{"properties":{"install_kind":{"type":"string","title":"Install Kind"},"install_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Install Id"},"pinned_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pinned Version"},"trust":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Trust"}},"type":"object","required":["install_kind"],"title":"InstallBody"},"thinqos__services__feedback_loop__landing__LoopStage":{"properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"status":{"type":"string","title":"Status"}},"additionalProperties":false,"type":"object","required":["key","label","status"],"title":"LoopStage"},"thinqos__services__feedback_loop__outcomes__LoopStage":{"properties":{"label":{"type":"string","title":"Label"},"tracked":{"type":"boolean","title":"Tracked"},"count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Count"},"last_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last At"}},"type":"object","required":["label","tracked","count","last_at"],"title":"LoopStage","description":"One stage of one stream's loop, honestly reported.\n\n``tracked=False`` means no durable source records this transition today.\nThat is different from ``tracked=True, count=0``, which means the source\nexists and genuinely has nothing yet - the frontend must render these two\nstates differently (\"not tracked yet\" vs \"0\")."}}}}