{"openapi":"3.1.0","info":{"title":"Trellis API","description":"Backend API for Trellis property management platform","version":"1.0.0"},"paths":{"/.well-known/oauth-authorization-server/{resource_path}":{"get":{"tags":["Agent Tools and MCP"],"summary":"Oauth Authorization Server Metadata","operationId":"oauth_authorization_server_metadata__well_known_oauth_authorization_server__resource_path__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"x-trellis-raw-tags":["mcp-oauth"]}},"/.well-known/oauth-authorization-server":{"get":{"tags":["Agent Tools and MCP"],"summary":"Oauth Authorization Server Metadata","operationId":"oauth_authorization_server_metadata__well_known_oauth_authorization_server_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"x-trellis-raw-tags":["mcp-oauth"]}},"/authorize":{"get":{"tags":["Agent Tools and MCP"],"summary":"Oauth Authorize","operationId":"oauth_authorize_authorize_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"x-trellis-raw-tags":["mcp-oauth"]}},"/token":{"post":{"tags":["Agent Tools and MCP"],"summary":"Oauth Token","operationId":"oauth_token_token_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"x-trellis-raw-tags":["mcp-oauth"]}},"/health":{"get":{"tags":["Public and Health"],"summary":"Health Check","description":"Basic health check endpoint.\n\nReturns overall service health status.","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}},"x-trellis-raw-tags":["health"]}},"/health/ready":{"get":{"tags":["Public and Health"],"summary":"Readiness Check","description":"Detailed readiness check with dependency health.\n\nChecks database connectivity and other dependencies.\nReturns 503 during graceful shutdown for monitoring parity with liveness.","operationId":"readiness_check_health_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}},"x-trellis-raw-tags":["health"]}},"/health/trigger-canary":{"post":{"tags":["Public and Health"],"summary":"Trigger Canary","description":"Record a Trigger.dev canary heartbeat. Upserts by source.\n\nAccepts an ISO-8601 string and converts to datetime in Python —\nasyncpg refuses strings for timestamptz parameters even with explicit\n::timestamptz cast, because the param type is decided at prepare time,\nbefore the cast runs.","operationId":"trigger_canary_health_trigger_canary_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_trigger_canary_health_trigger_canary_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Trigger Canary Health Trigger Canary Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["health"]}},"/v1/webhooks/kross":{"post":{"tags":["Webhooks and Events"],"summary":"Kross Webhook","description":"Receive webhook events from Kross PMS.\n\nNOTE: Kross currently does not support webhooks - this is for future use.\nCurrently, we poll Kross every 5 minutes for reservations/properties.","operationId":"kross_webhook_v1_webhooks_kross_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"}}}}},"x-trellis-raw-tags":["webhooks"]}},"/v1/webhooks/whatsapp-agent/{workspace_id}/{integration_id}":{"post":{"tags":["Webhooks and Events"],"summary":"Whatsapp Agent Webhook","description":"Handle WhatsApp messages for agent-owned integrations.\n\nExternal Unipile webhooks land in trellis-app first. trellis-app forwards\nonly owner_type=AGENT events here so the Python agent runtime can reply via\nits existing WhatsApp tools without owning connection lifecycle CRUD.","operationId":"whatsapp_agent_webhook_v1_webhooks_whatsapp_agent__workspace_id___integration_id__post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"integration_id","in":"path","required":true,"schema":{"type":"string","title":"Integration Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["webhooks"]}},"/v1/webhooks/retell":{"post":{"tags":["Webhooks and Events"],"summary":"Retell Webhook","description":"Receive webhook events from Retell AI.\n\nEvents: call_started, call_ended, call_analyzed.\nAll events are processed in the background.","operationId":"retell_webhook_v1_webhooks_retell_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"}}}}},"x-trellis-raw-tags":["webhooks"]}},"/v1/webhooks/retell/inbound":{"post":{"tags":["Webhooks and Events"],"summary":"Retell Inbound Webhook","description":"Retell inbound call webhook - called BEFORE the call connects.\n\nReturns dynamic_variables so the voice agent has caller context\n(contact info, reservations, conversation history).\n\nMust respond within 10 seconds (Retell timeout with 3 retries).\n\nRetell sends: { \"event\": \"call_inbound\", \"call_inbound\": { \"from_number\", \"to_number\", ... } }\nWe return:    { \"call_inbound\": { \"dynamic_variables\": {...}, \"metadata\": {...} } }","operationId":"retell_inbound_webhook_v1_webhooks_retell_inbound_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Retell Inbound Webhook V1 Webhooks Retell Inbound Post"}}}}},"x-trellis-raw-tags":["webhooks"]}},"/v1/webhooks/retell/tool/{tool_name}":{"post":{"tags":["Webhooks and Events"],"summary":"Retell Tool Webhook","description":"Retell tool callback - called when the voice agent LLM invokes a custom tool.\n\nRetell sends: { \"call\": { call_id, metadata, ... }, \"args\": { ... } }\nWe respond with a JSON object that becomes the tool result.","operationId":"retell_tool_webhook_v1_webhooks_retell_tool__tool_name__post","parameters":[{"name":"tool_name","in":"path","required":true,"schema":{"type":"string","title":"Tool Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Retell Tool Webhook V1 Webhooks Retell Tool  Tool Name  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["webhooks"]}},"/v1/webhooks/elevenlabs/{workspace_id}/tool/{tool_name}":{"post":{"tags":["Webhooks and Events"],"summary":"Elevenlabs Tool Webhook","description":"ElevenLabs server tool webhook - called when the voice agent invokes a tool.\n\nworkspace_id is baked into the URL at agent setup time so we can resolve\ntenant context without relying on ElevenLabs metadata.\nThe request body contains exactly the parameters defined in the tool's\nrequest_body_schema (no wrapper envelope).","operationId":"elevenlabs_tool_webhook_v1_webhooks_elevenlabs__workspace_id__tool__tool_name__post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"tool_name","in":"path","required":true,"schema":{"type":"string","title":"Tool Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Elevenlabs Tool Webhook V1 Webhooks Elevenlabs  Workspace Id  Tool  Tool Name  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["webhooks"]}},"/v1/webhooks/slack":{"post":{"tags":["Webhooks and Events"],"summary":"Slack Webhook","description":"Receive webhook events from Slack.\n\nHandles:\n- url_verification: One-time challenge response during Slack app setup\n- event_callback: Dispatches app_mention and other events to background processing\n- block_actions: Slack interactivity payloads\n\nSignature verified via HMAC-SHA256 (X-Slack-Signature header).\nPer-agent signing secrets: looks up from agent_slack_configs by app_id,\nfalls back to global config.","operationId":"slack_webhook_v1_webhooks_slack_post","requestBody":{"content":{"application/json":{"schema":{"properties":{"type":{"type":"string"},"challenge":{"type":"string"},"event":{"additionalProperties":true,"type":"object"},"event_id":{"type":"string"},"api_app_id":{"type":"string"},"team_id":{"type":"string"},"team":{"additionalProperties":true,"type":"object"}},"additionalProperties":true,"type":"object","description":"Slack Events API payload."},"examples":{"event_callback":{"summary":"Slack Events API callback","value":{"type":"event_callback","team_id":"T123","api_app_id":"A123","event_id":"Ev123","event":{"type":"app_mention","channel":"C123"}}},"url_verification":{"summary":"Slack URL verification challenge","value":{"type":"url_verification","challenge":"challenge"}}}},"application/x-www-form-urlencoded":{"schema":{"properties":{"payload":{"type":"string","description":"JSON-encoded Slack interactivity payload, including block_actions from Slack interactive elements."}},"type":"object","required":["payload"]},"examples":{"block_actions":{"summary":"Slack block action interaction","value":{"payload":"{\"type\":\"block_actions\",\"team\":{\"id\":\"T123\"},\"api_app_id\":\"A123\",\"actions\":[{\"action_id\":\"slack_action\"}]}"}}},"encoding":{"payload":{"contentType":"application/json"}}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/WebhookResponse"},{"additionalProperties":true,"type":"object"}],"title":"Response Slack Webhook V1 Webhooks Slack Post"}}}}},"x-trellis-raw-tags":["webhooks"]}},"/v1/webhooks/linear":{"post":{"tags":["Webhooks and Events"],"summary":"Linear Webhook","description":"Receive webhook events from Linear.\n\nHandles:\n- Issue created -> configured project/team/type Slack channel with safe fallback\n\nSignature verified via HMAC-SHA256 (Linear-Signature header).","operationId":"linear_webhook_v1_webhooks_linear_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"}}}}},"x-trellis-raw-tags":["webhooks"]}},"/v1/webhooks/telegram":{"post":{"tags":["Webhooks and Events"],"summary":"Telegram Webhook","description":"Receive webhook updates from Telegram Bot API.\n\nVerifies the request using X-Telegram-Bot-Api-Secret-Token header,\nwhich is set when registering the webhook with Telegram.","operationId":"telegram_webhook_v1_webhooks_telegram_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"}}}}},"x-trellis-raw-tags":["webhooks"]}},"/v1/webhooks/googlechat":{"post":{"tags":["Webhooks and Events"],"summary":"Googlechat Webhook","description":"Receive a Chat App event from Google Chat.\n\nVerifies the bearer JWT (proves the request comes from Google), parses\nthe event, looks up the per-space (workspace_id, agent_id) binding, and\ndispatches to ``process_googlechat_event`` in the background.\n\nResponse shape: returns a synchronous Chat message for review-critical\ninteractions (welcome, help, app commands, unbound setup guidance) and\n``{}`` for bound agent messages that continue in the background. For\nWorkspace Add-on payloads, synchronous messages must use the\n``hostAppDataAction.chatDataAction.createMessageAction`` wrapper; classic\nChat API events use a plain ``Message`` object. NEVER return our standard\n``{\"status\": \"accepted\"}`` here — Chat will flash \"not responding\" before\nthe async reply lands.","operationId":"googlechat_webhook_v1_webhooks_googlechat_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Googlechat Webhook V1 Webhooks Googlechat Post"}}}}},"x-trellis-raw-tags":["webhooks"]}},"/v1/webhooks/agentmail":{"post":{"tags":["Webhooks and Events"],"summary":"Agentmail Webhook","description":"Receive webhook events from AgentMail (via Svix).\n\nVerifies the Svix signature, then dispatches message.received events\nto the email handler for agent processing.","operationId":"agentmail_webhook_v1_webhooks_agentmail_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"}}}}},"x-trellis-raw-tags":["webhooks"]}},"/v1/webhooks/recall/status":{"post":{"tags":["Webhooks and Events"],"summary":"Recall Status Webhook","description":"Receive bot lifecycle status_change events from Recall.ai (Svix delivery).\n\nEvents: joining_call, in_waiting_room, in_call_not_recording,\nin_call_recording, call_ended, done, fatal, analysis_done","operationId":"recall_status_webhook_v1_webhooks_recall_status_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"}}}}},"x-trellis-raw-tags":["webhooks"]}},"/v1/webhooks/recall/{workspace_id}/transcript":{"post":{"tags":["Webhooks and Events"],"summary":"Recall Transcript Webhook","description":"Receive real-time transcript.data events from Recall.ai.\n\nConfigured per-bot in recording_config.real_time_endpoints.\nToken-based authentication via query parameter.","operationId":"recall_transcript_webhook_v1_webhooks_recall__workspace_id__transcript_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["webhooks"]}},"/v1/webhooks/trigger/{token}":{"post":{"tags":["Webhooks and Events"],"summary":"Custom Webhook Trigger","description":"Generic inbound webhook for WEBHOOK-triggered workflows.\n\nThe token in the URL identifies the specific workflow.\n\nThe body validation contract (PROD-1922 Phase F runtime):\n  * Workflow without `trigger_config.payload_shape` — any JSON is\n    accepted and the run is enqueued in the background. Backward\n    compatible with every webhook workflow that pre-dates Phase F.\n  * Workflow WITH `payload_shape` — the inbound JSON is validated\n    against that JSON Schema synchronously here. On mismatch the\n    caller gets an HTTP 400 with a specific field/error message and\n    no `workflow_runs` row is ever created.\n\nUnknown tokens (no matching active workflow) still return 200 — we\ndon't leak which tokens are real to anonymous callers.","operationId":"custom_webhook_trigger_v1_webhooks_trigger__token__post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Custom Webhook Trigger V1 Webhooks Trigger  Token  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["webhooks"]}},"/v1/webhooks/slack/mobile-release-status":{"post":{"tags":["Webhooks and Events"],"summary":"Mobile Release Status Command","description":"Verify the Slack command and dispatch the read-only EAS status workflow.","operationId":"mobile_release_status_command_v1_webhooks_slack_mobile_release_status_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"x-trellis-raw-tags":["webhooks"]}},"/v1/webhooks/notion/{workspace_id}/setup/{setup_secret_path}":{"post":{"tags":["Webhooks and Events"],"summary":"Notion Kb Webhook","operationId":"notion_kb_webhook_v1_webhooks_notion__workspace_id__setup__setup_secret_path__post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"setup_secret_path","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Setup Secret Path"}},{"name":"setup_secret","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"One-time Trellis setup secret for Notion verification payloads.","title":"Setup Secret"},"description":"One-time Trellis setup secret for Notion verification payloads."},{"name":"X-Trellis-Webhook-Setup-Secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Webhook-Setup-Secret"}},{"name":"X-Notion-Signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Notion-Signature"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotionWebhookResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["webhooks"]}},"/v1/webhooks/notion/{workspace_id}":{"post":{"tags":["Webhooks and Events"],"summary":"Notion Kb Webhook","operationId":"notion_kb_webhook_v1_webhooks_notion__workspace_id__post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"setup_secret","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"One-time Trellis setup secret for Notion verification payloads.","title":"Setup Secret"},"description":"One-time Trellis setup secret for Notion verification payloads."},{"name":"setup_secret_path","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Setup Secret Path"}},{"name":"X-Trellis-Webhook-Setup-Secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Webhook-Setup-Secret"}},{"name":"X-Notion-Signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Notion-Signature"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotionWebhookResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["webhooks"]}},"/v1/webhooks/company-knowledge/github":{"post":{"tags":["Webhooks and Events"],"summary":"Handle Company Knowledge Github Webhook","operationId":"handle_company_knowledge_github_webhook_v1_webhooks_company_knowledge_github_post","parameters":[{"name":"X-Hub-Signature-256","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Hub-Signature-256"}},{"name":"X-GitHub-Event","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Github-Event"}},{"name":"X-GitHub-Delivery","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Github-Delivery"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["company-knowledge"]}},"/v1/webhooks/company-knowledge/linear":{"post":{"tags":["Webhooks and Events"],"summary":"Handle Company Knowledge Linear Webhook","operationId":"handle_company_knowledge_linear_webhook_v1_webhooks_company_knowledge_linear_post","parameters":[{"name":"Linear-Signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linear-Signature"}},{"name":"Linear-Delivery","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linear-Delivery"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["company-knowledge"]}},"/api/v1/public/manual/{token}/open-door":{"post":{"tags":["Public and Health"],"summary":"Open Door","description":"Open the door using the Shelly smart lock.\n\nValidates the token and triggers the door relay.\nThe token must be valid and the property must have a smart lock configured.","operationId":"open_door_api_v1_public_manual__token__open_door_post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DoorOpenResponse"}}}},"404":{"description":"Token not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/routes__v1__public__manual__ErrorResponse"}}}},"403":{"description":"Token invalid or no smart lock","content":{"application/json":{"schema":{"$ref":"#/components/schemas/routes__v1__public__manual__ErrorResponse"}}}},"503":{"description":"Device offline or error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/routes__v1__public__manual__ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["public-manual"]}},"/api/v1/public/shared-task/{token}":{"get":{"tags":["Public and Health"],"summary":"Get Shared Task","description":"Get task data by share token.\n\nThe token must be active and not expired.\nReturns task information, checklist items, and photos.","operationId":"get_shared_task_api_v1_public_shared_task__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedTaskResponse"}}}},"404":{"description":"Link not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/routes__v1__public__shared_tasks__ErrorResponse"}}}},"403":{"description":"Link revoked or expired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/routes__v1__public__shared_tasks__ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["public-shared-task"]}},"/api/v1/public/shared-task/{token}/complete":{"post":{"tags":["Public and Health"],"summary":"Complete Shared Task","description":"Mark a task as complete via share token.\n\nUpdates the task status to COMPLETED and records completion on the shared link.","operationId":"complete_shared_task_api_v1_public_shared_task__token__complete_post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompleteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompleteResponse"}}}},"404":{"description":"Link not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/routes__v1__public__shared_tasks__ErrorResponse"}}}},"403":{"description":"Link revoked or expired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/routes__v1__public__shared_tasks__ErrorResponse"}}}},"409":{"description":"Task already completed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/routes__v1__public__shared_tasks__ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["public-shared-task"]}},"/api/v1/public/shared-task/{token}/upload":{"post":{"tags":["Public and Health"],"summary":"Upload Shared Task Photo","description":"Upload a photo to a task via share token.\n\nUploads the file to Supabase Storage and creates a media record.\nMax file size: 10MB.","operationId":"upload_shared_task_photo_api_v1_public_shared_task__token__upload_post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_shared_task_photo_api_v1_public_shared_task__token__upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadResponse"}}}},"404":{"description":"Link not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/routes__v1__public__shared_tasks__ErrorResponse"}}}},"403":{"description":"Link revoked or expired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/routes__v1__public__shared_tasks__ErrorResponse"}}}},"413":{"description":"File too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/routes__v1__public__shared_tasks__ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["public-shared-task"]}},"/api/v1/public/shared-task/{token}/comment":{"post":{"tags":["Public and Health"],"summary":"Add Shared Task Comment","description":"Add a comment to the task via share token (without completing the task).\n\nThe comment appears in the task's comments with the technician name as author,\nor \"External task\" if no technician name was set on the link.","operationId":"add_shared_task_comment_api_v1_public_shared_task__token__comment_post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentResponse"}}}},"404":{"description":"Link not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/routes__v1__public__shared_tasks__ErrorResponse"}}}},"403":{"description":"Link revoked or expired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/routes__v1__public__shared_tasks__ErrorResponse"}}}},"400":{"description":"Comment content required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/routes__v1__public__shared_tasks__ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["public-shared-task"]}},"/v1/integrations/slack/install":{"get":{"tags":["Integrations and Sync"],"summary":"Slack Install","description":"Redirect to Slack OAuth for a provisioned per-agent Slack app.","operationId":"slack_install_v1_integrations_slack_install_get","parameters":[{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"query","required":true,"schema":{"type":"string","title":"Agent Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["slack"]}},"/v1/integrations/slack/callback":{"get":{"tags":["Integrations and Sync"],"summary":"Slack Callback","description":"Slack OAuth callback. Exchanges code for bot token.","operationId":"slack_callback_v1_integrations_slack_callback_get","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","title":"Code"}},{"name":"state","in":"query","required":true,"schema":{"type":"string","title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["slack"]}},"/v1/integrations/slack/workspace/callback":{"get":{"tags":["Integrations and Sync"],"summary":"Slack Workspace Callback","description":"Slack OAuth callback for the workspace-level Trellis Slack app.","operationId":"slack_workspace_callback_v1_integrations_slack_workspace_callback_get","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","title":"Code"}},{"name":"state","in":"query","required":true,"schema":{"type":"string","title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["slack"]}},"/v1/integrations/composio/callback":{"get":{"tags":["Integrations and Sync"],"summary":"Composio Callback","description":"Composio OAuth callback. Syncs connected accounts and redirects.\n\nThe `state` parameter is embedded in our callback URL when we initiate the\nOAuth flow. Composio passes it through as a query parameter on redirect.\n\nState format: \"workspace_id:agent_id:toolkit\" where agent_id may be empty\nfor workspace-level connections (legacy).","operationId":"composio_callback_v1_integrations_composio_callback_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"type":"string","title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["composio"]}},"/v1/agent/interactions/{continuation_id}":{"get":{"tags":["Agent Runtime"],"summary":"Get Http Interaction","description":"Read one tenant- and actor-scoped durable HTTP interaction.","operationId":"get_http_interaction_v1_agent_interactions__continuation_id__get","parameters":[{"name":"continuation_id","in":"path","required":true,"schema":{"type":"string","title":"Continuation Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpInteraction"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-invoke"]}},"/v1/agent/interactions/{continuation_id}/resolve":{"post":{"tags":["Agent Runtime"],"summary":"Resolve Http Interaction","description":"Resolve one authenticated HTTP interaction and wake its native SDK run.","operationId":"resolve_http_interaction_v1_agent_interactions__continuation_id__resolve_post","parameters":[{"name":"continuation_id","in":"path","required":true,"schema":{"type":"string","title":"Continuation Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveHttpInteractionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpInteraction"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-invoke"]}},"/v1/agent/invoke":{"post":{"tags":["Agent Runtime"],"summary":"Invoke Agent","operationId":"invoke_agent_v1_agent_invoke_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"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/InvokeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvokeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-invoke"]}},"/v1/internal/langsmith/alert-webhook":{"post":{"tags":["Internal Admin"],"summary":"Ingest Langsmith Alert Webhook","description":"Receive LangSmith Alerts (PROD-5630) and forward to Slack.\n\nAlerts are aggregate threshold breaches (error rate, latency, feedback\nscore, cost) on the tracing project — distinct from per-trace automation\nrule webhooks, which land on /quality-webhook. No DB rows; Slack only.","operationId":"ingest_langsmith_alert_webhook_v1_internal_langsmith_alert_webhook_post","parameters":[{"name":"x-langsmith-webhook-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Langsmith-Webhook-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LangSmithAlertWebhookResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["langsmith-quality"]}},"/v1/internal/langsmith/quality-webhook":{"post":{"tags":["Internal Admin"],"summary":"Ingest Langsmith Quality Webhook","operationId":"ingest_langsmith_quality_webhook_v1_internal_langsmith_quality_webhook_post","parameters":[{"name":"x-langsmith-webhook-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Langsmith-Webhook-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LangSmithQualityWebhookResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["langsmith-quality"]}},"/v1/internal/langsmith/engine-webhook":{"post":{"tags":["Internal Admin"],"summary":"Ingest Langsmith Engine Webhook","operationId":"ingest_langsmith_engine_webhook_v1_internal_langsmith_engine_webhook_post","parameters":[{"name":"x-langsmith-webhook-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Langsmith-Webhook-Secret"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LangSmithEngineWebhookResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["langsmith-quality"]}},"/v1/agent/sessions/{session_id}/subscribe_direct":{"get":{"tags":["Agent Runtime"],"summary":"Subscribe Session Events Direct","description":"Direct SSE endpoint — browser → Fly.io, bypasses the Vercel proxy.\n\nCuts ~20-40ms per chunk off the token-to-browser path (one hop instead\nof two) and sidesteps the 300s Vercel Fluid Compute timeout on long\nagent runs.\n\nAuth is handled inline (this endpoint is on `public_router` which has\nno shared verify_bearer_api_key dep). JWT-ONLY on purpose — the shared\nTRELLIS_API_KEY is server-only and cannot prove per-user tenant access.\nServer-to-server callers use /subscribe on ai_router via the Vercel proxy\ninstead.\n\nAuth outcomes:\n  - Bearer <supabase_jwt> + session access → 200, SSE stream begins\n  - Missing/malformed header, invalid/expired JWT, SUPABASE_JWT_SECRET\n    not configured → 401\n  - Valid JWT but user has no workspace access to the session → 403\n\nThe SSE stream itself reuses _session_sse_event_generator — same Redis\ntail loop as /subscribe, so cross-machine fan-out + replay buffer\nbehavior is identical.","operationId":"subscribe_session_events_direct_v1_agent_sessions__session_id__subscribe_direct_get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"live_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Live Only"}},{"name":"message_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id"}},{"name":"since_seq","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Since Seq"}},{"name":"text_offset","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Text Offset"}},{"name":"after_stream_seq","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"After Stream Seq"}},{"name":"after_reasoning_seq","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"After Reasoning Seq"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-public"]}},"/v1/agent/sessions/{session_id}/durable-session-access":{"post":{"tags":["Agent Runtime"],"summary":"Get Durable Session Access","description":"Create browser access after direct JWT or signed app-server membership checks.","operationId":"get_durable_session_access_v1_agent_sessions__session_id__durable_session_access_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DurableSessionAccessRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-public"]}},"/v1/agent/sessions/{session_id}/runs_direct":{"post":{"tags":["Agent Runtime"],"summary":"Start Background Run Direct","description":"Start a run browser-to-Fly with JWT-only session authorization.\n\nThis is the mutation sibling of ``subscribe_direct``. It removes the\nrepeated Vercel auth/membership/billing proxy gate from every chat turn,\nwhile retaining the same Supabase JWT and session-access check. The\nauthenticated token identity always wins over a caller-supplied\n``sender_user_id``.","operationId":"start_background_run_direct_v1_agent_sessions__session_id__runs_direct_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartBackgroundRunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-public"]}},"/v1/agent-sandbox-gateway/calls":{"post":{"tags":["Agent Runtime"],"summary":"Call Agent Sandbox Gateway","operationId":"call_agent_sandbox_gateway_v1_agent_sandbox_gateway_calls_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SandboxGatewayCallsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Call Agent Sandbox Gateway V1 Agent Sandbox Gateway Calls Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-sandbox-gateway"]}},"/v1/internal/ai-gateway/health":{"get":{"tags":["Internal Admin"],"summary":"Health","description":"Verify caller authentication without spending model tokens.","operationId":"health_v1_internal_ai_gateway_health_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Trellis-AI-Gateway-Caller","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Caller"}},{"name":"X-Trellis-AI-Gateway-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Workspace-Id"}},{"name":"X-Trellis-AI-Gateway-Actor-Kind","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Actor-Kind"}},{"name":"X-Trellis-AI-Gateway-Actor-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Actor-Id"}},{"name":"X-Trellis-AI-Gateway-Timestamp","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Timestamp"}},{"name":"X-Trellis-AI-Gateway-Signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Signature"}},{"name":"X-Trellis-AI-Gateway-Nonce","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Nonce"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Health V1 Internal Ai Gateway Health Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/ai-gateway/completion":{"post":{"tags":["Internal Admin"],"summary":"Completion","description":"Run an approved non-streaming Gemini completion.","operationId":"completion_v1_internal_ai_gateway_completion_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Trellis-AI-Gateway-Caller","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Caller"}},{"name":"X-Trellis-AI-Gateway-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Workspace-Id"}},{"name":"X-Trellis-AI-Gateway-Actor-Kind","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Actor-Kind"}},{"name":"X-Trellis-AI-Gateway-Actor-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Actor-Id"}},{"name":"X-Trellis-AI-Gateway-Timestamp","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Timestamp"}},{"name":"X-Trellis-AI-Gateway-Signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Signature"}},{"name":"X-Trellis-AI-Gateway-Nonce","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Nonce"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompletionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Completion V1 Internal Ai Gateway Completion Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/ai-gateway/completion/translation":{"post":{"tags":["Internal Admin"],"summary":"Translation Completion","description":"Serve trellis-app translations until this caller moves to the V4 runtime.","operationId":"translation_completion_v1_internal_ai_gateway_completion_translation_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Trellis-AI-Gateway-Caller","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Caller"}},{"name":"X-Trellis-AI-Gateway-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Workspace-Id"}},{"name":"X-Trellis-AI-Gateway-Actor-Kind","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Actor-Kind"}},{"name":"X-Trellis-AI-Gateway-Actor-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Actor-Id"}},{"name":"X-Trellis-AI-Gateway-Timestamp","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Timestamp"}},{"name":"X-Trellis-AI-Gateway-Signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Signature"}},{"name":"X-Trellis-AI-Gateway-Nonce","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Nonce"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompletionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Translation Completion V1 Internal Ai Gateway Completion Translation Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/ai-gateway/structured":{"post":{"tags":["Internal Admin"],"summary":"Structured","description":"Run an approved JSON-schema constrained Gemini completion.","operationId":"structured_v1_internal_ai_gateway_structured_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Trellis-AI-Gateway-Caller","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Caller"}},{"name":"X-Trellis-AI-Gateway-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Workspace-Id"}},{"name":"X-Trellis-AI-Gateway-Actor-Kind","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Actor-Kind"}},{"name":"X-Trellis-AI-Gateway-Actor-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Actor-Id"}},{"name":"X-Trellis-AI-Gateway-Timestamp","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Timestamp"}},{"name":"X-Trellis-AI-Gateway-Signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Signature"}},{"name":"X-Trellis-AI-Gateway-Nonce","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Nonce"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StructuredRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Structured V1 Internal Ai Gateway Structured Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/ai-gateway/structured/inbox-classification":{"post":{"tags":["Internal Admin"],"summary":"Inbox Classification","description":"Run inbox classification on Gemini Flash with policy fallback.","operationId":"inbox_classification_v1_internal_ai_gateway_structured_inbox_classification_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Trellis-AI-Gateway-Caller","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Caller"}},{"name":"X-Trellis-AI-Gateway-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Workspace-Id"}},{"name":"X-Trellis-AI-Gateway-Actor-Kind","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Actor-Kind"}},{"name":"X-Trellis-AI-Gateway-Actor-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Actor-Id"}},{"name":"X-Trellis-AI-Gateway-Timestamp","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Timestamp"}},{"name":"X-Trellis-AI-Gateway-Signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Signature"}},{"name":"X-Trellis-AI-Gateway-Nonce","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Nonce"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StructuredRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Inbox Classification V1 Internal Ai Gateway Structured Inbox Classification Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/ai-gateway/structured/fast-analysis":{"post":{"tags":["Internal Admin"],"summary":"Fast Analysis","description":"Run latency-sensitive structured analysis on Gemini Flash.","operationId":"fast_analysis_v1_internal_ai_gateway_structured_fast_analysis_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Trellis-AI-Gateway-Caller","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Caller"}},{"name":"X-Trellis-AI-Gateway-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Workspace-Id"}},{"name":"X-Trellis-AI-Gateway-Actor-Kind","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Actor-Kind"}},{"name":"X-Trellis-AI-Gateway-Actor-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Actor-Id"}},{"name":"X-Trellis-AI-Gateway-Timestamp","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Timestamp"}},{"name":"X-Trellis-AI-Gateway-Signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Signature"}},{"name":"X-Trellis-AI-Gateway-Nonce","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Nonce"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StructuredRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fast Analysis V1 Internal Ai Gateway Structured Fast Analysis Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/ai-gateway/embeddings":{"post":{"tags":["Internal Admin"],"summary":"Embeddings","description":"Generate embeddings with a server-owned model and routing policy.","operationId":"embeddings_v1_internal_ai_gateway_embeddings_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Trellis-AI-Gateway-Caller","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Caller"}},{"name":"X-Trellis-AI-Gateway-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Workspace-Id"}},{"name":"X-Trellis-AI-Gateway-Actor-Kind","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Actor-Kind"}},{"name":"X-Trellis-AI-Gateway-Actor-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Actor-Id"}},{"name":"X-Trellis-AI-Gateway-Timestamp","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Timestamp"}},{"name":"X-Trellis-AI-Gateway-Signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Signature"}},{"name":"X-Trellis-AI-Gateway-Nonce","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Nonce"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmbeddingRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Embeddings V1 Internal Ai Gateway Embeddings Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/ai-gateway/transcriptions":{"post":{"tags":["Internal Admin"],"summary":"Transcriptions","description":"Transcribe bounded audio with server-owned model and routing policy.","operationId":"transcriptions_v1_internal_ai_gateway_transcriptions_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Trellis-AI-Gateway-Caller","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Caller"}},{"name":"X-Trellis-AI-Gateway-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Workspace-Id"}},{"name":"X-Trellis-AI-Gateway-Actor-Kind","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Actor-Kind"}},{"name":"X-Trellis-AI-Gateway-Actor-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Actor-Id"}},{"name":"X-Trellis-AI-Gateway-Timestamp","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Timestamp"}},{"name":"X-Trellis-AI-Gateway-Signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Signature"}},{"name":"X-Trellis-AI-Gateway-Nonce","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Nonce"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranscriptionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Transcriptions V1 Internal Ai Gateway Transcriptions Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/ai-gateway/images":{"post":{"tags":["Internal Admin"],"summary":"Images","description":"Generate bounded image media with server-owned routing.","operationId":"images_v1_internal_ai_gateway_images_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Trellis-AI-Gateway-Caller","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Caller"}},{"name":"X-Trellis-AI-Gateway-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Workspace-Id"}},{"name":"X-Trellis-AI-Gateway-Actor-Kind","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Actor-Kind"}},{"name":"X-Trellis-AI-Gateway-Actor-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Actor-Id"}},{"name":"X-Trellis-AI-Gateway-Timestamp","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Timestamp"}},{"name":"X-Trellis-AI-Gateway-Signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Signature"}},{"name":"X-Trellis-AI-Gateway-Nonce","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Nonce"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Images V1 Internal Ai Gateway Images Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/ai-gateway/speech":{"post":{"tags":["Internal Admin"],"summary":"Speech","description":"Generate bounded speech audio with server-owned routing.","operationId":"speech_v1_internal_ai_gateway_speech_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Trellis-AI-Gateway-Caller","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Caller"}},{"name":"X-Trellis-AI-Gateway-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Workspace-Id"}},{"name":"X-Trellis-AI-Gateway-Actor-Kind","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Actor-Kind"}},{"name":"X-Trellis-AI-Gateway-Actor-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Actor-Id"}},{"name":"X-Trellis-AI-Gateway-Timestamp","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Timestamp"}},{"name":"X-Trellis-AI-Gateway-Signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Signature"}},{"name":"X-Trellis-AI-Gateway-Nonce","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Nonce"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeechRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Speech V1 Internal Ai Gateway Speech Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/ai-gateway/realtime/transcription-sessions":{"post":{"tags":["Internal Admin"],"summary":"Realtime Transcription Sessions","description":"Mint a short-lived browser WebRTC transcription session.","operationId":"realtime_transcription_sessions_v1_internal_ai_gateway_realtime_transcription_sessions_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Trellis-AI-Gateway-Caller","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Caller"}},{"name":"X-Trellis-AI-Gateway-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Workspace-Id"}},{"name":"X-Trellis-AI-Gateway-Actor-Kind","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Actor-Kind"}},{"name":"X-Trellis-AI-Gateway-Actor-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Actor-Id"}},{"name":"X-Trellis-AI-Gateway-Timestamp","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Timestamp"}},{"name":"X-Trellis-AI-Gateway-Signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Signature"}},{"name":"X-Trellis-AI-Gateway-Nonce","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Nonce"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RealtimeSessionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Realtime Transcription Sessions V1 Internal Ai Gateway Realtime Transcription Sessions Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/ai-gateway/stream":{"post":{"tags":["Internal Admin"],"summary":"Stream","description":"Stream normalized Gemini completion events.","operationId":"stream_v1_internal_ai_gateway_stream_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Trellis-AI-Gateway-Caller","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Caller"}},{"name":"X-Trellis-AI-Gateway-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Workspace-Id"}},{"name":"X-Trellis-AI-Gateway-Actor-Kind","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Actor-Kind"}},{"name":"X-Trellis-AI-Gateway-Actor-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Actor-Id"}},{"name":"X-Trellis-AI-Gateway-Timestamp","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Timestamp"}},{"name":"X-Trellis-AI-Gateway-Signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Signature"}},{"name":"X-Trellis-AI-Gateway-Nonce","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Ai-Gateway-Nonce"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StreamRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/sync/{workspace_id}/breezeway/full":{"post":{"tags":["Integrations and Sync"],"summary":"Trigger Breezeway Full Sync","description":"Trigger full sync for Breezeway integration.\n\nReturns immediately and runs sync in background.\nRuns sequentially: properties -> tags -> people -> tasks -> visits.","operationId":"trigger_breezeway_full_sync_v1_sync__workspace_id__breezeway_full_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["sync"]}},"/v1/sync/{workspace_id}/breezeway/sync-shifts":{"post":{"tags":["Integrations and Sync"],"summary":"Trigger Breezeway Shift Sync","description":"Trigger shift sync from Breezeway people schedules.\n\nImports weekly shift templates from Breezeway and creates shift rows\nfor the current and next week. Only runs if sync_shifts is enabled\nin the integration credentials.","operationId":"trigger_breezeway_shift_sync_v1_sync__workspace_id__breezeway_sync_shifts_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"integration_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Integration Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/BreezewayShiftSyncRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["sync"]}},"/v1/sync/{workspace_id}/breezeway/sync-elements":{"post":{"tags":["Integrations and Sync"],"summary":"Trigger Breezeway Elements Sync","description":"Trigger elements sync from Breezeway.\n\nSyncs WiFi data from Breezeway properties into property_elements\nand Breezeway supplies into element_catalog_items.","operationId":"trigger_breezeway_elements_sync_v1_sync__workspace_id__breezeway_sync_elements_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["sync"]}},"/v1/sync/{workspace_id}/{entity}":{"post":{"tags":["Integrations and Sync"],"summary":"Trigger Sync","description":"Trigger manual sync for a specific entity.\n\nSupported entities:\n- tasks: Sync tasks from Breezeway\n- people: Sync people from Breezeway\n- templates: Sync templates from Breezeway\n- tags: Sync tags from Breezeway","operationId":"trigger_sync_v1_sync__workspace_id___entity__post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"entity","in":"path","required":true,"schema":{"$ref":"#/components/schemas/SyncEntity"}},{"name":"last_update","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Only sync records updated after this time","title":"Last Update"},"description":"Only sync records updated after this time"},{"name":"force_full","in":"query","required":false,"schema":{"type":"boolean","description":"Force full sync ignoring last_update","default":false,"title":"Force Full"},"description":"Force full sync ignoring last_update"},{"name":"check_out_date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Include reservations with checkout >= this date (YYYY-MM-DD). API defaults to future checkouts only.","title":"Check Out Date From"},"description":"Include reservations with checkout >= this date (YYYY-MM-DD). API defaults to future checkouts only."},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["sync"]}},"/v1/ai/action":{"post":{"tags":["Agent Runtime"],"summary":"Perform Ai Action","description":"Perform an AI-powered action.\n\nActions:\n- classify_message: Classify a message into categories\n- summarize_conversation: Summarize a conversation","operationId":"perform_ai_action_v1_ai_action_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIActionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["ai"]}},"/v1/ai/copilot-draft":{"post":{"tags":["Agent Runtime"],"summary":"Copilot Draft","description":"Stream an AI-drafted message.\n\nFast path (lite LLM, no tools): `draft` (Cmd+G textarea helper) and\n`edit` with `current_text` (rephrase). Optimised for fast freeform text\nassist where conversation context is sufficient.\n\nFull path (agent runtime, tools): `generate` (✨ \"Generate response\"\nbutton). Uses KB / property / memory tools so replies are grounded —\nfast-path drafts hallucinated property facts (PROD-2754).","operationId":"copilot_draft_v1_ai_copilot_draft_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CopilotDraftRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["ai"]}},"/v1/ai/classify-task":{"post":{"tags":["Agent Runtime"],"summary":"Classify Task Endpoint","description":"Classify a task: assign issue tags, room, and element.","operationId":"classify_task_endpoint_v1_ai_classify_task_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClassifyTaskRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["ai"]}},"/v1/internal/agent-actions/autopilot-disabled-alert":{"post":{"tags":["Internal Admin"],"summary":"Post Autopilot Disabled Alert","description":"Execute the fixed-destination alert as the trusted Trellis agent.","operationId":"post_autopilot_disabled_alert_v1_internal_agent_actions_autopilot_disabled_alert_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutopilotDisabledAlertRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutopilotDisabledAlertResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/company-knowledge/codebase-docs/refresh":{"post":{"tags":["Internal Admin"],"summary":"Refresh Platform Codebase Docs","description":"Refresh generated Platform Wiki documents from a clean main checkout.","operationId":"refresh_platform_codebase_docs_v1_internal_company_knowledge_codebase_docs_refresh_post","parameters":[{"name":"x-codebase-docs-refresh-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Codebase-Docs-Refresh-Key"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepoRefreshCommand"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Refresh Platform Codebase Docs V1 Internal Company Knowledge Codebase Docs Refresh Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/triage-loop/tick":{"post":{"tags":["Internal Admin"],"summary":"Triage Loop Tick","description":"Run one deterministic triage-loop tick (cost_latency safe-dedup + Slack digest).\n\nTriggered daily by the Trigger.dev `triage-loop-cron` task. The server-only\nscheduler secret header gates execution entirely — a caller with only the shared\nbearer gets 403 and never touches Redis/Linear/Slack. Write mode additionally\nrequires the API armed (TRIAGE_LOOP_WRITES_ENABLED). The LLM classify/gate half\nstays in the local Claude Code triage-loop skill.","operationId":"triage_loop_tick_v1_internal_triage_loop_tick_post","parameters":[{"name":"x-triage-loop-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Triage-Loop-Secret"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Triage Loop Tick V1 Internal Triage Loop Tick Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/property-cleaning/sweep":{"post":{"tags":["Internal Admin"],"summary":"Property Cleaning Sweep","description":"Run the property cleaning-status sweeps (checkout->dirty, and\noptionally needs_refresh).\n\nTriggered hourly by the Trigger.dev `property-cleaning-sweep-cron` task so\nthe sweeps do not depend on the in-process APScheduler, which stops\nsilently when BACKGROUND_PRIMARY_MACHINE_ID points at a dead machine\n(2026-06 outage). The dirty sweep runs every call: it powers the\ncheck-in -> dirty and checkout -> dirty arrows and is scoped to opted-in\nworkspaces, so hourly cost scales with adoption, not fleet size. The\nneeds_refresh sweep measures staleness in days, so the cron requests it on\none run per day only. Both sweeps are idempotent — repeat calls are\nno-ops. Also checks the APScheduler Redis heartbeat and raises a Sentry\nerror when it is stale, so a dead scheduler is loud.","operationId":"property_cleaning_sweep_v1_internal_property_cleaning_sweep_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_property_cleaning_sweep_v1_internal_property_cleaning_sweep_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Property Cleaning Sweep V1 Internal Property Cleaning Sweep Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/property-timezone/reconcile":{"post":{"tags":["Internal Admin"],"summary":"Property Timezone Reconcile","description":"Fill missing property timezones from coordinates and flag operational gaps.\n\nTriggered daily by the Trigger.dev `property-timezone-reconcile-cron` task\nso it does not depend on the in-process APScheduler. Idempotent and\nnon-clobbering: it only fills NULL timezones (from lat/lng) and never\noverwrites a value a PMS sync already set. Authed by the shared internal\nBearer key (router dependency).","operationId":"property_timezone_reconcile_v1_internal_property_timezone_reconcile_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_property_timezone_reconcile_v1_internal_property_timezone_reconcile_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Property Timezone Reconcile V1 Internal Property Timezone Reconcile Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/db-event":{"post":{"tags":["Internal Admin"],"summary":"Receive Db Event","description":"Receive database change events from Supabase triggers.\n\nThis endpoint is called by pg_notify webhooks or HTTP triggers\nwhen database records are inserted, updated, or deleted.\n\nHandlers are dispatched via the tracked task scheduler so they survive\nindependent of the HTTP request lifecycle and retain strong references.\nFastAPI BackgroundTasks silently dropped handlers under burst load from\npg_net triggers.","operationId":"receive_db_event_v1_internal_db_event_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DBEventPayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DBEventResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/sync-tools":{"post":{"tags":["Internal Admin"],"summary":"Sync Tools","description":"Sync built-in tools from the Python ToolRegistry to the `tools` DB table.\n\nCalled on API startup and can be triggered manually after deployments.","operationId":"sync_tools_v1_internal_sync_tools_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Sync Tools V1 Internal Sync Tools Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/seed-default-permissions":{"post":{"tags":["Internal Admin"],"summary":"Seed Default Permissions","description":"Seed default tool permissions and prompt sections for all workspaces.\n\nOnly affects contact types that have ZERO tool permissions configured.\nSafe to re-run multiple times.","operationId":"seed_default_permissions_v1_internal_seed_default_permissions_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Seed Default Permissions V1 Internal Seed Default Permissions Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/sync-task-visit":{"post":{"tags":["Internal Admin"],"summary":"Sync Task Visit","description":"Ensure a task's visit_tasks link matches its current assigned_to and scheduled_date.\n\nUse when task and visit are out of sync (e.g. operator does not see an assigned task).\nRe-reads the task from DB and links it to the correct visit for (property, date, assignee).","operationId":"sync_task_visit_v1_internal_sync_task_visit_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncTaskVisitBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Sync Task Visit V1 Internal Sync Task Visit Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/indexing/process":{"post":{"tags":["Internal Admin"],"summary":"Process Indexing Job Endpoint","description":"Process one Vercel-delivered, workspace-scoped indexing job.","operationId":"process_indexing_job_endpoint_v1_internal_indexing_process_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexingJobRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Process Indexing Job Endpoint V1 Internal Indexing Process Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal-indexing"]}},"/v1/internal/workflows/agent-plan-steps/{step_id}/execute":{"post":{"tags":["Internal Admin"],"summary":"Execute Agent Plan Step From Trigger","description":"Execute a WAITING agent plan step from the app-side trigger resolver.\n\nThe app resolver owns predicate matching; this endpoint only verifies\nworkspace ownership and hands execution back to the plan engine.","operationId":"execute_agent_plan_step_from_trigger_v1_internal_workflows_agent_plan_steps__step_id__execute_post","parameters":[{"name":"step_id","in":"path","required":true,"schema":{"type":"string","title":"Step Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecutePlanStepTriggerRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Execute Agent Plan Step From Trigger V1 Internal Workflows Agent Plan Steps  Step Id  Execute Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal-workflows"]}},"/v1/internal/workflows/runs":{"post":{"tags":["Internal Admin"],"summary":"Create Run","description":"Create a workflow run. Loads the workflow + current version,\nbuilds initial context, validates the step graph, creates a\nworkflow_runs record, and returns everything Trigger.dev needs.","operationId":"create_run_v1_internal_workflows_runs_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRunRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Run V1 Internal Workflows Runs Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal-workflows"]}},"/v1/internal/workflows/runs/{run_id}/steps":{"post":{"tags":["Internal Admin"],"summary":"Execute Step","description":"Execute a single workflow step. Called by Trigger.dev for each step\nin the graph walk.","operationId":"execute_step_v1_internal_workflows_runs__run_id__steps_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteStepRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal-workflows"]}},"/v1/internal/workflows/runs/{run_id}/mocked-step":{"post":{"tags":["Internal Admin"],"summary":"Record Mocked Step Run","description":"Persist dry-run mocked step output without dispatching the real handler.\n\nThis is intentionally dry-run only. It lets the real Trigger.dev walker\nkeep durable workflow_step_runs provenance for mocked side effects while\nguaranteeing no provider/tool side effect runs.","operationId":"record_mocked_step_run_v1_internal_workflows_runs__run_id__mocked_step_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordMockedStepRunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Record Mocked Step Run V1 Internal Workflows Runs  Run Id  Mocked Step Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal-workflows"]}},"/v1/internal/workflows/runs/{run_id}/complete":{"post":{"tags":["Internal Admin"],"summary":"Complete Run","description":"Finalize a workflow run. Called by Trigger.dev when the workflow\ncompletes (successfully or with errors).","operationId":"complete_run_v1_internal_workflows_runs__run_id__complete_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompleteRunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Complete Run V1 Internal Workflows Runs  Run Id  Complete Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal-workflows"]}},"/v1/internal/workflows/approval-token":{"post":{"tags":["Internal Admin"],"summary":"Store Approval Token","operationId":"store_approval_token_v1_internal_workflows_approval_token_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreApprovalTokenRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Store Approval Token V1 Internal Workflows Approval Token Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal-workflows"]}},"/v1/internal/workflows/{workflow_id}/version":{"get":{"tags":["Internal Admin"],"summary":"Get Current Version","description":"Return the current version's step graph JSON for a workflow.\nTrigger.dev uses this to load the step definitions.","operationId":"get_current_version_v1_internal_workflows__workflow_id__version_get","parameters":[{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string","title":"Workflow Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Current Version V1 Internal Workflows  Workflow Id  Version Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal-workflows"]}},"/v1/internal/workflows/pending-crons":{"get":{"tags":["Internal Admin"],"summary":"Get Pending Crons","description":"Return due ticks and recoverable pre-step CRON claims, read-only.\n\nRun creation atomically owns a tick and advances ``next_run_at``. If that\ntransaction commits but its HTTP response is lost, the original RUNNING\nrow is re-emitted after fifteen minutes only when no step row exists. Trigger\nthen retries with the persisted version and original tick.","operationId":"get_pending_crons_v1_internal_workflows_pending_crons_get","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get Pending Crons V1 Internal Workflows Pending Crons Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal-workflows"]}},"/v1/internal/workflows/due-crons":{"get":{"tags":["Internal Admin"],"summary":"Get Due Crons","description":"Claim CRON workflows that are due to run (next_run_at <= now) and advance\ntheir next_run_at inside the same transaction to avoid double-triggering.","operationId":"get_due_crons_v1_internal_workflows_due_crons_get","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get Due Crons V1 Internal Workflows Due Crons Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal-workflows"]}},"/v1/internal/workflows/{workflow_id}/advance-cron":{"post":{"tags":["Internal Admin"],"summary":"Advance Cron","description":"Compute the next run time from the cron expression and update\ntrigger_config.next_run_at on the workflow.","operationId":"advance_cron_v1_internal_workflows__workflow_id__advance_cron_post","parameters":[{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string","title":"Workflow Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Advance Cron V1 Internal Workflows  Workflow Id  Advance Cron Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal-workflows"]}},"/v1/internal/workflows/validate-steps":{"post":{"tags":["Internal Admin"],"summary":"Validate Steps Endpoint","operationId":"validate_steps_endpoint_v1_internal_workflows_validate_steps_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateStepsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal-workflows"]}},"/v1/internal/workflows/health-sweep":{"post":{"tags":["Internal Admin"],"summary":"Workflow Health Sweep","description":"Run the workflow health/alerting job family.\n\nTriggered by the Trigger.dev `workflow-health-cron` task so these jobs\nsurvive an APScheduler outage. `jobs` selects a subset by name; omit it\nto run everything. Requested jobs always execute in the canonical order\nof the registry (zombie step reap before zombie run detect), regardless\nof request order — the ordering is a correctness constraint, not a\ncaller preference.\n\nJobs run sequentially; one failing job is captured to Sentry and\nreported in `failed` without blocking the rest. The response is always\n200 — the cron task fails its run when `failed` is non-empty so the\nfailure surfaces with Trigger.dev retries/alerting.","operationId":"workflow_health_sweep_v1_internal_workflows_health_sweep_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_workflow_health_sweep_v1_internal_workflows_health_sweep_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Workflow Health Sweep V1 Internal Workflows Health Sweep Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal-workflows"]}},"/v1/internal/workflow-actions/owner-reply-review":{"post":{"tags":["Internal Admin"],"summary":"Execute Owner Reply Review","description":"Validate a dry run or create one live owner-reply review card.","operationId":"execute_owner_reply_review_v1_internal_workflow_actions_owner_reply_review_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OwnerReplyReviewActionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OwnerReplyReviewActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/responseflow/generate":{"post":{"tags":["Internal Admin"],"summary":"Generate Responseflow","description":"Run ResponseFlow with buffer-aware looping.\n\nRun one v2 ResponseFlow generation for the event set claimed by trellis-app.","operationId":"generate_responseflow_v1_internal_responseflow_generate_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/responseflow/escalate":{"post":{"tags":["Internal Admin"],"summary":"Escalate Responseflow","description":"Enqueue escalation workflow triggers + send notifications.\n\nCalled by trellis-app after inserting a PROPOSED reply with shouldEscalate=true.\nThe record dict propagated to workflow EVENT triggers carries v2 anchors so\ncondition rules match on conversation_v2_id / trigger_event_id.\n\nExisting callers keep running side effects as a FastAPI background task\nafter the response is sent. Awaiting every call previously blew the\ncaller's 30s timeout on the p99 tail and caused duplicate retries. Durable\noutbox callers opt into waiting for a completion receipt; their stable\nworkflow and notification keys make a retry safe if the API process exits\nbefore returning that receipt.","operationId":"escalate_responseflow_v1_internal_responseflow_escalate_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EscalateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/responseflow/recovery-sweep":{"post":{"tags":["Internal Admin"],"summary":"Responseflow Recovery Sweep","description":"Recover missed inbound events, then dispatch retryable buffer rows.","operationId":"responseflow_recovery_sweep_v1_internal_responseflow_recovery_sweep_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Responseflow Recovery Sweep V1 Internal Responseflow Recovery Sweep Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/pms/sync-reservation":{"post":{"tags":["Internal Admin"],"summary":"Sync Reservation","description":"Push a reservation update to the external PMS (best-effort).","operationId":"sync_reservation_v1_internal_pms_sync_reservation_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncReservationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Sync Reservation V1 Internal Pms Sync Reservation Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal-pms"]}},"/v1/internal/pms/sync-reservation-custom-fields":{"post":{"tags":["Internal Admin"],"summary":"Sync Reservation Custom Fields","description":"Push reservation custom field values to the external PMS.","operationId":"sync_reservation_custom_fields_v1_internal_pms_sync_reservation_custom_fields_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncReservationCustomFieldsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Sync Reservation Custom Fields V1 Internal Pms Sync Reservation Custom Fields Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal-pms"]}},"/v1/internal/pms/create-reservation":{"post":{"tags":["Internal Admin"],"summary":"Create Reservation Pms","description":"Push a newly-created reservation to the PMS and stamp external_id back\non the local row.","operationId":"create_reservation_pms_v1_internal_pms_create_reservation_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateReservationPMSRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Reservation Pms V1 Internal Pms Create Reservation Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal-pms"]}},"/v1/internal/pms/block-calendar":{"post":{"tags":["Internal Admin"],"summary":"Block Calendar","operationId":"block_calendar_v1_internal_pms_block_calendar_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockCalendarRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Block Calendar V1 Internal Pms Block Calendar Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal-pms"]}},"/v1/internal/pms/unblock-calendar":{"post":{"tags":["Internal Admin"],"summary":"Unblock Calendar","operationId":"unblock_calendar_v1_internal_pms_unblock_calendar_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnblockCalendarRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Unblock Calendar V1 Internal Pms Unblock Calendar Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal-pms"]}},"/v1/internal/pms/inquiry-action":{"post":{"tags":["Internal Admin"],"summary":"Inquiry Action","operationId":"inquiry_action_v1_internal_pms_inquiry_action_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InquiryActionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Inquiry Action V1 Internal Pms Inquiry Action Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal-pms"]}},"/v1/internal/pms/sync-contact":{"post":{"tags":["Internal Admin"],"summary":"Sync Contact","description":"Push contact profile updates to the linked PMS guest record.","operationId":"sync_contact_v1_internal_pms_sync_contact_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncContactRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Sync Contact V1 Internal Pms Sync Contact Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal-pms"]}},"/v1/internal/agent/sessions/{session_id}/run-health":{"get":{"tags":["Internal Admin"],"summary":"Run Health","operationId":"run_health_v1_internal_agent_sessions__session_id__run_health_get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/agent/sessions/{session_id}/resume-run":{"post":{"tags":["Internal Admin"],"summary":"Resume Run","operationId":"resume_run_v1_internal_agent_sessions__session_id__resume_run_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_resume_run_v1_internal_agent_sessions__session_id__resume_run_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/agent/sessions/{session_id}/chaos":{"post":{"tags":["Internal Admin"],"summary":"Chaos","description":"Chaos injection for the durable-run eval gate (PROD-5728). Allowlist\ngate, session-scope check, then dispatch to the chaos service.","operationId":"chaos_v1_internal_agent_sessions__session_id__chaos_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_chaos_v1_internal_agent_sessions__session_id__chaos_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/agent-followups/sessions/execute":{"post":{"tags":["Internal Admin"],"summary":"Execute Session Followup","description":"Start a fresh V3 run in the existing Session and channel thread.\n\nThis is a narrow V3 compatibility adapter. It reconstructs the persisted,\ncredential-free channel coordinates instead of pretending the Follow-up is\na new Slack/Teams/etc. inbound event. Delete it when V4 owns Session wakes.","operationId":"execute_session_followup_v1_internal_agent_followups_sessions_execute_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteSessionFollowUpRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteSessionFollowUpResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/agent-followups/conversations/execute":{"post":{"tags":["Internal Admin"],"summary":"Execute Conversation Followup","operationId":"execute_conversation_followup_v1_internal_agent_followups_conversations_execute_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteConversationFollowUpRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteConversationFollowUpResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/agent-v3-durable/failures":{"post":{"tags":["Internal Admin"],"summary":"Report Trigger Coordinator Failure","description":"Capture only terminal Trigger-native failures; recoverable control flow stays in logs.","operationId":"report_trigger_coordinator_failure_v1_internal_agent_v3_durable_failures_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-Durable-Trigger-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Durable-Trigger-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerCoordinatorFailureRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"boolean"},"title":"Response Report Trigger Coordinator Failure V1 Internal Agent V3 Durable Failures Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/agent-v3-durable/turns/{turn_id}/cancel":{"post":{"tags":["Internal Admin"],"summary":"Cancel Trigger Turn","operationId":"cancel_trigger_turn_v1_internal_agent_v3_durable_turns__turn_id__cancel_post","parameters":[{"name":"turn_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"string"}],"title":"Turn Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-Durable-Trigger-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Durable-Trigger-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SliceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Cancel Trigger Turn V1 Internal Agent V3 Durable Turns  Turn Id  Cancel Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/agent-v3-durable/turns/{turn_id}/steering":{"post":{"tags":["Internal Admin"],"summary":"Stage Steering Message","operationId":"stage_steering_message_v1_internal_agent_v3_durable_turns__turn_id__steering_post","parameters":[{"name":"turn_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"string"}],"title":"Turn Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-Durable-Trigger-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Durable-Trigger-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SteeringRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Stage Steering Message V1 Internal Agent V3 Durable Turns  Turn Id  Steering Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/agent-v3-durable/turns/{turn_id}/steering/prepare":{"post":{"tags":["Internal Admin"],"summary":"Prepare Steering Boundary","operationId":"prepare_steering_boundary_v1_internal_agent_v3_durable_turns__turn_id__steering_prepare_post","parameters":[{"name":"turn_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"string"}],"title":"Turn Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-Durable-Trigger-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Durable-Trigger-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SteeringConfirmationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Prepare Steering Boundary V1 Internal Agent V3 Durable Turns  Turn Id  Steering Prepare Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/agent-v3-durable/turns/{turn_id}/steering/confirm":{"post":{"tags":["Internal Admin"],"summary":"Confirm Steering Boundary","operationId":"confirm_steering_boundary_v1_internal_agent_v3_durable_turns__turn_id__steering_confirm_post","parameters":[{"name":"turn_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"string"}],"title":"Turn Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-Durable-Trigger-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Durable-Trigger-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SteeringConfirmationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Confirm Steering Boundary V1 Internal Agent V3 Durable Turns  Turn Id  Steering Confirm Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/agent-v3-durable/turns/{turn_id}/slice":{"post":{"tags":["Internal Admin"],"summary":"Slice Turn","operationId":"slice_turn_v1_internal_agent_v3_durable_turns__turn_id__slice_post","parameters":[{"name":"turn_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"string"}],"title":"Turn Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-Durable-Trigger-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Durable-Trigger-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SliceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Slice Turn V1 Internal Agent V3 Durable Turns  Turn Id  Slice Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/agent-v3-durable/turns/{turn_id}/stream":{"post":{"tags":["Internal Admin"],"summary":"Stream Turn","description":"Stream one durable slice as bounded NDJSON records to Trigger Session output.","operationId":"stream_turn_v1_internal_agent_v3_durable_turns__turn_id__stream_post","parameters":[{"name":"turn_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"string"}],"title":"Turn Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-Durable-Trigger-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Durable-Trigger-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SliceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/agent-v3-durable/turns/{turn_id}/heartbeat":{"post":{"tags":["Internal Admin"],"summary":"Heartbeat Turn","operationId":"heartbeat_turn_v1_internal_agent_v3_durable_turns__turn_id__heartbeat_post","parameters":[{"name":"turn_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"string"}],"title":"Turn Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-Durable-Trigger-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Durable-Trigger-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SliceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Heartbeat Turn V1 Internal Agent V3 Durable Turns  Turn Id  Heartbeat Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/agent-v3-durable/recovery/sweep":{"post":{"tags":["Internal Admin"],"summary":"Recovery Sweep","operationId":"recovery_sweep_v1_internal_agent_v3_durable_recovery_sweep_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-Durable-Trigger-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Durable-Trigger-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecoverySweepRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Recovery Sweep V1 Internal Agent V3 Durable Recovery Sweep Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/agent-v3-durable/workspaces/{workspace_id}/turns/{turn_id}":{"get":{"tags":["Internal Admin"],"summary":"Inspect Durable Turn","operationId":"inspect_durable_turn_v1_internal_agent_v3_durable_workspaces__workspace_id__turns__turn_id__get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"turn_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"string"}],"title":"Turn Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-Durable-Operator-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Durable-Operator-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Inspect Durable Turn V1 Internal Agent V3 Durable Workspaces  Workspace Id  Turns  Turn Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/agent-v3-durable/workspaces/{workspace_id}/rollout":{"get":{"tags":["Internal Admin"],"summary":"Inspect Durable Rollout","operationId":"inspect_durable_rollout_v1_internal_agent_v3_durable_workspaces__workspace_id__rollout_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"window_hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"default":24,"title":"Window Hours"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-Durable-Operator-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Durable-Operator-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Inspect Durable Rollout V1 Internal Agent V3 Durable Workspaces  Workspace Id  Rollout Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/agent-v3-durable/workspaces/{workspace_id}/turns/{turn_id}/cancel":{"post":{"tags":["Internal Admin"],"summary":"Cancel Durable Turn","operationId":"cancel_durable_turn_v1_internal_agent_v3_durable_workspaces__workspace_id__turns__turn_id__cancel_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"turn_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"string"}],"title":"Turn Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-Durable-Operator-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Durable-Operator-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Cancel Durable Turn V1 Internal Agent V3 Durable Workspaces  Workspace Id  Turns  Turn Id  Cancel Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/agent-v3-durable/workspaces/{workspace_id}/turns/{turn_id}/receipts/{receipt_id}/reconcile":{"post":{"tags":["Internal Admin"],"summary":"Reconcile Durable Receipt","operationId":"reconcile_durable_receipt_v1_internal_agent_v3_durable_workspaces__workspace_id__turns__turn_id__receipts__receipt_id__reconcile_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"turn_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"string"}],"title":"Turn Id"}},{"name":"receipt_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"string"}],"title":"Receipt Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-Durable-Operator-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Durable-Operator-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReconcileReceiptRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reconcile Durable Receipt V1 Internal Agent V3 Durable Workspaces  Workspace Id  Turns  Turn Id  Receipts  Receipt Id  Reconcile Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/agent-v3-durable/workspaces/{workspace_id}/turns/{turn_id}/resume":{"post":{"tags":["Internal Admin"],"summary":"Resume Durable Turn","operationId":"resume_durable_turn_v1_internal_agent_v3_durable_workspaces__workspace_id__turns__turn_id__resume_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"turn_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"string"}],"title":"Turn Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}},{"name":"X-Durable-Operator-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Durable-Operator-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResumeTurnRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Resume Durable Turn V1 Internal Agent V3 Durable Workspaces  Workspace Id  Turns  Turn Id  Resume Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/internal/retell-voice-test":{"post":{"tags":["Internal Admin"],"summary":"Run Retell Voice Test","operationId":"run_retell_voice_test_v1_internal_retell_voice_test_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetellVoiceTestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetellVoiceTestResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["internal"]}},"/v1/integrations/pricelabs/test":{"post":{"tags":["Integrations and Sync"],"summary":"Test Pricelabs Connection","description":"Test connection to PriceLabs API with provided API key.","operationId":"test_pricelabs_connection_v1_integrations_pricelabs_test_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceLabsCredentials"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Test Pricelabs Connection V1 Integrations Pricelabs Test Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["integrations"]}},"/v1/agent/models":{"get":{"tags":["Agent Runtime"],"summary":"Get Available Models","description":"Get list of available LLM models.","operationId":"get_available_models_v1_agent_models_get","parameters":[{"name":"includeProviderProfiles","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Includeproviderprofiles"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ModelInfo"},"title":"Response Get Available Models V1 Agent Models Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/agents/{agent_id}/model-tier-config":{"patch":{"tags":["Agent Runtime"],"summary":"Update Agent Model Tier Config","description":"Update per-agent model tier routing and invalidate warm agent caches.","operationId":"update_agent_model_tier_config_v1_agent_agents__agent_id__model_tier_config_patch","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAgentModelTierConfigRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]},"get":{"tags":["Agent Runtime"],"summary":"Read Agent Model Tier Config","description":"Read the authoritative persisted model routing for one active agent.","operationId":"read_agent_model_tier_config_v1_agent_agents__agent_id__model_tier_config_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/prepare":{"post":{"tags":["Agent Runtime"],"summary":"Prepare Agent Session","description":"Warm context and the stable coordinator without persisting a chat.","operationId":"prepare_agent_session_v1_agent_prepare_post","parameters":[{"name":"X-Trellis-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-User-Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepareSessionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepareSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/warm":{"post":{"tags":["Agent Runtime"],"summary":"Warm Sidebar","description":"Eagerly pre-build reusable sidebar setup.\n\nCalled by the frontend when the AI sidebar opens so the first chat\nmessage skips the expensive setup (~10 s → ~2 s). Current-harness agents\ncache a compiled agent; newer harnesses cache resolved context only and\nbuild their native runtime in the executor. The cache is keyed by `model_id`\nso a tier switch does not reuse stale context or compiled current agents.\nRuns in the background and returns immediately.","operationId":"warm_sidebar_v1_agent_warm_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_warm_sidebar_v1_agent_warm_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/warm-batch":{"post":{"tags":["Agent Runtime"],"summary":"Warm Agent Batch","description":"Eagerly pre-build all planned non-responseflow interactive agents.\n\nThe frontend calls this from the workspace shell after load so normal app\nagents are warm before the user opens chat. Response flow does not use this\nendpoint; channel runs keep their existing path and tool surface.","operationId":"warm_agent_batch_v1_agent_warm_batch_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WarmBatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/sessions":{"post":{"tags":["Agent Runtime"],"summary":"Create Session","description":"Create a new chat session.","operationId":"create_session_v1_agent_sessions_post","parameters":[{"name":"X-Trellis-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-User-Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSessionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]},"get":{"tags":["Agent Runtime"],"summary":"List Sessions","description":"List chat sessions for a user in a workspace.","operationId":"list_sessions_v1_agent_sessions_get","parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID","title":"User Id"},"description":"User ID"},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","description":"Workspace ID","title":"Workspace Id"},"description":"Workspace ID"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/sessions/{session_id}/model":{"patch":{"tags":["Agent Runtime"],"summary":"Update Session Model","description":"Update the model tier for an existing chat session.","operationId":"update_session_model_v1_agent_sessions__session_id__model_patch","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_update_session_model_v1_agent_sessions__session_id__model_patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/sessions/{session_id}":{"get":{"tags":["Agent Runtime"],"summary":"Get Session","description":"Get a session with its message history.","operationId":"get_session_v1_agent_sessions__session_id__get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]},"delete":{"tags":["Agent Runtime"],"summary":"Delete Session","description":"Delete a chat session.","operationId":"delete_session_v1_agent_sessions__session_id__delete","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/sessions/{session_id}/upload":{"post":{"tags":["Agent Runtime"],"summary":"Upload File To Session","description":"Upload a file to a chat session. Max 50 MB per file, 500 MB total per session.","operationId":"upload_file_to_session_v1_agent_sessions__session_id__upload_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_file_to_session_v1_agent_sessions__session_id__upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/sessions/{session_id}/register-file":{"post":{"tags":["Agent Runtime"],"summary":"Register File To Session","description":"Register a file already uploaded to Supabase Storage with a chat session.","operationId":"register_file_to_session_v1_agent_sessions__session_id__register_file_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_register_file_to_session_v1_agent_sessions__session_id__register_file_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/sessions/{session_id}/files":{"get":{"tags":["Agent Runtime"],"summary":"List Session Files","description":"List all files in a session.","operationId":"list_session_files_v1_agent_sessions__session_id__files_get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/sessions/{session_id}/files/{file_id}":{"delete":{"tags":["Agent Runtime"],"summary":"Delete Session File","description":"Delete an uploaded file from a session (removes DB record + storage blob).","operationId":"delete_session_file_v1_agent_sessions__session_id__files__file_id__delete","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/DeleteSessionFileRequest"},{"type":"null"}],"title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/sessions/{session_id}/stop":{"post":{"tags":["Agent Runtime"],"summary":"Stop Session","description":"Stop an active session gracefully and wait for it to actually finalize.\n\nUnlike the legacy fire-and-forget behavior, this endpoint blocks until\nthe run has reached a terminal status in the DB. Returning guarantees\nthat a subsequent POST /runs can proceed without colliding with the\nold row on the ai_chat_messages_active_run_idx unique index — which\nwas the direct cause of the \"A run is already active\" error users hit\nafter clicking stop and immediately sending a new message.","operationId":"stop_session_v1_agent_sessions__session_id__stop_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/sub-tasks/{sub_task_id}/cancel":{"post":{"tags":["Agent Runtime"],"summary":"Cancel Sub Task","description":"Cancel a running sub-agent operation (code task, voice call, browser agent).","operationId":"cancel_sub_task_v1_agent_sub_tasks__sub_task_id__cancel_post","parameters":[{"name":"sub_task_id","in":"path","required":true,"schema":{"type":"string","title":"Sub Task Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_cancel_sub_task_v1_agent_sub_tasks__sub_task_id__cancel_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/browser-sessions/{session_id}/auth-complete":{"post":{"tags":["Agent Runtime"],"summary":"Browser Auth Complete","description":"Signal that the user has completed authentication in the browser session.\n\nFor Browser Use: marks session as active so the frontend resumes polling.\nFor Asteroid: sends a message to the paused execution via the Asteroid SDK.\nIf close_session=True (manual login), marks session as completed.","operationId":"browser_auth_complete_v1_agent_browser_sessions__session_id__auth_complete_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_browser_auth_complete_v1_agent_browser_sessions__session_id__auth_complete_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/browser-contexts/login":{"post":{"tags":["Agent Runtime"],"summary":"Start Manual Login Session","description":"Start a browser login session for a domain.\n\nOpens a persistent Browser Use cloud session. When automated=False (default),\nthe user logs in manually via the live view. When automated=True, the AI agent\nlogs in automatically using stored credentials (sensitive_data injection).\nIn both cases, the live_view_url is returned immediately for monitoring.","operationId":"start_manual_login_session_v1_agent_browser_contexts_login_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_start_manual_login_session_v1_agent_browser_contexts_login_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/browser-contexts/{context_id}":{"delete":{"tags":["Agent Runtime"],"summary":"Delete Browser Context","description":"Delete a browser context and its cloud profile.","operationId":"delete_browser_context_v1_agent_browser_contexts__context_id__delete","parameters":[{"name":"context_id","in":"path","required":true,"schema":{"type":"string","title":"Context Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_delete_browser_context_v1_agent_browser_contexts__context_id__delete"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/browser-contexts/{context_id}/profile":{"get":{"tags":["Agent Runtime"],"summary":"Get Browser Profile Info","description":"Get profile info including connected domains (cookieDomains).","operationId":"get_browser_profile_info_v1_agent_browser_contexts__context_id__profile_get","parameters":[{"name":"context_id","in":"path","required":true,"schema":{"type":"string","title":"Context Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/sessions/{session_id}/plan-mode":{"patch":{"tags":["Agent Runtime"],"summary":"Toggle Plan Mode","description":"Toggle plan mode on a session.","operationId":"toggle_plan_mode_v1_agent_sessions__session_id__plan_mode_patch","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_toggle_plan_mode_v1_agent_sessions__session_id__plan_mode_patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/sessions/{session_id}/cancel-plan":{"post":{"tags":["Agent Runtime"],"summary":"Cancel Session Plan","description":"Cancel all active plan steps for a session.","operationId":"cancel_session_plan_v1_agent_sessions__session_id__cancel_plan_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_cancel_session_plan_v1_agent_sessions__session_id__cancel_plan_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/sessions/{session_id}/subscribe":{"get":{"tags":["Agent Runtime"],"summary":"Subscribe Session Events","description":"SSE endpoint for streaming background agent execution events.\n\nAuthenticated via the shared TRELLIS_API_KEY at the router level\n(see app.py include_router(ai_router, dependencies=[verify_bearer_api_key])).\nToday this is the only subscribe path — it's reached through the\nVercel proxy which attaches the API key server-side.\n\nRefresh recovery: when the frontend reloads the page mid-stream, it\ncalls GET /sessions/{id} to repopulate the history from the DB. All\nblocks that had closed before the refresh are already in ai_chat_blocks\n(persisted incrementally by chat_service + flush_persisted_blocks) and\nrender normally via the standard message-history path. This SSE\nendpoint then reattaches to the live bus for any further events, and\nthe event_bus's short-TTL replay buffer covers the gap between the\nlast live event the old tab saw and the new tab attaching.\n\nWhen message_id + since_seq are provided, persisted blocks newer than\nthat DB cursor replay first as normal stream events. When the cursor also\nincludes text_offset, replay can include earlier text rows only to consume\nthe already-rendered offset and emit the missing suffix. Redis remains the\nlive fan-out/recent-replay layer; Postgres is the durable reconnect source.","operationId":"subscribe_session_events_v1_agent_sessions__session_id__subscribe_get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"live_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Live Only"}},{"name":"message_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id"}},{"name":"since_seq","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Since Seq"}},{"name":"text_offset","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Text Offset"}},{"name":"after_stream_seq","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"After Stream Seq"}},{"name":"after_reasoning_seq","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"After Reasoning Seq"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/sub-tasks/{sub_task_id}/subscribe":{"get":{"tags":["Agent Runtime"],"summary":"Subscribe Sub Task Events","description":"SSE endpoint for streaming sub-agent execution events.\n\nAllows the frontend SubAgentWidget to show live text, tool calls,\nand thinking from delegation/custom/workflow builder sub-agents.\nUses the same event bus as plan step streaming, keyed by sub_task_id.","operationId":"subscribe_sub_task_events_v1_agent_sub_tasks__sub_task_id__subscribe_get","parameters":[{"name":"sub_task_id","in":"path","required":true,"schema":{"type":"string","title":"Sub Task Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/browser-sessions/{browser_session_id}/subscribe":{"get":{"tags":["Agent Runtime"],"summary":"Subscribe Browser Session Events","description":"SSE endpoint for streaming live browser agent step events.\n\nFrontend subscribes when a browser_agent sub-task starts. Events include\nbrowser_step_completed (per step), browser_pause_required (auth/handoff),\nand browser_session_completed. Late-connecting subscribers receive buffered\nevents (up to 500, 60s TTL). Requires workspace_id for ownership check.","operationId":"subscribe_browser_session_events_v1_agent_browser_sessions__browser_session_id__subscribe_get","parameters":[{"name":"browser_session_id","in":"path","required":true,"schema":{"type":"string","title":"Browser Session Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/continuations/{continuation_id}/resolve":{"post":{"tags":["Agent Runtime"],"summary":"Resolve Agent Continuation","description":"Resolve an agent runtime continuation and queue parent-session resume.","operationId":"resolve_agent_continuation_v1_agent_continuations__continuation_id__resolve_post","parameters":[{"name":"continuation_id","in":"path","required":true,"schema":{"type":"string","title":"Continuation Id"}},{"name":"X-Trellis-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-User-Id"}},{"name":"X-Trellis-User-Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-User-Authorization"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveContinuationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/pauses/{pause_id}/resolve":{"post":{"tags":["Agent Runtime"],"summary":"Resolve Pause","description":"Compatibility alias for resolving approval-shaped continuations.","operationId":"resolve_pause_v1_agent_pauses__pause_id__resolve_post","parameters":[{"name":"pause_id","in":"path","required":true,"schema":{"type":"string","title":"Pause Id"}},{"name":"X-Trellis-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-User-Id"}},{"name":"X-Trellis-User-Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-User-Authorization"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolvePauseRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/feedback":{"post":{"tags":["Agent Runtime"],"summary":"Submit Feedback","description":"Submit negative feedback on an AI message.\n\nPersists feedback, dispatches a code task to analyze the trace and\npropose a PR to improve the AI, and sends a Slack notification.","operationId":"submit_feedback_v1_agent_feedback_post","parameters":[{"name":"X-Trellis-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-User-Id"}},{"name":"X-Trellis-User-Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-User-Authorization"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitFeedbackRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/sessions/{session_id}/runs":{"post":{"tags":["Agent Runtime"],"summary":"Start Background Run","operationId":"start_background_run_v1_agent_sessions__session_id__runs_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartBackgroundRunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/sessions/{session_id}/state":{"get":{"tags":["Agent Runtime"],"summary":"Get Session State","description":"Snapshot the session's run state.\n\nThe frontend hits this on mount and uses `is_running` to decide\nwhether to attach to /subscribe (live stream) or just render the\npersisted history.\n\nis_running comes from the durable active run row:\n  ai_chat_messages.status IN ('PENDING','STREAMING','STOPPING')\n\nThe DB check catches runs spawned in a previous process (e.g. before\na deploy) that are now zombies. Those will be cleaned up by the\nexisting chat_service finally-block on next interaction, but we\nsurface them here so the UI doesn't lie.","operationId":"get_session_state_v1_agent_sessions__session_id__state_get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent"]}},"/v1/agent/sessions/{session_id}/work-items/{work_item_id}/children":{"get":{"tags":["Agent Runtime"],"summary":"Get Human Child Control","description":"List or inspect child turns within the proxy-authorized session.","operationId":"get_human_child_control_v1_agent_sessions__session_id__work_items__work_item_id__children_get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}},{"name":"work_item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Work Item Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9_-]*$","title":"Workspace Id"}},{"name":"agent_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"view","in":"query","required":false,"schema":{"enum":["list","status","results"],"type":"string","default":"list","title":"View"}},{"name":"turn_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Turn Id"}},{"name":"target_agent_path","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":500},{"type":"null"}],"title":"Target Agent Path"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Limit"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Human Child Control V1 Agent Sessions  Session Id  Work Items  Work Item Id  Children Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-child-control"]}},"/v1/agent/sessions/{session_id}/work-items/{work_item_id}/children/control":{"post":{"tags":["Agent Runtime"],"summary":"Post Human Child Control","description":"Pause, resume, cancel, retry, or reconnect scoped child turns.","operationId":"post_human_child_control_v1_agent_sessions__session_id__work_items__work_item_id__children_control_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}},{"name":"work_item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Work Item Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9_-]*$","title":"Workspace Id"}},{"name":"agent_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChildControlRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Post Human Child Control V1 Agent Sessions  Session Id  Work Items  Work Item Id  Children Control Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-child-control"]}},"/v1/agent/sessions/{session_id}/messages/{assistant_message_id}/run-activity":{"get":{"tags":["Agent Runtime"],"summary":"Get Agent Run Activity","description":"Return a bounded live/reconnect view after confirming session ownership.","operationId":"get_agent_run_activity_v1_agent_sessions__session_id__messages__assistant_message_id__run_activity_get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}},{"name":"assistant_message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assistant Message Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Workspace Id"}},{"name":"X-Trellis-User-Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-User-Authorization"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Agent Run Activity V1 Agent Sessions  Session Id  Messages  Assistant Message Id  Run Activity Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-run-activity"]}},"/v1/agent/sessions/{session_id}/messages/{assistant_message_id}/run-activity/cancel":{"post":{"tags":["Agent Runtime"],"summary":"Cancel Agent Run Activity","description":"Cancel only the durable work item represented by this assistant message.","operationId":"cancel_agent_run_activity_v1_agent_sessions__session_id__messages__assistant_message_id__run_activity_cancel_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}},{"name":"assistant_message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assistant Message Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Workspace Id"}},{"name":"X-Trellis-User-Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-User-Authorization"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Cancel Agent Run Activity V1 Agent Sessions  Session Id  Messages  Assistant Message Id  Run Activity Cancel Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-run-activity"]}},"/v1/agent/review-reply":{"post":{"tags":["Agent Runtime"],"summary":"Generate Review Reply Endpoint","operationId":"generate_review_reply_endpoint_v1_agent_review_reply_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateReviewReplyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateReviewReplyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-review-reply"]}},"/v1/ai/photo-check":{"post":{"tags":["Agent Runtime"],"summary":"Photo Check","operationId":"photo_check_v1_ai_photo_check_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhotoCheckRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhotoCheckResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["ai"]}},"/v1/tasks/{task_id}/activity":{"get":{"tags":["Operations and Analytics"],"summary":"Get Task Activity","operationId":"get_task_activity_v1_tasks__task_id__activity_get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"action","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by action type","title":"Action"},"description":"Filter by action type"},{"name":"actor_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by actor type","title":"Actor Type"},"description":"Filter by actor type"},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityLogResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["activity"]}},"/v1/activity":{"get":{"tags":["Operations and Analytics"],"summary":"Get Workspace Activity","operationId":"get_workspace_activity_v1_activity_get","parameters":[{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"entity_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by entity type","title":"Entity Type"},"description":"Filter by entity type"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"action","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by action type","title":"Action"},"description":"Filter by action type"},{"name":"actor_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by actor type","title":"Actor Type"},"description":"Filter by actor type"},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityLogResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["activity"]}},"/v1/tasks/{task_id}/blockers":{"get":{"tags":["Operations and Analytics"],"summary":"List Task Blockers","description":"List all blockers for a task.","operationId":"list_task_blockers_v1_tasks__task_id__blockers_get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Workspace Id"}},{"name":"include_resolved","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Resolved"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockerListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["blockers"]},"post":{"tags":["Operations and Analytics"],"summary":"Add Task Blocker","description":"Add a blocker to a task.","operationId":"add_task_blocker_v1_tasks__task_id__blockers_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockerCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["blockers"]}},"/v1/tasks/{task_id}/blockers/{blocker_id}":{"delete":{"tags":["Operations and Analytics"],"summary":"Remove Task Blocker","description":"Remove or resolve a blocker from a task.","operationId":"remove_task_blocker_v1_tasks__task_id__blockers__blocker_id__delete","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}},{"name":"blocker_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Blocker Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Workspace Id"}},{"name":"resolve","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Resolve"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["blockers"]}},"/v1/crons/status":{"get":{"tags":["Workflows and Automation"],"summary":"Get Sync Status","description":"Get the current status of all scheduled sync jobs.","operationId":"get_sync_status_v1_crons_status_get","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["crons"]}},"/v1/crons/summarize/pending":{"post":{"tags":["Workflows and Automation"],"summary":"Trigger Summarize Pending","description":"Trigger summarization for all conversations that need it.","operationId":"trigger_summarize_pending_v1_crons_summarize_pending_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SummarizeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["crons"]}},"/v1/crons/summarize/backfill":{"post":{"tags":["Workflows and Automation"],"summary":"Trigger Backfill Summaries","description":"Backfill AI summaries for all conversations in a workspace.\n\nProcesses all conversations with >= 3 messages that don't have a summary.\nThis is a long-running operation.","operationId":"trigger_backfill_summaries_v1_crons_summarize_backfill_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SummarizeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SummarizeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["crons"]}},"/v1/crons/pulse":{"post":{"tags":["Workflows and Automation"],"summary":"Trigger Pulse Generation","description":"Generate a daily pulse report using the workspace's Pulse Agent.","operationId":"trigger_pulse_generation_v1_crons_pulse_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PulseRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["crons"]}},"/v1/crons/pulse/configure":{"post":{"tags":["Workflows and Automation"],"summary":"Configure Pulse","description":"Disable legacy pulse scheduling.\n\nPulse used to materialize rows in the legacy scheduled-task table. That\nsubstrate is deprecated; workflows should own recurring automation going\nforward.","operationId":"configure_pulse_v1_crons_pulse_configure_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PulseConfigRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["crons"]}},"/v1/crons/close-overdue-tasks":{"post":{"tags":["Workflows and Automation"],"summary":"Close Overdue Tasks","description":"Bulk-close tasks that have been overdue for N+ days in a workspace.","operationId":"close_overdue_tasks_v1_crons_close_overdue_tasks_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloseOverdueTasksRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["crons"]}},"/v1/labs/sessions":{"post":{"tags":["Labs and Evals"],"summary":"Create Lab Session","description":"Create a new lab session.","operationId":"create_lab_session_v1_labs_sessions_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLabSessionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLabSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs"]},"get":{"tags":["Labs and Evals"],"summary":"List Lab Sessions","description":"List lab sessions for a user in a workspace.","operationId":"list_lab_sessions_v1_labs_sessions_get","parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs"]}},"/v1/labs/sessions/{session_id}":{"get":{"tags":["Labs and Evals"],"summary":"Get Lab Session","description":"Get a lab session with messages and blocks.","operationId":"get_lab_session_v1_labs_sessions__session_id__get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs"]},"delete":{"tags":["Labs and Evals"],"summary":"Delete Lab Session","description":"Soft delete a lab session.","operationId":"delete_lab_session_v1_labs_sessions__session_id__delete","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs"]},"patch":{"tags":["Labs and Evals"],"summary":"Update Lab Session Context","operationId":"update_lab_session_context_v1_labs_sessions__session_id__patch","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLabSessionContextRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs"]}},"/v1/labs/scaffold/fill":{"post":{"tags":["Labs and Evals"],"summary":"Scaffold Fill","description":"Populate a wizard form from a natural-language description.\n\nUsed by the \"Fill with AI\" button in the sandbox wizard. Demographics only —\nnever seeds a first message or scenario.","operationId":"scaffold_fill_v1_labs_scaffold_fill_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScaffoldFillRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs"]}},"/v1/labs/sessions/{session_id}/chat":{"post":{"tags":["Labs and Evals"],"summary":"Lab Chat Stream","description":"Send an external-circumstance sandbox message to the real selected agent.\n\nSSE Events: thinking, text, tool_call, title, done, error","operationId":"lab_chat_stream_v1_labs_sessions__session_id__chat_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_lab_chat_stream_v1_labs_sessions__session_id__chat_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs"]}},"/v1/labs/agents":{"get":{"tags":["Labs and Evals"],"summary":"List Lab Agents","description":"List agents available for simulation testing.","operationId":"list_lab_agents_v1_labs_agents_get","parameters":[{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs"]}},"/v1/labs/sessions/{session_id}/simulations":{"get":{"tags":["Labs and Evals"],"summary":"List Simulations","description":"List simulations for a lab session, including latest run status.","operationId":"list_simulations_v1_labs_sessions__session_id__simulations_get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs"]}},"/v1/labs/simulations/{simulation_id}":{"delete":{"tags":["Labs and Evals"],"summary":"Delete Simulation","description":"Hard delete a lab_simulation row.\n\nCascades to lab_simulation_runs (FK simulation_id) and lab_suite_members\n(FK simulation_id) via the database's ON DELETE CASCADE on those FKs.\nWorkspace-scoped — caller must pass workspace_id matching the row's\nworkspace_id, otherwise the DELETE is a no-op (tenant isolation).","operationId":"delete_simulation_v1_labs_simulations__simulation_id__delete","parameters":[{"name":"simulation_id","in":"path","required":true,"schema":{"type":"string","title":"Simulation Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs"]},"get":{"tags":["Labs and Evals"],"summary":"Get Simulation","description":"Get a simulation with its run history.","operationId":"get_simulation_v1_labs_simulations__simulation_id__get","parameters":[{"name":"simulation_id","in":"path","required":true,"schema":{"type":"string","title":"Simulation Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"include_run_payload","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Run Payload"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs"]}},"/v1/labs/simulations":{"post":{"tags":["Labs and Evals"],"summary":"Create Simulation","description":"Create a lab_simulation from a scripted scenario.\n\nMirrors ``/simulations/from-session`` but takes contact_messages +\nsimulation_context directly from the caller instead of pulling them\nfrom a production session/conversation.","operationId":"create_simulation_v1_labs_simulations_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSimulationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs"]}},"/v1/labs/simulations/from-session":{"post":{"tags":["Labs and Evals"],"summary":"Create Simulation From Session","description":"Convert a past session/conversation into a lab_simulation.\n\nUse case: take a production escalation trace → create a regression test\nscenario → re-run after adding memories/KB to verify the fix reduces\nescalations. One-click replacement for hand-constructing a sim via SQL.","operationId":"create_simulation_from_session_v1_labs_simulations_from_session_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FromSessionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs"]}},"/v1/labs/simulations/{simulation_id}/run":{"post":{"tags":["Labs and Evals"],"summary":"Rerun Simulation","description":"Re-run a simulation. Accepts optional model_id override.","operationId":"rerun_simulation_v1_labs_simulations__simulation_id__run_post","parameters":[{"name":"simulation_id","in":"path","required":true,"schema":{"type":"string","title":"Simulation Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RerunSimulationRequest","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs"]}},"/v1/labs/simulations/{simulation_id}/versions":{"get":{"tags":["Labs and Evals"],"summary":"List Simulation Versions","description":"Newest-first version history for a simulation. Workspace-scoped per\nthe multi-tenancy rule — caller must pass `workspace_id` matching the\nsim's tenant, otherwise the lookup is a no-op.","operationId":"list_simulation_versions_v1_labs_simulations__simulation_id__versions_get","parameters":[{"name":"simulation_id","in":"path","required":true,"schema":{"type":"string","title":"Simulation Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs"]}},"/v1/labs/simulations/{simulation_id}/versions/{version_id}/restore":{"post":{"tags":["Labs and Evals"],"summary":"Restore Simulation Version","description":"Restore a past version by creating a NEW version with the same content.\n\nNon-destructive — the previous history is preserved. The simulation's\ncanonical fields are also updated to match the restored content so\nruns use the right inputs. Workspace-scoped at every step.","operationId":"restore_simulation_version_v1_labs_simulations__simulation_id__versions__version_id__restore_post","parameters":[{"name":"simulation_id","in":"path","required":true,"schema":{"type":"string","title":"Simulation Id"}},{"name":"version_id","in":"path","required":true,"schema":{"type":"string","title":"Version Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_restore_simulation_version_v1_labs_simulations__simulation_id__versions__version_id__restore_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs"]}},"/v1/labs/suite/tests":{"get":{"tags":["Labs and Evals"],"summary":"List Suite Tests","description":"List all suite tests for a workspace, including latest run status.","operationId":"list_suite_tests_v1_labs_suite_tests_get","parameters":[{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs-suite"]},"post":{"tags":["Labs and Evals"],"summary":"Create Suite Test","description":"Create a custom suite test.","operationId":"create_suite_test_v1_labs_suite_tests_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSuiteTestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs-suite"]}},"/v1/labs/suite/tests/{test_id}":{"get":{"tags":["Labs and Evals"],"summary":"Get Suite Test","description":"Get a suite test with all its runs.","operationId":"get_suite_test_v1_labs_suite_tests__test_id__get","parameters":[{"name":"test_id","in":"path","required":true,"schema":{"type":"string","title":"Test Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs-suite"]},"delete":{"tags":["Labs and Evals"],"summary":"Delete Suite Test","description":"Delete a suite test and all its runs.","operationId":"delete_suite_test_v1_labs_suite_tests__test_id__delete","parameters":[{"name":"test_id","in":"path","required":true,"schema":{"type":"string","title":"Test Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs-suite"]}},"/v1/labs/suite/tests/seed":{"post":{"tags":["Labs and Evals"],"summary":"Seed Suite Tests","description":"Seed preloaded tests for a workspace (upsert by template_id).\n\nUses a single INSERT ... ON CONFLICT query instead of per-row SELECT+UPDATE\nto avoid 34+ sequential DB round-trips on every page load.","operationId":"seed_suite_tests_v1_labs_suite_tests_seed_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeedSuiteTestsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs-suite"]}},"/v1/labs/suite/properties":{"get":{"tags":["Labs and Evals"],"summary":"List Workspace Properties","description":"List properties for the workspace (lightweight, for test selection).","operationId":"list_workspace_properties_v1_labs_suite_properties_get","parameters":[{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs-suite"]}},"/v1/labs/suite/tests/{test_id}/run":{"post":{"tags":["Labs and Evals"],"summary":"Run Suite Test","description":"Run a suite test with configurable mode, streaming results via SSE.","operationId":"run_suite_test_v1_labs_suite_tests__test_id__run_post","parameters":[{"name":"test_id","in":"path","required":true,"schema":{"type":"string","title":"Test Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunSuiteTestRequest","default":{"mode":"single"}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs-suite"]}},"/v1/labs/suite/tests/{test_id}/runs":{"delete":{"tags":["Labs and Evals"],"summary":"Clear Suite Test Runs","description":"Delete all runs for a suite test.","operationId":"clear_suite_test_runs_v1_labs_suite_tests__test_id__runs_delete","parameters":[{"name":"test_id","in":"path","required":true,"schema":{"type":"string","title":"Test Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs-suite"]}},"/v1/labs/suite/tests/generate":{"post":{"tags":["Labs and Evals"],"summary":"Generate Suite Test","description":"Use LLM to generate a test definition from a natural language description.","operationId":"generate_suite_test_v1_labs_suite_tests_generate_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateTestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs-suite"]}},"/v1/labs/suites":{"post":{"tags":["Labs and Evals"],"summary":"Create Suite","operationId":"create_suite_v1_labs_suites_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSuiteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs-suites"]},"get":{"tags":["Labs and Evals"],"summary":"List Suites","operationId":"list_suites_v1_labs_suites_get","parameters":[{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs-suites"]}},"/v1/labs/suites/{suite_id}":{"get":{"tags":["Labs and Evals"],"summary":"Get Suite","operationId":"get_suite_v1_labs_suites__suite_id__get","parameters":[{"name":"suite_id","in":"path","required":true,"schema":{"type":"string","title":"Suite Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs-suites"]},"patch":{"tags":["Labs and Evals"],"summary":"Update Suite","operationId":"update_suite_v1_labs_suites__suite_id__patch","parameters":[{"name":"suite_id","in":"path","required":true,"schema":{"type":"string","title":"Suite Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSuiteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs-suites"]},"delete":{"tags":["Labs and Evals"],"summary":"Delete Suite","operationId":"delete_suite_v1_labs_suites__suite_id__delete","parameters":[{"name":"suite_id","in":"path","required":true,"schema":{"type":"string","title":"Suite Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs-suites"]}},"/v1/labs/suites/{suite_id}/members":{"post":{"tags":["Labs and Evals"],"summary":"Add Members","operationId":"add_members_v1_labs_suites__suite_id__members_post","parameters":[{"name":"suite_id","in":"path","required":true,"schema":{"type":"string","title":"Suite Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddMembersRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs-suites"]}},"/v1/labs/suites/{suite_id}/members/{simulation_id}":{"delete":{"tags":["Labs and Evals"],"summary":"Remove Member","operationId":"remove_member_v1_labs_suites__suite_id__members__simulation_id__delete","parameters":[{"name":"suite_id","in":"path","required":true,"schema":{"type":"string","title":"Suite Id"}},{"name":"simulation_id","in":"path","required":true,"schema":{"type":"string","title":"Simulation Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs-suites"]}},"/v1/labs/suites/{suite_id}/run":{"post":{"tags":["Labs and Evals"],"summary":"Run Suite","description":"Kick off a batch run of all members. Streams per-member progress via SSE.","operationId":"run_suite_v1_labs_suites__suite_id__run_post","parameters":[{"name":"suite_id","in":"path","required":true,"schema":{"type":"string","title":"Suite Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunSuiteRequest","default":{"failed_only":false,"simulation_ids":[]}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs-suites"]}},"/v1/labs/suite-batch-runs/{batch_run_id}":{"get":{"tags":["Labs and Evals"],"summary":"Get Batch Run","operationId":"get_batch_run_v1_labs_suite_batch_runs__batch_run_id__get","parameters":[{"name":"batch_run_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Run Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs-suites"]},"delete":{"tags":["Labs and Evals"],"summary":"Cancel Batch Run","description":"Mark a running batch and its active children as cancelled/failed.","operationId":"cancel_batch_run_v1_labs_suite_batch_runs__batch_run_id__delete","parameters":[{"name":"batch_run_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Run Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["labs-suites"]}},"/v1/ai/agents/available":{"get":{"tags":["Agent Tools and MCP"],"summary":"Get Available Agents","description":"Get agents available for the current user.\n\nResolution priority:\n1. MEMBER scopes (exact member_id match) -- highest priority\n2. ROLE scopes (user's role match), excluding private agents for other members\n3. Default SIDEBAR agent -- fallback","operationId":"get_available_agents_v1_ai_agents_available_get","parameters":[{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"role","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"}},{"name":"member_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Member Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-scopes"]}},"/v1/ai/agents/{agent_id}/scopes":{"get":{"tags":["Agent Tools and MCP"],"summary":"List Scopes","description":"List all scopes for an agent.","operationId":"list_scopes_v1_ai_agents__agent_id__scopes_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-scopes"]},"post":{"tags":["Agent Tools and MCP"],"summary":"Create Scope","description":"Create a new scope connecting this agent to an entity.","operationId":"create_scope_v1_ai_agents__agent_id__scopes_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateScopeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-scopes"]}},"/v1/ai/agents/{agent_id}/scopes/{scope_id}":{"put":{"tags":["Agent Tools and MCP"],"summary":"Update Scope","description":"Update a scope's settings.","operationId":"update_scope_v1_ai_agents__agent_id__scopes__scope_id__put","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"scope_id","in":"path","required":true,"schema":{"type":"string","title":"Scope Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateScopeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-scopes"]},"delete":{"tags":["Agent Tools and MCP"],"summary":"Delete Scope","description":"Delete a scope and its tool permissions.","operationId":"delete_scope_v1_ai_agents__agent_id__scopes__scope_id__delete","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"scope_id","in":"path","required":true,"schema":{"type":"string","title":"Scope Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-scopes"]}},"/v1/ai/agents/{agent_id}/scopes/{scope_id}/tools":{"get":{"tags":["Agent Tools and MCP"],"summary":"Get Tool Permissions","description":"Get tool permissions for a scope.","operationId":"get_tool_permissions_v1_ai_agents__agent_id__scopes__scope_id__tools_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"scope_id","in":"path","required":true,"schema":{"type":"string","title":"Scope Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-scopes"]},"put":{"tags":["Agent Tools and MCP"],"summary":"Bulk Update Tool Permissions","description":"Bulk upsert tool permissions for a scope.\n\nReplaces all existing permissions with the provided set.","operationId":"bulk_update_tool_permissions_v1_ai_agents__agent_id__scopes__scope_id__tools_put","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"scope_id","in":"path","required":true,"schema":{"type":"string","title":"Scope Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkToolPermissionsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-scopes"]}},"/v1/ai/agents/{agent_id}/skills":{"get":{"tags":["Agent Tools and MCP"],"summary":"List Agent Skills","description":"List skills (callable SOPs) for an agent.\n\nReturns both owned skills (in agent's Skills folder) and shared skills\n(from other agents via kb_document_shares). Used by the frontend to\npopulate the /slash-command autocomplete in the sidebar.\n\nWhen include_folders=true, also returns the agent's sub-folders (direct\nchildren of skills_folder_id, type=FOLDER) so the Skills tab can group\nskills by folder. The root skills_folder itself is never returned.","operationId":"list_agent_skills_v1_ai_agents__agent_id__skills_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"include_folders","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Folders"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-scopes"]},"post":{"tags":["Agent Tools and MCP"],"summary":"Create Agent Skill","description":"Create a new skill for an agent.\n\nSkills are KB documents stored in the agent's skills folder.\nA slug is auto-generated from the title for /slash-command invocation.","operationId":"create_agent_skill_v1_ai_agents__agent_id__skills_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSkillRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-scopes"]}},"/v1/ai/agents/{agent_id}/skills/{skill_id}":{"get":{"tags":["Agent Tools and MCP"],"summary":"Get Agent Skill","description":"Get a single skill with full content.\n\nWorks for both owned and shared skills -- access is validated via\nkb_document_shares rather than parent_id.","operationId":"get_agent_skill_v1_ai_agents__agent_id__skills__skill_id__get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","title":"Skill Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-scopes"]},"put":{"tags":["Agent Tools and MCP"],"summary":"Update Agent Skill","description":"Update an existing agent skill or rename/move a folder.\n\nFor DOCUMENT skills: any combination of title/description/content/category/\nparent_id may be provided. The legacy auto_attach field is accepted only to\nclear old metadata. For FOLDER rows: only title is accepted.","operationId":"update_agent_skill_v1_ai_agents__agent_id__skills__skill_id__put","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","title":"Skill Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"x-trellis-user-authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-User-Authorization"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSkillRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-scopes"]},"delete":{"tags":["Agent Tools and MCP"],"summary":"Delete Agent Skill","description":"Soft-delete an agent skill, or remove a shared skill from this agent.\n\nFor FOLDER rows, behaviour depends on `delete_children`:\n  - false (default): move children up to the agent's root skills folder,\n    then soft-delete the folder. Skills survive.\n  - true: soft-delete the folder AND all its children in one shot.","operationId":"delete_agent_skill_v1_ai_agents__agent_id__skills__skill_id__delete","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","title":"Skill Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"delete_children","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Delete Children"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-scopes"]}},"/v1/ai/agents/{agent_id}/skills/folders":{"post":{"tags":["Agent Tools and MCP"],"summary":"Create Agent Skill Folder","description":"Create a sub-folder under the agent's root skills folder.\n\nFolders are kb_documents with type='FOLDER' and parent_id pointing at the\nagent's skills_folder_id. Only one level of nesting is supported.","operationId":"create_agent_skill_folder_v1_ai_agents__agent_id__skills_folders_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSkillFolderRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-scopes"]}},"/v1/ai/agents/{agent_id}/skills/{skill_id}/share":{"put":{"tags":["Agent Tools and MCP"],"summary":"Share Agent Skill","description":"Share or update sharing of a skill with other agents.\n\nOnly the owner agent (skill in its skills folder) can share.\nReplaces all shares with the provided list (owner share is always kept).","operationId":"share_agent_skill_v1_ai_agents__agent_id__skills__skill_id__share_put","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","title":"Skill Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShareSkillRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-scopes"]}},"/v1/ai/agents/{agent_id}/skills/{skill_id}/shares":{"get":{"tags":["Agent Tools and MCP"],"summary":"Get Skill Shares","description":"Get agents a skill is shared with.","operationId":"get_skill_shares_v1_ai_agents__agent_id__skills__skill_id__shares_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","title":"Skill Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-scopes"]}},"/v1/ai/agents/{agent_id}/skills/from-marketplace":{"post":{"tags":["Agent Tools and MCP"],"summary":"Create Skill From Marketplace","description":"Install a web skill from the marketplace as a KbDocument in the agent's skills folder.\n\nFetches the marketplace content, converts markdown to Tiptap JSON,\ncreates a KbDocument with marketplace_id set, and shares it with the agent.","operationId":"create_skill_from_marketplace_v1_ai_agents__agent_id__skills_from_marketplace_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FromMarketplaceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-scopes"]}},"/v1/ai/agents/{agent_id}/skills/{skill_id}/update-from-marketplace":{"post":{"tags":["Agent Tools and MCP"],"summary":"Update Skill From Marketplace","description":"Update a web skill's content from the latest marketplace version.\n\nOnly works for skills that have a marketplace_id.\nUpdates the KbDocument content and installed_version.","operationId":"update_skill_from_marketplace_v1_ai_agents__agent_id__skills__skill_id__update_from_marketplace_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","title":"Skill Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-scopes"]}},"/v1/ai/agents/{agent_id}/available-tools":{"get":{"tags":["Agent Tools and MCP"],"summary":"List Available Tools","description":"List tools the agent can associate with skill metadata.\n\nReturns native v2 registry tools (name, description, category) plus a\nset of suggested glob / sentinel patterns. These patterns are passive\ndiscovery/UI metadata; skills load only when the agent explicitly calls\n``activate_skill``.","operationId":"list_available_tools_v1_ai_agents__agent_id__available_tools_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-scopes"]}},"/v1/ai/agents/{agent_id}/mcp-servers":{"get":{"tags":["Agent Tools and MCP"],"summary":"List Mcp Servers","description":"List MCP servers for an agent.","operationId":"list_mcp_servers_v1_ai_agents__agent_id__mcp_servers_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-mcp"]},"post":{"tags":["Agent Tools and MCP"],"summary":"Create Mcp Server","description":"Add an MCP server to an agent.","operationId":"create_mcp_server_v1_ai_agents__agent_id__mcp_servers_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpServerRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-mcp"]}},"/v1/ai/agents/{agent_id}/mcp-servers/{server_id}":{"put":{"tags":["Agent Tools and MCP"],"summary":"Update Mcp Server","description":"Update an agent's MCP server.","operationId":"update_mcp_server_v1_ai_agents__agent_id__mcp_servers__server_id__put","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"server_id","in":"path","required":true,"schema":{"type":"string","title":"Server Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMcpServerRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-mcp"]},"delete":{"tags":["Agent Tools and MCP"],"summary":"Delete Mcp Server","description":"Remove an MCP server from an agent.","operationId":"delete_mcp_server_v1_ai_agents__agent_id__mcp_servers__server_id__delete","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"server_id","in":"path","required":true,"schema":{"type":"string","title":"Server Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-mcp"]}},"/v1/ai/agents/{agent_id}/mcp-servers/cache/invalidate":{"post":{"tags":["Agent Tools and MCP"],"summary":"Invalidate Mcp Runtime Cache","description":"Invalidate cached agent runtime state after MCP config changes.","operationId":"invalidate_mcp_runtime_cache_v1_ai_agents__agent_id__mcp_servers_cache_invalidate_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidateMcpRuntimeCacheRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-mcp"]}},"/v1/ai/agents/cache/invalidate":{"post":{"tags":["Agent Tools and MCP"],"summary":"Invalidate Workspace Mcp Runtime Cache","description":"Invalidate cached runtime state after workspace-wide integration changes.","operationId":"invalidate_workspace_mcp_runtime_cache_v1_ai_agents_cache_invalidate_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidateMcpRuntimeCacheRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-mcp"]}},"/v1/ai/agents/{agent_id}/mcp-servers/test":{"post":{"tags":["Agent Tools and MCP"],"summary":"Test Mcp Connection","description":"Test connectivity to an MCP server and return discovered tools.","operationId":"test_mcp_connection_v1_ai_agents__agent_id__mcp_servers_test_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/routes__v1__ai__agent_mcp__TestConnectionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-mcp"]}},"/v1/ai/agents/{agent_id}/memories":{"get":{"tags":["Knowledge and Memory"],"summary":"Get Agent Memory Control Center","description":"Read current accepted memory and lifecycle health under exact scope.","operationId":"get_agent_memory_control_center_v1_ai_agents__agent_id__memories_get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Workspace Id"}},{"name":"query","in":"query","required":false,"schema":{"type":"string","maxLength":500,"default":"","title":"Query"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"property_scope_restricted","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Property Scope Restricted"}},{"name":"allowed_property_id","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Allowed Property Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentMemoryControlCenterResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-memories"]},"post":{"tags":["Knowledge and Memory"],"summary":"Create Agent Memory","description":"Create one accepted memory under exact workspace and agent scope.","operationId":"create_agent_memory_v1_ai_agents__agent_id__memories_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAgentMemoryRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentMemoryCommandResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-memories"]}},"/v1/ai/agents/{agent_id}/memories/reconcile":{"post":{"tags":["Knowledge and Memory"],"summary":"Reconcile Agent Memory","description":"Repair missed sources and run the same leased stage-two reconciler.","operationId":"reconcile_agent_memory_v1_ai_agents__agent_id__memories_reconcile_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReconcileAgentMemoryRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ReconcileAgentMemoryQueued"},{"$ref":"#/components/schemas/ReconcileAgentMemoryRunning"},{"$ref":"#/components/schemas/ReconcileAgentMemoryCompleted"},{"$ref":"#/components/schemas/ReconcileAgentMemoryFailed"},{"$ref":"#/components/schemas/ReconcileAgentMemoryDeadLetter"}],"discriminator":{"propertyName":"stage_two_status","mapping":{"queued":"#/components/schemas/ReconcileAgentMemoryQueued","running":"#/components/schemas/ReconcileAgentMemoryRunning","completed":"#/components/schemas/ReconcileAgentMemoryCompleted","failed":"#/components/schemas/ReconcileAgentMemoryFailed","dead_letter":"#/components/schemas/ReconcileAgentMemoryDeadLetter"}},"title":"Response Reconcile Agent Memory V1 Ai Agents  Agent Id  Memories Reconcile Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-memories"]}},"/v1/ai/agents/{agent_id}/memories/reconcile/{job_id}":{"get":{"tags":["Knowledge and Memory"],"summary":"Get Agent Memory Reconciliation","description":"Read one reconciliation receipt under exact workspace and agent scope.","operationId":"get_agent_memory_reconciliation_v1_ai_agents__agent_id__memories_reconcile__job_id__get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"job_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Job Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ReconcileAgentMemoryQueued"},{"$ref":"#/components/schemas/ReconcileAgentMemoryRunning"},{"$ref":"#/components/schemas/ReconcileAgentMemoryCompleted"},{"$ref":"#/components/schemas/ReconcileAgentMemoryFailed"},{"$ref":"#/components/schemas/ReconcileAgentMemoryDeadLetter"}],"discriminator":{"propertyName":"stage_two_status","mapping":{"queued":"#/components/schemas/ReconcileAgentMemoryQueued","running":"#/components/schemas/ReconcileAgentMemoryRunning","completed":"#/components/schemas/ReconcileAgentMemoryCompleted","failed":"#/components/schemas/ReconcileAgentMemoryFailed","dead_letter":"#/components/schemas/ReconcileAgentMemoryDeadLetter"}},"title":"Response Get Agent Memory Reconciliation V1 Ai Agents  Agent Id  Memories Reconcile  Job Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-memories"]}},"/v1/ai/agents/{agent_id}/memories/{memory_id}":{"patch":{"tags":["Knowledge and Memory"],"summary":"Update Agent Memory","description":"Update one accepted memory under exact workspace and agent scope.","operationId":"update_agent_memory_v1_ai_agents__agent_id__memories__memory_id__patch","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"memory_id","in":"path","required":true,"schema":{"type":"string","title":"Memory Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAgentMemoryRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentMemoryCommandResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-memories"]},"delete":{"tags":["Knowledge and Memory"],"summary":"Delete Agent Memory","description":"Privacy-forget one accepted memory and its historical content.","operationId":"delete_agent_memory_v1_ai_agents__agent_id__memories__memory_id__delete","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"memory_id","in":"path","required":true,"schema":{"type":"string","title":"Memory Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Workspace Id"}},{"name":"actor_kind","in":"query","required":false,"schema":{"enum":["agent","user"],"type":"string","default":"agent","title":"Actor Kind"}},{"name":"actor_user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Actor User Id"}},{"name":"property_scope_restricted","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Property Scope Restricted"}},{"name":"allowed_property_id","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Allowed Property Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentMemoryCommandResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-memories"]}},"/v1/ai/agents/{agent_id}/memories/{memory_id}/archive":{"post":{"tags":["Knowledge and Memory"],"summary":"Archive Agent Memory","description":"Reversibly archive one accepted memory under exact tenant scope.","operationId":"archive_agent_memory_v1_ai_agents__agent_id__memories__memory_id__archive_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"memory_id","in":"path","required":true,"schema":{"type":"string","title":"Memory Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentMemoryLifecycleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentMemoryCommandResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-memories"]}},"/v1/ai/agents/{agent_id}/memories/{memory_id}/restore":{"post":{"tags":["Knowledge and Memory"],"summary":"Restore Agent Memory","description":"Restore one archived accepted memory under exact tenant scope.","operationId":"restore_agent_memory_v1_ai_agents__agent_id__memories__memory_id__restore_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"memory_id","in":"path","required":true,"schema":{"type":"string","title":"Memory Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentMemoryLifecycleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentMemoryCommandResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agent-memories"]}},"/v1/mcp/test-connection":{"post":{"tags":["Agent Tools and MCP"],"summary":"Test Mcp Connection","description":"Test connectivity to an MCP server and return discovered tools.\n\nUsed by the frontend to validate server URLs before saving. Probes with\nthe same native OpenAI Agents SDK client classes the V3 runtime mounts.\nReturns appropriate HTTP status codes on failure (401, 502, etc.).","operationId":"test_mcp_connection_v1_mcp_test_connection_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/routes__v1__ai__mcp__TestConnectionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["mcp"]}},"/api/v1/manual-tokens":{"post":{"tags":["Knowledge and Memory"],"summary":"Create Token","description":"Create a new manual access token.\n\nIf valid_from/valid_until are not provided, defaults to:\n- valid_from: now\n- valid_until: 30 days from now","operationId":"create_token_api_v1_manual_tokens_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTokenRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["manual-tokens"]},"get":{"tags":["Knowledge and Memory"],"summary":"List Tokens","description":"List manual access tokens for a workspace.","operationId":"list_tokens_api_v1_manual_tokens_get","parameters":[{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","description":"Workspace ID","title":"Workspace Id"},"description":"Workspace ID"},{"name":"property_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by property","title":"Property Id"},"description":"Filter by property"},{"name":"reservation_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by reservation","title":"Reservation Id"},"description":"Filter by reservation"},{"name":"include_revoked","in":"query","required":false,"schema":{"type":"boolean","description":"Include revoked tokens","default":false,"title":"Include Revoked"},"description":"Include revoked tokens"},{"name":"include_expired","in":"query","required":false,"schema":{"type":"boolean","description":"Include expired tokens","default":false,"title":"Include Expired"},"description":"Include expired tokens"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["manual-tokens"]}},"/api/v1/manual-tokens/from-reservation":{"post":{"tags":["Knowledge and Memory"],"summary":"Create Token From Reservation","description":"Create a manual access token for a reservation.\n\nAutomatically sets validity window based on check-in/check-out dates:\n- valid_from: checkin_date - days_before_checkin\n- valid_until: checkout_date + days_after_checkout","operationId":"create_token_from_reservation_api_v1_manual_tokens_from_reservation_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTokenFromReservationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["manual-tokens"]}},"/api/v1/manual-tokens/by-reservation/{reservation_id}":{"get":{"tags":["Knowledge and Memory"],"summary":"Get Token By Reservation","description":"Get the active manual access token for a reservation.\n\nReturns the token if one exists and is not revoked, otherwise None.","operationId":"get_token_by_reservation_api_v1_manual_tokens_by_reservation__reservation_id__get","parameters":[{"name":"reservation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Reservation Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","description":"Workspace ID","title":"Workspace Id"},"description":"Workspace ID"},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/TokenResponse"},{"type":"null"}],"title":"Response Get Token By Reservation Api V1 Manual Tokens By Reservation  Reservation Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["manual-tokens"]}},"/api/v1/manual-tokens/{token_id}":{"get":{"tags":["Knowledge and Memory"],"summary":"Get Token","description":"Get a specific manual access token by ID.","operationId":"get_token_api_v1_manual_tokens__token_id__get","parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Token Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","description":"Workspace ID","title":"Workspace Id"},"description":"Workspace ID"},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["manual-tokens"]},"delete":{"tags":["Knowledge and Memory"],"summary":"Revoke Token","description":"Revoke a manual access token.\n\nRevoked tokens can no longer be used to access the manual.","operationId":"revoke_token_api_v1_manual_tokens__token_id__delete","parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Token Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","description":"Workspace ID","title":"Workspace Id"},"description":"Workspace ID"},{"name":"revoked_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"User ID revoking the token","title":"Revoked By"},"description":"User ID revoking the token"},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["manual-tokens"]}},"/v1/voice/default-greetings":{"get":{"tags":["Messaging and Voice"],"summary":"List Default Greetings","description":"Hardcoded per-language default greetings used as placeholders in the\nphone-number settings drawer and as last-resort fallback at call time.","operationId":"list_default_greetings_v1_voice_default_greetings_get","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Default Greetings V1 Voice Default Greetings Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["voice"]}},"/v1/voice/{workspace_id}/config":{"get":{"tags":["Messaging and Voice"],"summary":"Get Voice Config","description":"Get current voice configuration for workspace, optionally scoped to a specific agent.\n\nReturns voice_provider_id, phone_number, and voice settings if configured.","operationId":"get_voice_config_v1_voice__workspace_id__config_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Voice Config V1 Voice  Workspace Id  Config Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["voice"]}},"/v1/voice/{workspace_id}/number/reconcile":{"post":{"tags":["Messaging and Voice"],"summary":"Reconcile Voice Number","description":"Reconcile one existing Twilio-backed AI voice number with Retell.","operationId":"reconcile_voice_number_v1_voice__workspace_id__number_reconcile_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_reconcile_voice_number_v1_voice__workspace_id__number_reconcile_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reconcile Voice Number V1 Voice  Workspace Id  Number Reconcile Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["voice"]}},"/v1/voice/{workspace_id}/custom-telephony/register":{"post":{"tags":["Messaging and Voice"],"summary":"Register Custom Telephony","description":"Register a Retell custom-telephony call and return the SIP URI for Twilio.","operationId":"register_custom_telephony_v1_voice__workspace_id__custom_telephony_register_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_register_custom_telephony_v1_voice__workspace_id__custom_telephony_register_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Register Custom Telephony V1 Voice  Workspace Id  Custom Telephony Register Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["voice"]}},"/v1/voice/{workspace_id}/setup":{"post":{"tags":["Messaging and Voice"],"summary":"Setup Voice","description":"Setup AI voice for workspace - buys and configures phone number automatically!\n\nUser provides area code, we handle the rest:\n- Buy Retell phone number\n- Create Retell LLM + Agent\n- Ready to make/receive calls\n\nArgs:\n    workspace_id: Workspace ID\n    area_code: 3-digit US area code (e.g., 415, 212, 917)\n    voice_id: Optional Retell voice ID\n    language_mode: 'auto' or 'fixed'\n    fixed_language: Language code if mode is 'fixed'\n    agent_id: Optional agent ID to set up voice on (defaults to workspace default agent)","operationId":"setup_voice_v1_voice__workspace_id__setup_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_setup_voice_v1_voice__workspace_id__setup_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Setup Voice V1 Voice  Workspace Id  Setup Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["voice"]}},"/v1/voice/{workspace_id}/agents/{agent_id}/provision":{"post":{"tags":["Messaging and Voice"],"summary":"Provision Agent Voice","description":"Create an agent-owned Retell voice profile without changing phone bindings.","operationId":"provision_agent_voice_v1_voice__workspace_id__agents__agent_id__provision_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Provision Agent Voice V1 Voice  Workspace Id  Agents  Agent Id  Provision Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["voice"]}},"/v1/voice/{workspace_id}/number":{"delete":{"tags":["Messaging and Voice"],"summary":"Release Number","description":"Release a specific phone number (or the only one if not specified).","operationId":"release_number_v1_voice__workspace_id__number_delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_release_number_v1_voice__workspace_id__number_delete"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Release Number V1 Voice  Workspace Id  Number Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["voice"]}},"/v1/voice/{workspace_id}/voices":{"get":{"tags":["Messaging and Voice"],"summary":"List Voices","description":"List available voices from Retell.","operationId":"list_voices_v1_voice__workspace_id__voices_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Voices V1 Voice  Workspace Id  Voices Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["voice"]}},"/v1/voice/{workspace_id}/voice-preview":{"post":{"tags":["Messaging and Voice"],"summary":"Generate Voice Preview","description":"Generate a Trellis-owned preview for the selected phone voice.","operationId":"generate_voice_preview_v1_voice__workspace_id__voice_preview_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"X-Trellis-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-User-Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicePreviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["voice"]},"get":{"tags":["Messaging and Voice"],"summary":"Stream Voice Preview","operationId":"stream_voice_preview_v1_voice__workspace_id__voice_preview_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"voice_id","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":80,"title":"Voice Id"}},{"name":"language","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":16},{"type":"null"}],"title":"Language"}},{"name":"voice_speed","in":"query","required":false,"schema":{"type":"number","maximum":2.0,"minimum":0.5,"default":1.0,"title":"Voice Speed"}},{"name":"X-Trellis-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-User-Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["voice"]}},"/v1/voice/{workspace_id}/web-test":{"post":{"tags":["Messaging and Voice"],"summary":"Create Web Test","operationId":"create_web_test_v1_voice__workspace_id__web_test_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"X-Trellis-User-Id","in":"header","required":true,"schema":{"type":"string","title":"X-Trellis-User-Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceWebTestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Web Test V1 Voice  Workspace Id  Web Test Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["voice"]},"delete":{"tags":["Messaging and Voice"],"summary":"Cleanup Web Test","operationId":"cleanup_web_test_v1_voice__workspace_id__web_test_delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"X-Trellis-User-Id","in":"header","required":true,"schema":{"type":"string","title":"X-Trellis-User-Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceWebTestCleanupRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Cleanup Web Test V1 Voice  Workspace Id  Web Test Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["voice"]}},"/v1/voice/{workspace_id}/menu-audio":{"post":{"tags":["Messaging and Voice"],"summary":"Generate Menu Audio","description":"Generate MP3 audio for Twilio-native menu prompts.","operationId":"generate_menu_audio_v1_voice__workspace_id__menu_audio_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MenuAudioRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["voice"]}},"/v1/voice/{workspace_id}/voice":{"put":{"tags":["Messaging and Voice"],"summary":"Change Voice","description":"Update voice for an agent (or workspace default if agent_id absent).","operationId":"change_voice_v1_voice__workspace_id__voice_put","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_change_voice_v1_voice__workspace_id__voice_put"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Change Voice V1 Voice  Workspace Id  Voice Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["voice"]}},"/v1/voice/{workspace_id}/agent-settings":{"put":{"tags":["Messaging and Voice"],"summary":"Update Agent Settings","description":"Update safe Retell voice agent behavior settings.","operationId":"update_agent_settings_v1_voice__workspace_id__agent_settings_put","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Update Agent Settings V1 Voice  Workspace Id  Agent Settings Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["voice"]}},"/v1/voice/{workspace_id}/runtime":{"put":{"tags":["Messaging and Voice"],"summary":"Update Runtime","description":"Update backend-owned Retell realtime settings and sync the LLM.","operationId":"update_runtime_v1_voice__workspace_id__runtime_put","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Runtime V1 Voice  Workspace Id  Runtime Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["voice"]}},"/v1/voice/{workspace_id}/sync-prompt":{"post":{"tags":["Messaging and Voice"],"summary":"Sync Prompt","description":"Sync prompt and optional Voice settings in one Retell version.","operationId":"sync_prompt_v1_voice__workspace_id__sync_prompt_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Sync Prompt V1 Voice  Workspace Id  Sync Prompt Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["voice"]}},"/v1/voice/{workspace_id}/language":{"put":{"tags":["Messaging and Voice"],"summary":"Update Language Config","description":"Update language config on Retell agent + LLM.","operationId":"update_language_config_v1_voice__workspace_id__language_put","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_update_language_config_v1_voice__workspace_id__language_put"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Update Language Config V1 Voice  Workspace Id  Language Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["voice"]}},"/v1/voice/{workspace_id}/voice-mapping":{"put":{"tags":["Messaging and Voice"],"summary":"Update Voice Mapping Config","description":"Update the selected agent's per-language voice mapping.","operationId":"update_voice_mapping_config_v1_voice__workspace_id__voice_mapping_put","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_update_voice_mapping_config_v1_voice__workspace_id__voice_mapping_put"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Update Voice Mapping Config V1 Voice  Workspace Id  Voice Mapping Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["voice"]}},"/v1/voice/{workspace_id}/agent-name":{"put":{"tags":["Messaging and Voice"],"summary":"Update Agent Name Config","description":"Update agent name in DB and sync to Retell LLM.","operationId":"update_agent_name_config_v1_voice__workspace_id__agent_name_put","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_update_agent_name_config_v1_voice__workspace_id__agent_name_put"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Update Agent Name Config V1 Voice  Workspace Id  Agent Name Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["voice"]}},"/v1/voice/{workspace_id}/enable-inbound-webhook":{"post":{"tags":["Messaging and Voice"],"summary":"Enable Inbound","description":"Enable inbound webhook on the Retell phone number.","operationId":"enable_inbound_v1_voice__workspace_id__enable_inbound_webhook_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Enable Inbound V1 Voice  Workspace Id  Enable Inbound Webhook Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["voice"]}},"/v1/voice/{workspace_id}/update-webhooks":{"post":{"tags":["Messaging and Voice"],"summary":"Update Webhooks","description":"Update all Retell webhooks (agent + phone number) to point to production API URL.","operationId":"update_webhooks_v1_voice__workspace_id__update_webhooks_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Webhooks V1 Voice  Workspace Id  Update Webhooks Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["voice"]}},"/v1/voice/{workspace_id}/languages":{"get":{"tags":["Messaging and Voice"],"summary":"List Languages","operationId":"list_languages_v1_voice__workspace_id__languages_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Languages V1 Voice  Workspace Id  Languages Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["voice"]}},"/v1/voice/{workspace_id}/call":{"post":{"tags":["Messaging and Voice"],"summary":"Make Call","operationId":"make_call_v1_voice__workspace_id__call_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_make_call_v1_voice__workspace_id__call_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Make Call V1 Voice  Workspace Id  Call Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["voice"]}},"/v1/voice/elevenlabs/{workspace_id}/setup":{"post":{"tags":["Messaging and Voice"],"summary":"Setup Agent","description":"Create an ElevenLabs agent for the workspace with tools and prompt.","operationId":"setup_agent_v1_voice_elevenlabs__workspace_id__setup_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"voice_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id"}},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Setup Agent V1 Voice Elevenlabs  Workspace Id  Setup Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["elevenlabs-voice"]}},"/v1/voice/elevenlabs/{workspace_id}/token":{"get":{"tags":["Messaging and Voice"],"summary":"Get Token","description":"Get a WebRTC conversation token with workspace context.\n\nReturns token + conversation overrides (resolved prompt, first message).\nThe frontend uses the token to start a WebRTC session and overrides\nto inject workspace-specific context.\n\nagent_id is required to identify which agent's voice config to use.\nuser_id is optional — when provided, loads unified conversation context.","operationId":"get_token_v1_voice_elevenlabs__workspace_id__token_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Token V1 Voice Elevenlabs  Workspace Id  Token Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["elevenlabs-voice"]}},"/v1/voice/elevenlabs/{workspace_id}/sync-prompt":{"post":{"tags":["Messaging and Voice"],"summary":"Sync Prompt","description":"Sync agent prompt with current workspace context.","operationId":"sync_prompt_v1_voice_elevenlabs__workspace_id__sync_prompt_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Sync Prompt V1 Voice Elevenlabs  Workspace Id  Sync Prompt Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["elevenlabs-voice"]}},"/v1/voice/elevenlabs/{workspace_id}/sync-tools":{"post":{"tags":["Messaging and Voice"],"summary":"Sync Tools","description":"Sync tool webhook URLs to current api_base_url.\n\nNeeded when the API base URL changes (e.g. ngrok restart, deployment).\nAlso auto-runs on each token generation.","operationId":"sync_tools_v1_voice_elevenlabs__workspace_id__sync_tools_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Sync Tools V1 Voice Elevenlabs  Workspace Id  Sync Tools Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["elevenlabs-voice"]}},"/v1/voice/elevenlabs/{workspace_id}/voices":{"get":{"tags":["Messaging and Voice"],"summary":"List Voices","description":"List available ElevenLabs voices.","operationId":"list_voices_v1_voice_elevenlabs__workspace_id__voices_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Voices V1 Voice Elevenlabs  Workspace Id  Voices Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["elevenlabs-voice"]}},"/v1/voice/elevenlabs/{workspace_id}/current-voice":{"get":{"tags":["Messaging and Voice"],"summary":"Get Current Voice","description":"Get the current TTS voice_id for the ElevenLabs agent.","operationId":"get_current_voice_v1_voice_elevenlabs__workspace_id__current_voice_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Current Voice V1 Voice Elevenlabs  Workspace Id  Current Voice Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["elevenlabs-voice"]}},"/v1/voice/elevenlabs/{workspace_id}/voice":{"put":{"tags":["Messaging and Voice"],"summary":"Change Voice","description":"Update voice for workspace ElevenLabs agent.","operationId":"change_voice_v1_voice_elevenlabs__workspace_id__voice_put","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"voice_id","in":"query","required":true,"schema":{"type":"string","title":"Voice Id"}},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Change Voice V1 Voice Elevenlabs  Workspace Id  Voice Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["elevenlabs-voice"]}},"/v1/voice/elevenlabs/{workspace_id}/agent":{"delete":{"tags":["Messaging and Voice"],"summary":"Delete Agent","description":"Delete the ElevenLabs agent for a workspace.","operationId":"delete_agent_v1_voice_elevenlabs__workspace_id__agent_delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Delete Agent V1 Voice Elevenlabs  Workspace Id  Agent Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["elevenlabs-voice"]}},"/v1/voice/elevenlabs/{workspace_id}/{agent_id}/chat/completions":{"post":{"tags":["Messaging and Voice"],"summary":"Custom Llm Completion","description":"Serve ElevenLabs' OpenAI-compatible custom LLM through LiteLLM.","operationId":"custom_llm_completion_v1_voice_elevenlabs__workspace_id___agent_id__chat_completions_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElevenLabsChatCompletionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["elevenlabs-voice"]}},"/api/v1/workspaces/{workspace_id}/workflows/ai-tool-callable":{"get":{"tags":["Workflows and Automation"],"summary":"List Ai Tool Callable Workflows","operationId":"list_ai_tool_callable_workflows_api_v1_workspaces__workspace_id__workflows_ai_tool_callable_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflows"]}},"/api/v1/workspaces/{workspace_id}/workflows/entity-schema/{table_name}":{"get":{"tags":["Workflows and Automation"],"summary":"Get Entity Schema","description":"Return column metadata for a table (used by the trigger filter builder).","operationId":"get_entity_schema_api_v1_workspaces__workspace_id__workflows_entity_schema__table_name__get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"table_name","in":"path","required":true,"schema":{"type":"string","title":"Table Name"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflows"]}},"/api/v1/workspaces/{workspace_id}/workflows":{"get":{"tags":["Workflows and Automation"],"summary":"List Workflows","description":"List workspace workflows with bounded, MCP-friendly filtering.","operationId":"list_workflows_api_v1_workspaces__workspace_id__workflows_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"trigger_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger Type"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},{"name":"folder_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id"}},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"query","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Query"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflows"]},"post":{"tags":["Workflows and Automation"],"summary":"Create Workflow","description":"Create a new workflow with version 1.","operationId":"create_workflow_api_v1_workspaces__workspace_id__workflows_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWorkflowRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflows"]}},"/api/v1/workspaces/{workspace_id}/workflows/{workflow_id}":{"get":{"tags":["Workflows and Automation"],"summary":"Get Workflow","description":"Get a tenant-scoped workflow, its current step definition, and recent runs.","operationId":"get_workflow_api_v1_workspaces__workspace_id__workflows__workflow_id__get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workflow Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflows"]},"patch":{"tags":["Workflows and Automation"],"summary":"Update Workflow","description":"Update workflow metadata (name, description, trigger_config, status).","operationId":"update_workflow_api_v1_workspaces__workspace_id__workflows__workflow_id__patch","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workflow Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWorkflowRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflows"]},"delete":{"tags":["Workflows and Automation"],"summary":"Delete Workflow","description":"Soft-archive a workflow after a receipt-bound dependency preview.","operationId":"delete_workflow_api_v1_workspaces__workspace_id__workflows__workflow_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workflow Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ArchiveWorkflowRequest"},{"type":"null"}],"title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflows"]}},"/api/v1/workspaces/{workspace_id}/workflows/{workflow_id}/safety-report":{"get":{"tags":["Workflows and Automation"],"summary":"Get Workflow Safety Report","operationId":"get_workflow_safety_report_api_v1_workspaces__workspace_id__workflows__workflow_id__safety_report_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workflow Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflows"]}},"/api/v1/workspaces/{workspace_id}/workflows/{workflow_id}/activation-readiness":{"get":{"tags":["Workflows and Automation"],"summary":"Get Activation Readiness","description":"P1: does this workflow have a passing safe test run for the version\nthe engine will execute? Drives the activation dialog's test-run row and\nits Run a test now / Activate anyway affordances.","operationId":"get_activation_readiness_api_v1_workspaces__workspace_id__workflows__workflow_id__activation_readiness_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workflow Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflows"]}},"/api/v1/workspaces/{workspace_id}/workflows/{workflow_id}/fixtures":{"get":{"tags":["Workflows and Automation"],"summary":"List Workflow Fixtures","operationId":"list_workflow_fixtures_api_v1_workspaces__workspace_id__workflows__workflow_id__fixtures_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workflow Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflows"]},"post":{"tags":["Workflows and Automation"],"summary":"Create Workflow Fixture","operationId":"create_workflow_fixture_api_v1_workspaces__workspace_id__workflows__workflow_id__fixtures_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workflow Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWorkflowFixtureRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflows"]}},"/api/v1/workspaces/{workspace_id}/workflows/{workflow_id}/fixtures/{fixture_id}":{"patch":{"tags":["Workflows and Automation"],"summary":"Update Workflow Fixture","operationId":"update_workflow_fixture_api_v1_workspaces__workspace_id__workflows__workflow_id__fixtures__fixture_id__patch","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workflow Id"}},{"name":"fixture_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Fixture Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWorkflowFixtureRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflows"]},"delete":{"tags":["Workflows and Automation"],"summary":"Delete Workflow Fixture","operationId":"delete_workflow_fixture_api_v1_workspaces__workspace_id__workflows__workflow_id__fixtures__fixture_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workflow Id"}},{"name":"fixture_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Fixture Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflows"]}},"/api/v1/workspaces/{workspace_id}/workflows/{workflow_id}/archive-preview":{"get":{"tags":["Workflows and Automation"],"summary":"Preview Workflow Archive","description":"Preview whether a workflow can be safely soft-archived.","operationId":"preview_workflow_archive_api_v1_workspaces__workspace_id__workflows__workflow_id__archive_preview_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workflow Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflows"]}},"/api/v1/workspaces/{workspace_id}/workflows/{workflow_id}/restore":{"post":{"tags":["Workflows and Automation"],"summary":"Restore Workflow","description":"Restore a soft-deleted workflow.","operationId":"restore_workflow_api_v1_workspaces__workspace_id__workflows__workflow_id__restore_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workflow Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflows"]}},"/api/v1/workspaces/{workspace_id}/workflows/{workflow_id}/toggle":{"post":{"tags":["Workflows and Automation"],"summary":"Toggle Workflow","description":"Toggle workflow between ACTIVE and PAUSED.\n\nWhen pausing: stamps paused_reason=MANUAL, paused_by=<user_id|'unknown'>,\npaused_at=now(). When reactivating: clears all three.","operationId":"toggle_workflow_api_v1_workspaces__workspace_id__workflows__workflow_id__toggle_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workflow Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ToggleWorkflowRequest"},{"type":"null"}],"title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflows"]}},"/api/v1/workspaces/{workspace_id}/workflows/{workflow_id}/versions":{"post":{"tags":["Workflows and Automation"],"summary":"Create Version","description":"Create a new version with updated steps.","operationId":"create_version_api_v1_workspaces__workspace_id__workflows__workflow_id__versions_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workflow Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateVersionRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflows"]}},"/api/v1/workspaces/{workspace_id}/workflows/{workflow_id}/rollback":{"post":{"tags":["Workflows and Automation"],"summary":"Rollback Version","description":"Rollback to a previous version.","operationId":"rollback_version_api_v1_workspaces__workspace_id__workflows__workflow_id__rollback_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workflow Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RollbackRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflows"]}},"/api/v1/workspaces/{workspace_id}/workflows/{workflow_id}/run":{"post":{"tags":["Workflows and Automation"],"summary":"Manual Run","description":"Trigger a manual workflow execution. Use ?mode=local to bypass Trigger.dev.","operationId":"manual_run_api_v1_workspaces__workspace_id__workflows__workflow_id__run_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workflow Id"}},{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManualRunRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflows"]}},"/api/v1/workspaces/{workspace_id}/workflows/{workflow_id}/dry-run":{"post":{"tags":["Workflows and Automation"],"summary":"Dry Run","description":"Execute a dry run — Action steps return simulated results without side effects.","operationId":"dry_run_api_v1_workspaces__workspace_id__workflows__workflow_id__dry_run_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workflow Id"}},{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DryRunRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflows"]}},"/api/v1/workspaces/{workspace_id}/workflows/{workflow_id}/steps/{step_id}/test":{"post":{"tags":["Workflows and Automation"],"summary":"Test Workflow Step","description":"Execute exactly ONE step of the workflow's current version in dry-run\nisolation (services/workflows/step_tester.py — the engine behind\nworkflow_actions(action='test_step'), now exposed to operators).\n\nSends are always previewed (`is_dry_run` is forced True in the engine).\nThe created run row is inspectable via the standard run-detail API but is\nstamped `stats.test_step` and never counts as activation proof.","operationId":"test_workflow_step_api_v1_workspaces__workspace_id__workflows__workflow_id__steps__step_id__test_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workflow Id"}},{"name":"step_id","in":"path","required":true,"schema":{"type":"string","title":"Step Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestStepRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflows"]}},"/api/v1/workspaces/{workspace_id}/workflow-runs":{"get":{"tags":["Workflows and Automation"],"summary":"List All Runs","description":"List all workflow runs across all workflows, with optional filters.","operationId":"list_all_runs_api_v1_workspaces__workspace_id__workflow_runs_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"workflow_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"trigger_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger Type"}},{"name":"step_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Step Type"}},{"name":"is_dry_run","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Dry Run"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"action_slug","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Slug"}},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"sort_field","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort Field"}},{"name":"sort_direction","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"desc","title":"Sort Direction"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflow-runs"]}},"/api/v1/workspaces/{workspace_id}/workflow-runs/counts":{"get":{"tags":["Workflows and Automation"],"summary":"Get Run Counts","description":"Get run counts grouped by status for tab badges.","operationId":"get_run_counts_api_v1_workspaces__workspace_id__workflow_runs_counts_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"workflow_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Id"}},{"name":"trigger_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger Type"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"action_slug","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Slug"}},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"is_dry_run","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Dry Run"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflow-runs"]}},"/api/v1/workspaces/{workspace_id}/workflow-runs/health":{"get":{"tags":["Workflows and Automation"],"summary":"Get Workflow Health","description":"Per-workflow 7d run aggregates for the workflows-list health badges.\n\nSingle grouped query (no N+1). Classified with the same effective-status\nderivation the run list/counts use, so a workflow's badge always agrees\nwith the chips its runs render. Dry runs are excluded — test runs must not\nmark a workflow as failing.","operationId":"get_workflow_health_api_v1_workspaces__workspace_id__workflow_runs_health_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflow-runs"]}},"/api/v1/workspaces/{workspace_id}/workflow-runs/action-slugs":{"get":{"tags":["Workflows and Automation"],"summary":"Get Action Slugs","description":"Return distinct action slugs across all runs in the workspace.","operationId":"get_action_slugs_api_v1_workspaces__workspace_id__workflow_runs_action_slugs_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflow-runs"]}},"/api/v1/workspaces/{workspace_id}/workflow-runs/{run_id}/adjacent":{"get":{"tags":["Workflows and Automation"],"summary":"Get Adjacent Runs","description":"Return the previous and next run IDs relative to a given run, for navigation arrows.","operationId":"get_adjacent_runs_api_v1_workspaces__workspace_id__workflow_runs__run_id__adjacent_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"workflow_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflow-runs"]}},"/api/v1/workspaces/{workspace_id}/workflow-runs/{run_id}/cancel":{"post":{"tags":["Workflows and Automation"],"summary":"Cancel Run","description":"Cancel a running or pending workflow run.","operationId":"cancel_run_api_v1_workspaces__workspace_id__workflow_runs__run_id__cancel_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflow-runs"]}},"/api/v1/workspaces/{workspace_id}/workflow-runs/{run_id}/retry":{"post":{"tags":["Workflows and Automation"],"summary":"Retry Run","description":"Re-run a failed workflow run with the same trigger payload.","operationId":"retry_run_api_v1_workspaces__workspace_id__workflow_runs__run_id__retry_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflow-runs"]}},"/api/v1/workspaces/{workspace_id}/workflow-runs/steps/{step_run_id}":{"get":{"tags":["Workflows and Automation"],"summary":"Get Step Run Detail","description":"Load one step's raw payload only when an operator opens its inspector.","operationId":"get_step_run_detail_api_v1_workspaces__workspace_id__workflow_runs_steps__step_run_id__get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"step_run_id","in":"path","required":true,"schema":{"type":"string","title":"Step Run Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflow-runs"]}},"/api/v1/workspaces/{workspace_id}/workflow-runs/{run_id}":{"get":{"tags":["Workflows and Automation"],"summary":"Get Run Detail","description":"Get a single run with all step runs.\n\nAccepts either the workflow_runs UUID or a Trigger.dev run handle\n(`run_...`): dry-run dispatch returns the handle before the run row\nexists, and the builder polls with it to light up steps live. Non-UUID\nids previously crashed the UUID cast with a 500.","operationId":"get_run_detail_api_v1_workspaces__workspace_id__workflow_runs__run_id__get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflow-runs"]}},"/api/v1/workspaces/{workspace_id}/workflow-approvals/{approval_id}/review":{"post":{"tags":["Workflows and Automation"],"summary":"Review Approval","description":"Approve or reject a pending workflow approval step.\n\nUses an atomic UPDATE...WHERE status='PENDING' RETURNING to guarantee\nat-most-once semantics — concurrent calls for the same approval_id will\nget a 409 rather than double-processing.","operationId":"review_approval_api_v1_workspaces__workspace_id__workflow_approvals__approval_id__review_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"approval_id","in":"path","required":true,"schema":{"type":"string","title":"Approval Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflow-approvals"]}},"/api/v1/workspaces/{workspace_id}/workflow-variables":{"get":{"tags":["Workflows and Automation"],"summary":"List Workflow Variables","operationId":"list_workflow_variables_api_v1_workspaces__workspace_id__workflow_variables_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflow-variables"]},"post":{"tags":["Workflows and Automation"],"summary":"Create Workflow Variable","operationId":"create_workflow_variable_api_v1_workspaces__workspace_id__workflow_variables_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowVariableCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflow-variables"]}},"/api/v1/workspaces/{workspace_id}/workflow-variables/{name}":{"patch":{"tags":["Workflows and Automation"],"summary":"Patch Workflow Variable","operationId":"patch_workflow_variable_api_v1_workspaces__workspace_id__workflow_variables__name__patch","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowVariableUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflow-variables"]},"delete":{"tags":["Workflows and Automation"],"summary":"Delete Workflow Variable","operationId":"delete_workflow_variable_api_v1_workspaces__workspace_id__workflow_variables__name__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflow-variables"]}},"/api/v1/workspaces/{workspace_id}/workflow-migrations":{"get":{"tags":["Workflows and Automation"],"summary":"List Workflow Migrations","description":"List every migration row for the workspace, newest first.\n\nDeploy-ordering guard: trellis-api auto-deploys on merge-to-main, but\nthe 20260423220557_add_workflow_migrations migration is applied\nseparately via `supabase db push`. If the table doesn't exist yet,\nreturn an empty list rather than 500ing the route — saves stay\nunblocked until the migration lands.","operationId":"list_workflow_migrations_api_v1_workspaces__workspace_id__workflow_migrations_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflow-migrations"]}},"/api/v1/workspaces/{workspace_id}/workflow-migrations/{migration_id}/reference-map":{"post":{"tags":["Workflows and Automation"],"summary":"Patch Workflow Migration Reference Map","description":"Shallow-merge new entries into a migration's reference_map.\n\nDoes NOT re-run the adapter — the human or a follow-up CLI invocation\nis responsible for re-transforming + re-POSTing the workflow if a\nmaterially missing reference is patched in.","operationId":"patch_workflow_migration_reference_map_api_v1_workspaces__workspace_id__workflow_migrations__migration_id__reference_map_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"migration_id","in":"path","required":true,"schema":{"type":"string","title":"Migration Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferenceMapPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflow-migrations"]}},"/api/v1/workspaces/{workspace_id}/workflow-migrations/{migration_id}/activate":{"post":{"tags":["Workflows and Automation"],"summary":"Activate Workflow Migration","description":"Flip status from ready_to_activate → active.\n\nRefuses to activate if unresolved_references is non-empty (per spec\nacceptance criterion: \"workflow_migrations.status = 'ready_to_activate'\nonly when unresolved_references = []\"). Caller patches the\nreference_map first, then re-runs the migrate CLI to clear\nunresolved_references, THEN calls activate.","operationId":"activate_workflow_migration_api_v1_workspaces__workspace_id__workflow_migrations__migration_id__activate_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"migration_id","in":"path","required":true,"schema":{"type":"string","title":"Migration Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["workflow-migrations"]}},"/v1/traces":{"get":{"tags":["Agent Observability"],"summary":"List Traces","description":"List traces with filtering and pagination.","operationId":"list_traces_v1_traces_get","parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace ID filter (optional, omit for all)","title":"Workspace Id"},"description":"Workspace ID filter (optional, omit for all)"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Page Size"}},{"name":"trace_group","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trace Group"}},{"name":"trace_family","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"responseflow, operator, platform, workflow, background, evaluation, other","title":"Trace Family"},"description":"responseflow, operator, platform, workflow, background, evaluation, other"},{"name":"trace_kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"responseflow, interactive, workflow, durable, background, evaluation, other","title":"Trace Kind"},"description":"responseflow, interactive, workflow, durable, background, evaluation, other"},{"name":"trace_audience","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"external-contact, operator, internal, automation, evaluation, unknown","title":"Trace Audience"},"description":"external-contact, operator, internal, automation, evaluation, unknown"},{"name":"model_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO 8601 start date","title":"From Date"},"description":"ISO 8601 start date"},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO 8601 end date","title":"To Date"},"description":"ISO 8601 end date"},{"name":"min_duration_ms","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Duration Ms"}},{"name":"max_duration_ms","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Duration Ms"}},{"name":"min_cost","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Cost"}},{"name":"max_cost","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Cost"}},{"name":"has_error","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Error"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"conversation_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by conversation_id","title":"Conversation Id"},"description":"Filter by conversation_id"},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"SIDEBAR, CHANNEL, BACKGROUND, VOICE, SLACK, TEAMS, TELEGRAM, EMAIL","title":"Source"},"description":"SIDEBAR, CHANNEL, BACKGROUND, VOICE, SLACK, TEAMS, TELEGRAM, EMAIL"},{"name":"agent_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"}},{"name":"tool_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Name"}},{"name":"tool_has_error","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Tool Has Error"}},{"name":"intent","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Intent"}},{"name":"outcome","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outcome"}},{"name":"complexity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Complexity"}},{"name":"parent_trace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by parent trace ID","title":"Parent Trace Id"},"description":"Filter by parent trace ID"},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","description":"Sort field","default":"created_at","title":"Sort By"},"description":"Sort field"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"asc or desc","default":"desc","title":"Sort Order"},"description":"asc or desc"},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TraceListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["traces"]}},"/v1/traces/metrics":{"get":{"tags":["Agent Observability"],"summary":"Get Metrics","description":"Aggregated metrics for the dashboard.","operationId":"get_metrics_v1_traces_metrics_get","parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Id"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}},{"name":"granularity","in":"query","required":false,"schema":{"type":"string","description":"hourly, daily, or weekly","default":"daily","title":"Granularity"},"description":"hourly, daily, or weekly"},{"name":"trace_group","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trace Group"}},{"name":"model_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},{"name":"agent_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"}},{"name":"intent","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Intent"}},{"name":"outcome","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outcome"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["traces"]}},"/v1/traces/metrics/global":{"get":{"tags":["Agent Observability"],"summary":"Get Global Metrics","description":"Global KPIs across all workspaces over one half-open UTC window.","operationId":"get_global_metrics_v1_traces_metrics_global_get","parameters":[{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"description":"Number of days to look back (default 7)","default":7,"title":"Days"},"description":"Number of days to look back (default 7)"},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Global Metrics V1 Traces Metrics Global Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["traces"]}},"/v1/traces/metrics/agents":{"get":{"tags":["Agent Observability"],"summary":"Get Agent Metrics","description":"Per-agent analytics: cost, latency, error rate, top tools, intent distribution.","operationId":"get_agent_metrics_v1_traces_metrics_agents_get","parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Id"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":7,"title":"Days"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Agent Metrics V1 Traces Metrics Agents Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["traces"]}},"/v1/traces/metrics/sources":{"get":{"tags":["Agent Observability"],"summary":"Get Source Metrics","description":"Breakdown by source (SIDEBAR, CHANNEL, BACKGROUND, VOICE, SLACK, TEAMS, TELEGRAM, EMAIL).","operationId":"get_source_metrics_v1_traces_metrics_sources_get","parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Id"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":7,"title":"Days"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Source Metrics V1 Traces Metrics Sources Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["traces"]}},"/v1/traces/conversations/{conversation_id}":{"get":{"tags":["Agent Observability"],"summary":"Get Conversation Traces","description":"All traces for a conversation thread, ordered chronologically.","operationId":"get_conversation_traces_v1_traces_conversations__conversation_id__get","parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Page Size"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Conversation Traces V1 Traces Conversations  Conversation Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["traces"]}},"/v1/traces/tools/chains":{"get":{"tags":["Agent Observability"],"summary":"Get Tool Chains","description":"Most common tool call sequences across traces.\n\nGroups tool calls per trace by start_time order, then counts\nidentical sequences.","operationId":"get_tool_chains_v1_traces_tools_chains_get","parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Id"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":7,"title":"Days"}},{"name":"min_occurrences","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Minimum times a chain must appear","default":3,"title":"Min Occurrences"},"description":"Minimum times a chain must appear"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Tool Chains V1 Traces Tools Chains Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["traces"]}},"/v1/traces/anomalies":{"get":{"tags":["Agent Observability"],"summary":"Get Anomalies","description":"Traces deviating from normal behavior (slow, expensive, too many tools).\n\nCompares each trace's duration/cost/tool_calls against the mean+N*stddev\nfor its trace_group+source combination over the last 14 days.","operationId":"get_anomalies_v1_traces_anomalies_get","parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":7,"minimum":1,"description":"Look back N days for anomalies","default":1,"title":"Days"},"description":"Look back N days for anomalies"},{"name":"stddev_threshold","in":"query","required":false,"schema":{"type":"number","maximum":5.0,"minimum":1.0,"description":"Std deviations from mean","default":2.0,"title":"Stddev Threshold"},"description":"Std deviations from mean"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Anomalies V1 Traces Anomalies Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["traces"]}},"/v1/traces/metrics/forecast":{"get":{"tags":["Agent Observability"],"summary":"Get Cost Forecast","description":"Cost projection based on recent daily cost trends (simple linear regression).","operationId":"get_cost_forecast_v1_traces_metrics_forecast_get","parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Id"}},{"name":"lookback_days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":7,"description":"Days of history for regression","default":14,"title":"Lookback Days"},"description":"Days of history for regression"},{"name":"forecast_days","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"description":"Days to forecast","default":7,"title":"Forecast Days"},"description":"Days to forecast"},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Cost Forecast V1 Traces Metrics Forecast Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["traces"]}},"/v1/traces/tools/{tool_name}/calls":{"get":{"tags":["Agent Observability"],"summary":"List Tool Calls","description":"List individual span records for a specific tool.","operationId":"list_tool_calls_v1_traces_tools__tool_name__calls_get","parameters":[{"name":"tool_name","in":"path","required":true,"schema":{"type":"string","title":"Tool Name"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Page Size"}},{"name":"has_error","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Error"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","default":"start_time","title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","default":"desc","title":"Sort Order"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolCallsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["traces"]}},"/v1/traces/debug/errors":{"get":{"tags":["Agent Observability"],"summary":"Debug Recent Errors","description":"Recent error traces with full context for debugging.\n\nReturns error traces with: system prompt excerpt, user message,\nerror message, tool calls that ran, and the failing span (if any).\nDesigned for quick triage without needing multiple API calls.","operationId":"debug_recent_errors_v1_traces_debug_errors_get","parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by workspace","title":"Workspace Id"},"description":"Filter by workspace"},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"SIDEBAR, CHANNEL, BACKGROUND, VOICE, SLACK, TEAMS, TELEGRAM, EMAIL","title":"Source"},"description":"SIDEBAR, CHANNEL, BACKGROUND, VOICE, SLACK, TEAMS, TELEGRAM, EMAIL"},{"name":"agent_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"}},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"Look back N hours (default 24, max 168)","default":24,"title":"Hours"},"description":"Look back N hours (default 24, max 168)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Limit"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Debug Recent Errors V1 Traces Debug Errors Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["traces"]}},"/v1/traces/debug/session/{session_id}":{"get":{"tags":["Agent Observability"],"summary":"Debug Session","description":"Full debug view of an AI chat session.\n\nReturns the session metadata, all messages (user + assistant),\nand all traces with their spans, ordered chronologically.\nThis gives a complete picture of what happened in a session.","operationId":"debug_session_v1_traces_debug_session__session_id__get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace filter for tenant isolation","title":"Workspace Id"},"description":"Workspace filter for tenant isolation"},{"name":"include_system_prompt","in":"query","required":false,"schema":{"type":"boolean","description":"Include full system prompt from first trace","default":false,"title":"Include System Prompt"},"description":"Include full system prompt from first trace"},{"name":"include_span_data","in":"query","required":false,"schema":{"type":"boolean","description":"Include full span input/output data (large)","default":false,"title":"Include Span Data"},"description":"Include full span input/output data (large)"},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Debug Session V1 Traces Debug Session  Session Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["traces"]}},"/v1/traces/debug/trace/{trace_id}/timeline":{"get":{"tags":["Agent Observability"],"summary":"Debug Trace Timeline","description":"Compact timeline of a trace execution.\n\nReturns an ordered list of steps (LLM calls and tool calls) with\ntheir inputs, outputs, durations, and errors. Gives a clear\nsequential picture of what the agent did and why.","operationId":"debug_trace_timeline_v1_traces_debug_trace__trace_id__timeline_get","parameters":[{"name":"trace_id","in":"path","required":true,"schema":{"type":"string","title":"Trace Id"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace filter for tenant isolation","title":"Workspace Id"},"description":"Workspace filter for tenant isolation"},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Debug Trace Timeline V1 Traces Debug Trace  Trace Id  Timeline Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["traces"]}},"/v1/traces/debug/search-spans":{"get":{"tags":["Agent Observability"],"summary":"Debug Search Spans","description":"Search across span input/output data.\n\nFinds tool calls or LLM responses containing the search term.\nUseful for finding specific tool invocations, error patterns,\nor tracing how data flows through agent executions.","operationId":"debug_search_spans_v1_traces_debug_search_spans_get","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","minLength":2,"description":"Search term to find in span names, inputs, or outputs","title":"Query"},"description":"Search term to find in span names, inputs, or outputs"},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Id"}},{"name":"span_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"tool_call, llm_call, compaction, mcp_call","title":"Span Type"},"description":"tool_call, llm_call, compaction, mcp_call"},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"Look back N hours","default":24,"title":"Hours"},"description":"Look back N hours"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Limit"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Debug Search Spans V1 Traces Debug Search Spans Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["traces"]}},"/v1/traces/debug/sessions":{"get":{"tags":["Agent Observability"],"summary":"Debug List Sessions","description":"List recent AI sessions with trace stats.\n\nReturns sessions with aggregated trace data (cost, errors,\ntool calls) for quick identification of problematic sessions.","operationId":"debug_list_sessions_v1_traces_debug_sessions_get","parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by workspace","title":"Workspace Id"},"description":"Filter by workspace"},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"SIDEBAR, CHANNEL, BACKGROUND, VOICE, SLACK, TEAMS, TELEGRAM, EMAIL","title":"Source"},"description":"SIDEBAR, CHANNEL, BACKGROUND, VOICE, SLACK, TEAMS, TELEGRAM, EMAIL"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Session status filter","title":"Status"},"description":"Session status filter"},{"name":"has_errors","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Only sessions with error traces","title":"Has Errors"},"description":"Only sessions with error traces"},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"Look back N hours","default":24,"title":"Hours"},"description":"Look back N hours"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Limit"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Debug List Sessions V1 Traces Debug Sessions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["traces"]}},"/v1/traces/agents":{"get":{"tags":["Agent Observability"],"summary":"List Agents","description":"List all known agents with basic stats.","operationId":"list_agents_v1_traces_agents_get","parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Id"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":30,"title":"Days"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Agents V1 Traces Agents Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["traces"]}},"/v1/traces/agents/{agent_name}/reports":{"get":{"tags":["Agent Observability"],"summary":"Get Agent Reports","description":"List daily reports for an agent.","operationId":"get_agent_reports_v1_traces_agents__agent_name__reports_get","parameters":[{"name":"agent_name","in":"path","required":true,"schema":{"type":"string","title":"Agent Name"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Id"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":30,"title":"Limit"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Agent Reports V1 Traces Agents  Agent Name  Reports Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["traces"]}},"/v1/traces/agents/{agent_name}/reports/{day}":{"get":{"tags":["Agent Observability"],"summary":"Get Agent Report Detail","description":"Get a single daily report for an agent.","operationId":"get_agent_report_detail_v1_traces_agents__agent_name__reports__day__get","parameters":[{"name":"agent_name","in":"path","required":true,"schema":{"type":"string","title":"Agent Name"}},{"name":"day","in":"path","required":true,"schema":{"type":"string","title":"Day"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Agent Report Detail V1 Traces Agents  Agent Name  Reports  Day  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["traces"]}},"/v1/traces/agents/{agent_name}/sessions":{"get":{"tags":["Agent Observability"],"summary":"Get Agent Sessions","description":"Get sessions for an agent on a given day, with summaries.","operationId":"get_agent_sessions_v1_traces_agents__agent_name__sessions_get","parameters":[{"name":"agent_name","in":"path","required":true,"schema":{"type":"string","title":"Agent Name"}},{"name":"day","in":"query","required":true,"schema":{"type":"string","description":"Date in YYYY-MM-DD format","title":"Day"},"description":"Date in YYYY-MM-DD format"},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Agent Sessions V1 Traces Agents  Agent Name  Sessions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["traces"]}},"/v1/traces/{trace_id}":{"get":{"tags":["Agent Observability"],"summary":"Get Trace","description":"Get a single trace with all its spans and child traces.","operationId":"get_trace_v1_traces__trace_id__get","parameters":[{"name":"trace_id","in":"path","required":true,"schema":{"type":"string","title":"Trace Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TraceDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["traces"]}},"/v1/traces/{trace_id}/spans/{span_id}":{"get":{"tags":["Agent Observability"],"summary":"Get Span Detail","description":"Get full span detail including input_data and output_data.","operationId":"get_span_detail_v1_traces__trace_id__spans__span_id__get","parameters":[{"name":"trace_id","in":"path","required":true,"schema":{"type":"string","title":"Trace Id"}},{"name":"span_id","in":"path","required":true,"schema":{"type":"string","title":"Span Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Span Detail V1 Traces  Trace Id  Spans  Span Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["traces"]}},"/v1/ai/workspaces/{workspace_id}/artifacts":{"get":{"tags":["Agent Runtime"],"summary":"List Artifacts","operationId":"list_artifacts_v1_ai_workspaces__workspace_id__artifacts_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode"}},{"name":"scope","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope"}},{"name":"query","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query"}},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent 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":"include_counts","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Counts"}},{"name":"include_internal","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Internal"}},{"name":"x-trellis-user-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-User-Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Artifacts V1 Ai Workspaces  Workspace Id  Artifacts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["ai-artifacts"]}},"/v1/ai/workspaces/{workspace_id}/artifacts/{artifact_id}":{"get":{"tags":["Agent Runtime"],"summary":"Get Artifact","operationId":"get_artifact_v1_ai_workspaces__workspace_id__artifacts__artifact_id__get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","title":"Artifact Id"}},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"x-trellis-user-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-User-Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Artifact V1 Ai Workspaces  Workspace Id  Artifacts  Artifact Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["ai-artifacts"]},"delete":{"tags":["Agent Runtime"],"summary":"Delete Artifact","operationId":"delete_artifact_v1_ai_workspaces__workspace_id__artifacts__artifact_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","title":"Artifact Id"}},{"name":"x-trellis-user-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-User-Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Artifact V1 Ai Workspaces  Workspace Id  Artifacts  Artifact Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["ai-artifacts"]}},"/v1/ai/workspaces/{workspace_id}/artifacts/{artifact_id}/shares":{"get":{"tags":["Agent Runtime"],"summary":"List Artifact Shares","operationId":"list_artifact_shares_v1_ai_workspaces__workspace_id__artifacts__artifact_id__shares_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","title":"Artifact Id"}},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"x-trellis-user-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-User-Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Artifact Shares V1 Ai Workspaces  Workspace Id  Artifacts  Artifact Id  Shares Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["ai-artifacts"]},"put":{"tags":["Agent Runtime"],"summary":"Update Artifact Shares","operationId":"update_artifact_shares_v1_ai_workspaces__workspace_id__artifacts__artifact_id__shares_put","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","title":"Artifact Id"}},{"name":"x-trellis-user-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-User-Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Artifact Shares V1 Ai Workspaces  Workspace Id  Artifacts  Artifact Id  Shares Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["ai-artifacts"]}},"/v1/ai/workspaces/{workspace_id}/artifacts/{artifact_id}/refresh":{"post":{"tags":["Agent Runtime"],"summary":"Refresh Artifact Route","operationId":"refresh_artifact_route_v1_ai_workspaces__workspace_id__artifacts__artifact_id__refresh_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","title":"Artifact Id"}},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"x-trellis-user-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-User-Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Refresh Artifact Route V1 Ai Workspaces  Workspace Id  Artifacts  Artifact Id  Refresh Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["ai-artifacts"]}},"/v1/ai/workspaces/{workspace_id}/artifacts/{artifact_id}/versions/{version_id}/restore":{"post":{"tags":["Agent Runtime"],"summary":"Restore Artifact Version Route","operationId":"restore_artifact_version_route_v1_ai_workspaces__workspace_id__artifacts__artifact_id__versions__version_id__restore_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","title":"Artifact Id"}},{"name":"version_id","in":"path","required":true,"schema":{"type":"string","title":"Version Id"}},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"x-trellis-user-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-User-Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Restore Artifact Version Route V1 Ai Workspaces  Workspace Id  Artifacts  Artifact Id  Versions  Version Id  Restore Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["ai-artifacts"]}},"/v1/ai/platform-context/ingest":{"post":{"tags":["Agent Runtime"],"summary":"Ingest Platform Context","description":"Manually index recent platform context graph sources.\n\nThis route is mounted behind the shared TRELLIS_API_KEY bearer dependency\nin app.py. It is intentionally not exposed as an agent tool in the MVP.","operationId":"ingest_platform_context_v1_ai_platform_context_ingest_post","parameters":[{"name":"since_hours","in":"query","required":false,"schema":{"type":"integer","maximum":720,"minimum":1,"default":24,"title":"Since Hours"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":500,"title":"Limit"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ingest Platform Context V1 Ai Platform Context Ingest Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["platform-context"]}},"/v1/imports/{workspace_id}/sources":{"get":{"tags":["Integrations and Sync"],"summary":"List Sources","description":"List available import sources with their connection status.","operationId":"list_sources_v1_imports__workspace_id__sources_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["imports"]}},"/v1/imports/{workspace_id}/connect/{provider}":{"post":{"tags":["Integrations and Sync"],"summary":"Initiate Connection","description":"Initiate OAuth connection for a provider.\n\nReturns an authorization hint for a supported Google provider.","operationId":"initiate_connection_v1_imports__workspace_id__connect__provider__post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["imports"]}},"/v1/imports/{workspace_id}/disconnect/{provider}":{"delete":{"tags":["Integrations and Sync"],"summary":"Disconnect","description":"Disconnect OAuth for a specific provider.","operationId":"disconnect_v1_imports__workspace_id__disconnect__provider__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["imports"]}},"/v1/imports/{workspace_id}/oauth/google/authorize":{"get":{"tags":["Integrations and Sync"],"summary":"Google Oauth Authorize","description":"Build and return the Google OAuth authorization URL (uses workspace or env credentials).","operationId":"google_oauth_authorize_v1_imports__workspace_id__oauth_google_authorize_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"provider","in":"query","required":false,"schema":{"type":"string","default":"google-sheets","title":"Provider"}},{"name":"redirect_uri","in":"query","required":true,"schema":{"type":"string","title":"Redirect Uri"}},{"name":"return_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Where to redirect after callback, e.g. 'integrations'","title":"Return To"},"description":"Where to redirect after callback, e.g. 'integrations'"},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["imports"]}},"/v1/imports/{workspace_id}/oauth/google/exchange":{"post":{"tags":["Integrations and Sync"],"summary":"Google Oauth Exchange","description":"Exchange Google OAuth authorization code for tokens and store them.","operationId":"google_oauth_exchange_v1_imports__workspace_id__oauth_google_exchange_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthExchangeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["imports"]}},"/v1/imports/{workspace_id}/google-sheets/spreadsheets":{"get":{"tags":["Integrations and Sync"],"summary":"List Spreadsheets","description":"List user's Google Sheets from their Drive.","operationId":"list_spreadsheets_v1_imports__workspace_id__google_sheets_spreadsheets_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"query","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["imports"]}},"/v1/imports/{workspace_id}/google-sheets/spreadsheets/{spreadsheet_id}":{"get":{"tags":["Integrations and Sync"],"summary":"Get Spreadsheet Metadata","description":"Get spreadsheet metadata including sheet/tab list.","operationId":"get_spreadsheet_metadata_v1_imports__workspace_id__google_sheets_spreadsheets__spreadsheet_id__get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"spreadsheet_id","in":"path","required":true,"schema":{"type":"string","title":"Spreadsheet Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["imports"]}},"/v1/imports/{workspace_id}/google-sheets/spreadsheets/{spreadsheet_id}/sheets/{sheet_name}/sample":{"get":{"tags":["Integrations and Sync"],"summary":"Get Sheet Sample","description":"Get rows from a specific sheet. Up to 1100 rows for import, default 10 for preview.","operationId":"get_sheet_sample_v1_imports__workspace_id__google_sheets_spreadsheets__spreadsheet_id__sheets__sheet_name__sample_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"spreadsheet_id","in":"path","required":true,"schema":{"type":"string","title":"Spreadsheet Id"}},{"name":"sheet_name","in":"path","required":true,"schema":{"type":"string","title":"Sheet Name"}},{"name":"rows","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Rows"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["imports"]}},"/v1/imports/{workspace_id}/google-drive/files":{"get":{"tags":["Integrations and Sync"],"summary":"List Drive Files","description":"List files from user's Google Drive.","operationId":"list_drive_files_v1_imports__workspace_id__google_drive_files_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"query","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["imports"]}},"/v1/imports/{workspace_id}/google-drive/files/{file_id}/preview":{"get":{"tags":["Integrations and Sync"],"summary":"Preview Drive File","description":"Get a preview of a Drive file's content.","operationId":"preview_drive_file_v1_imports__workspace_id__google_drive_files__file_id__preview_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["imports"]}},"/v1/imports/{workspace_id}/url/scrape":{"post":{"tags":["Integrations and Sync"],"summary":"Scrape Url","description":"Scrape a URL via Firecrawl and return content.","operationId":"scrape_url_v1_imports__workspace_id__url_scrape_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScrapeUrlRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["imports"]}},"/v1/imports/{workspace_id}/analyze":{"post":{"tags":["Integrations and Sync"],"summary":"Analyze And Map","description":"AI analyzes content structure and proposes field mapping.","operationId":"analyze_and_map_v1_imports__workspace_id__analyze_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyzeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["imports"]}},"/v1/imports/{workspace_id}/execute":{"post":{"tags":["Integrations and Sync"],"summary":"Run Import","description":"Execute a unified import operation.\n\nCreates an import record and starts execution in the background.\nReturns immediately with import_id — frontend polls GET /status/{import_id}.","operationId":"run_import_v1_imports__workspace_id__execute_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteImportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["imports"]}},"/v1/imports/{workspace_id}/status/{import_id}":{"get":{"tags":["Integrations and Sync"],"summary":"Get Import Status","description":"Poll import execution status.\n\nAuto-fails imports stuck as IN_PROGRESS for > 5 minutes (e.g. background\ntask killed by a server restart).","operationId":"get_import_status_v1_imports__workspace_id__status__import_id__get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"import_id","in":"path","required":true,"schema":{"type":"string","title":"Import Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["imports"]}},"/v1/imports/{workspace_id}/imports":{"get":{"tags":["Integrations and Sync"],"summary":"List Imports","description":"List active property and pipeline imports for this workspace.","operationId":"list_imports_v1_imports__workspace_id__imports_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["imports"]}},"/v1/imports/{workspace_id}/imports/{import_id}":{"delete":{"tags":["Integrations and Sync"],"summary":"Delete Import","description":"Delete an import record.","operationId":"delete_import_v1_imports__workspace_id__imports__import_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"import_id","in":"path","required":true,"schema":{"type":"string","title":"Import Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["imports"]}},"/v1/imports/{workspace_id}/imports/{import_id}/resync":{"post":{"tags":["Integrations and Sync"],"summary":"Resync Import","description":"Re-execute a previous import using its saved configuration.","operationId":"resync_import_v1_imports__workspace_id__imports__import_id__resync_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"import_id","in":"path","required":true,"schema":{"type":"string","title":"Import Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["imports"]}},"/v1/imports/{workspace_id}/custom-fields/batch":{"post":{"tags":["Integrations and Sync"],"summary":"Batch Create Custom Fields","description":"Create multiple custom field definitions at once (for import).\n\nUses ON CONFLICT to skip fields that already exist.\nAssigns a default section_id (prefers 'contract', falls back to first active).","operationId":"batch_create_custom_fields_v1_imports__workspace_id__custom_fields_batch_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchCustomFieldsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["imports"]}},"/v1/imports/{workspace_id}/repair-custom-fields":{"post":{"tags":["Integrations and Sync"],"summary":"Repair Custom Fields","description":"Fix double-encoded custom_fields JSONB values.\n\nWhen custom_fields was accidentally stored as a JSON string\n(e.g. '\"{\\\"fields\\\": ...}\"') instead of a JSON object,\nthis endpoint unwraps them back into proper JSONB objects.","operationId":"repair_custom_fields_v1_imports__workspace_id__repair_custom_fields_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["imports"]}},"/v1/operations/revert/{activity_id}":{"post":{"tags":["Operations and Analytics"],"summary":"Revert Activity","description":"Revert a change recorded in Axiom.\n\n- CREATED -> soft-delete or hard-delete the record\n- DELETED -> re-insert the old_value snapshot\n- UPDATED/STATUS_CHANGED/ASSIGNED/etc -> apply old_value diff back","operationId":"revert_activity_v1_operations_revert__activity_id__post","parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","title":"Activity Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevertRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevertResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["revert"]}},"/v1/tags":{"get":{"tags":["Operations and Analytics"],"summary":"List Tags","description":"List all tags for a workspace, optionally filtered by target entity type.","operationId":"list_tags_v1_tags_get","parameters":[{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"applies_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by target type (e.g., MESSAGE, TASK)","title":"Applies To"},"description":"Filter by target type (e.g., MESSAGE, TASK)"},{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Inactive"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["tags"]},"post":{"tags":["Operations and Analytics"],"summary":"Create Tag","description":"Create a new tag.","operationId":"create_tag_v1_tags_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTagRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["tags"]}},"/v1/tags/{tag_id}":{"put":{"tags":["Operations and Analytics"],"summary":"Update Tag","description":"Update a tag's properties.","operationId":"update_tag_v1_tags__tag_id__put","parameters":[{"name":"tag_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tag Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTagRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["tags"]},"delete":{"tags":["Operations and Analytics"],"summary":"Delete Tag","description":"Delete a tag (cascades to all join tables).","operationId":"delete_tag_v1_tags__tag_id__delete","parameters":[{"name":"tag_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tag Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["tags"]}},"/v1/tags/assign":{"post":{"tags":["Operations and Analytics"],"summary":"Assign Tag","description":"Assign a tag to an entity.","operationId":"assign_tag_v1_tags_assign_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignTagRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["tags"]}},"/v1/tags/unassign":{"post":{"tags":["Operations and Analytics"],"summary":"Unassign Tag","description":"Remove a tag from an entity.","operationId":"unassign_tag_v1_tags_unassign_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnassignTagRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["tags"]}},"/v1/tags/seed-defaults":{"post":{"tags":["Operations and Analytics"],"summary":"Seed Defaults","description":"Seed default STR tags for a workspace. Idempotent.","operationId":"seed_defaults_v1_tags_seed_defaults_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeedDefaultsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["tags"]}},"/v1/integrations/slack/{workspace_id}/agent/{agent_id}/provision":{"post":{"tags":["Integrations and Sync"],"summary":"Slack Provision","description":"Create a per-agent Slack app via Manifest API (idempotent).\n\nIf an app already exists for this agent, returns its current status\nwithout creating a duplicate.","operationId":"slack_provision_v1_integrations_slack__workspace_id__agent__agent_id__provision_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"x-trellis-workspace-role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Workspace-Role"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Slack Provision V1 Integrations Slack  Workspace Id  Agent  Agent Id  Provision Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["slack"]}},"/v1/integrations/slack/update-all-manifests":{"post":{"tags":["Integrations and Sync"],"summary":"Slack Update All Manifests","description":"Push the latest manifest to all existing Slack apps (admin utility).","operationId":"slack_update_all_manifests_v1_integrations_slack_update_all_manifests_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Slack Update All Manifests V1 Integrations Slack Update All Manifests Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["slack"]}},"/v1/integrations/slack/{workspace_id}/agent/{agent_id}/activate":{"post":{"tags":["Integrations and Sync"],"summary":"Slack Activate","description":"Mark a Slack app as distribution-activated (called by admin after manual step).","operationId":"slack_activate_v1_integrations_slack__workspace_id__agent__agent_id__activate_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"x-trellis-workspace-role","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-Workspace-Role"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Slack Activate V1 Integrations Slack  Workspace Id  Agent  Agent Id  Activate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["slack"]}},"/v1/integrations/slack/{workspace_id}/agent/{agent_id}":{"get":{"tags":["Integrations and Sync"],"summary":"Slack Status","description":"Get Slack integration status for a specific agent.","operationId":"slack_status_v1_integrations_slack__workspace_id__agent__agent_id__get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Slack Status V1 Integrations Slack  Workspace Id  Agent  Agent Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["slack"]},"patch":{"tags":["Integrations and Sync"],"summary":"Slack Update","description":"Update Slack config for an agent (icon URL, display name, watched channels, settings).\n\ndisplay_name:\n  Slack-specific bot display name. Empty/blank clears the override and\n  falls back to the Trellis agent name.\n\nSettings schema:\n  thread_mode: \"mention_only\" | \"auto_participate\" | \"always_reply\"\n  show_progress: bool\n  mention_required_in_channels: bool\n  ambient_intake_enabled: bool (Platform Agent only)\n  watched_channel_policies: per-channel policies such as {\"mode\": \"proposal_only\"}\n\nchannels:\n  Slack public/private channel IDs where top-level messages should start\n  this agent automatically.","operationId":"slack_update_v1_integrations_slack__workspace_id__agent__agent_id__patch","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_slack_update_v1_integrations_slack__workspace_id__agent__agent_id__patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Slack Update V1 Integrations Slack  Workspace Id  Agent  Agent Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["slack"]},"delete":{"tags":["Integrations and Sync"],"summary":"Slack Disconnect","description":"Disconnect Slack integration for an agent. Deletes config and the Slack app.","operationId":"slack_disconnect_v1_integrations_slack__workspace_id__agent__agent_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Slack Disconnect V1 Integrations Slack  Workspace Id  Agent  Agent Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["slack"]}},"/v1/integrations/slack/{workspace_id}/agent/{agent_id}/sync-name":{"post":{"tags":["Integrations and Sync"],"summary":"Slack Sync Agent Name","description":"Push updated agent name to the Slack app manifest.\n\nCalled when agent name changes so the Slack bot @mention tag stays in sync.","operationId":"slack_sync_agent_name_v1_integrations_slack__workspace_id__agent__agent_id__sync_name_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Slack Sync Agent Name V1 Integrations Slack  Workspace Id  Agent  Agent Id  Sync Name Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["slack"]}},"/v1/integrations/slack/workspace/{workspace_id}/install-url":{"post":{"tags":["Integrations and Sync"],"summary":"Slack Workspace Install Url","description":"Return the OAuth URL for installing the Trellis Slack app.","operationId":"slack_workspace_install_url_v1_integrations_slack_workspace__workspace_id__install_url_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"x-trellis-user-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Trellis-User-Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Slack Workspace Install Url V1 Integrations Slack Workspace  Workspace Id  Install Url Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["slack"]}},"/v1/integrations/slack/workspace/{workspace_id}":{"get":{"tags":["Integrations and Sync"],"summary":"Slack Workspace Status","description":"Return workspace-level Slack connection status.","operationId":"slack_workspace_status_v1_integrations_slack_workspace__workspace_id__get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Slack Workspace Status V1 Integrations Slack Workspace  Workspace Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["slack"]},"patch":{"tags":["Integrations and Sync"],"summary":"Slack Workspace Update Settings","description":"Update workspace-level Slack routing settings.","operationId":"slack_workspace_update_settings_v1_integrations_slack_workspace__workspace_id__patch","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceSlackSettingsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Slack Workspace Update Settings V1 Integrations Slack Workspace  Workspace Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["slack"]},"delete":{"tags":["Integrations and Sync"],"summary":"Slack Workspace Disconnect","description":"Disconnect the workspace-level Slack install only.","operationId":"slack_workspace_disconnect_v1_integrations_slack_workspace__workspace_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"boolean"},"title":"Response Slack Workspace Disconnect V1 Integrations Slack Workspace  Workspace Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["slack"]}},"/v1/integrations/slack/workspace/{workspace_id}/notification-channel":{"patch":{"tags":["Integrations and Sync"],"summary":"Slack Workspace Update Notification Channel","description":"Update the Slack destination for one workspace notification type.","operationId":"slack_workspace_update_notification_channel_v1_integrations_slack_workspace__workspace_id__notification_channel_patch","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceSlackNotificationChannelRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Slack Workspace Update Notification Channel V1 Integrations Slack Workspace  Workspace Id  Notification Channel Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["slack"]}},"/v1/integrations/slack/workspace/{workspace_id}/channels":{"get":{"tags":["Integrations and Sync"],"summary":"Slack Workspace Channels","description":"List public channels and private channels visible to the Trellis app.","operationId":"slack_workspace_channels_v1_integrations_slack_workspace__workspace_id__channels_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Slack Workspace Channels V1 Integrations Slack Workspace  Workspace Id  Channels Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["slack"]}},"/v1/integrations/slack/workspace/{workspace_id}/test-message":{"post":{"tags":["Integrations and Sync"],"summary":"Slack Workspace Test Message","description":"Send a test message through the workspace-level Slack app.","operationId":"slack_workspace_test_message_v1_integrations_slack_workspace__workspace_id__test_message_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceSlackTestMessageRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Slack Workspace Test Message V1 Integrations Slack Workspace  Workspace Id  Test Message Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["slack"]}},"/v1/integrations/slack/workspace/{workspace_id}/notification":{"post":{"tags":["Integrations and Sync"],"summary":"Slack Workspace Notification","description":"Fan out a Trellis notification to the workspace Slack notification channel.","operationId":"slack_workspace_notification_v1_integrations_slack_workspace__workspace_id__notification_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceSlackNotificationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Slack Workspace Notification V1 Integrations Slack Workspace  Workspace Id  Notification Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["slack"]}},"/v1/integrations/composio/toolkits":{"get":{"tags":["Integrations and Sync"],"summary":"Composio Toolkits","description":"List all available connected app toolkits.","operationId":"composio_toolkits_v1_integrations_composio_toolkits_get","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Composio Toolkits V1 Integrations Composio Toolkits Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["composio"]}},"/v1/integrations/composio/toolkits/{toolkit_slug}":{"get":{"tags":["Integrations and Sync"],"summary":"Composio Toolkit Detail","description":"Fetch bounded capability details for one connected app toolkit.","operationId":"composio_toolkit_detail_v1_integrations_composio_toolkits__toolkit_slug__get","parameters":[{"name":"toolkit_slug","in":"path","required":true,"schema":{"type":"string","title":"Toolkit Slug"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Composio Toolkit Detail V1 Integrations Composio Toolkits  Toolkit Slug  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["composio"]}},"/v1/integrations/composio/{workspace_id}/connected":{"get":{"tags":["Integrations and Sync"],"summary":"Composio Connected","description":"List connected apps for an agent (or workspace if no agent_id).","operationId":"composio_connected_v1_integrations_composio__workspace_id__connected_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Composio Connected V1 Integrations Composio  Workspace Id  Connected Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["composio"]}},"/v1/integrations/composio/{workspace_id}/connect":{"post":{"tags":["Integrations and Sync"],"summary":"Composio Connect","description":"Initiate OAuth flow to connect a toolkit.\n\nReturns a redirect URL that the frontend should navigate the user to.\n\nCSRF protection: We generate a random state, store it in Redis, and embed\nit in the callback URL we pass to Composio. When Composio redirects back\nto our callback, the state arrives as a query parameter and we validate it.","operationId":"composio_connect_v1_integrations_composio__workspace_id__connect_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Composio Connect V1 Integrations Composio  Workspace Id  Connect Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["composio"]}},"/v1/integrations/composio/{workspace_id}/{account_id}":{"delete":{"tags":["Integrations and Sync"],"summary":"Composio Disconnect","description":"Disconnect a connected app.","operationId":"composio_disconnect_v1_integrations_composio__workspace_id___account_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"account_id","in":"path","required":true,"schema":{"type":"string","title":"Account Id"}},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Composio Disconnect V1 Integrations Composio  Workspace Id   Account Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["composio"]}},"/v1/integrations/telegram/{workspace_id}/agent/{agent_id}/connect":{"post":{"tags":["Integrations and Sync"],"summary":"Telegram Connect","description":"Connect a Telegram bot to an agent.\n\nValidates the bot token with Telegram, stores the config, and\nregisters the webhook URL with a secret token for verification.","operationId":"telegram_connect_v1_integrations_telegram__workspace_id__agent__agent_id__connect_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_telegram_connect_v1_integrations_telegram__workspace_id__agent__agent_id__connect_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Telegram Connect V1 Integrations Telegram  Workspace Id  Agent  Agent Id  Connect Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["telegram"]}},"/v1/integrations/telegram/{workspace_id}/agent/{agent_id}":{"get":{"tags":["Integrations and Sync"],"summary":"Telegram Status","description":"Get Telegram integration status for a specific agent.","operationId":"telegram_status_v1_integrations_telegram__workspace_id__agent__agent_id__get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Telegram Status V1 Integrations Telegram  Workspace Id  Agent  Agent Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["telegram"]},"patch":{"tags":["Integrations and Sync"],"summary":"Telegram Update","description":"Update a tenant-scoped Telegram config and behavior settings.","operationId":"telegram_update_v1_integrations_telegram__workspace_id__agent__agent_id__patch","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentTelegramConfigPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Telegram Update V1 Integrations Telegram  Workspace Id  Agent  Agent Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["telegram"]},"delete":{"tags":["Integrations and Sync"],"summary":"Telegram Disconnect","description":"Disconnect Telegram integration for an agent. Removes webhook and config.","operationId":"telegram_disconnect_v1_integrations_telegram__workspace_id__agent__agent_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Telegram Disconnect V1 Integrations Telegram  Workspace Id  Agent  Agent Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["telegram"]}},"/v1/integrations/googlechat/{workspace_id}/agent/{agent_id}/connect":{"post":{"tags":["Integrations and Sync"],"summary":"Googlechat Connect","description":"Bind ``agent_id`` to a Google Chat space.\n\nTries to validate the binding by calling Chat's ``spaces.get``, but the\nvalidation is best-effort — if it doesn't return inside 6 seconds we\nsave the binding anyway and trust the user. The Vercel proxy in front\nof trellis-api times out at 30s, so a slow validator was rendering the\nwhole connect flow unusable.","operationId":"googlechat_connect_v1_integrations_googlechat__workspace_id__agent__agent_id__connect_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_googlechat_connect_v1_integrations_googlechat__workspace_id__agent__agent_id__connect_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Googlechat Connect V1 Integrations Googlechat  Workspace Id  Agent  Agent Id  Connect Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["googlechat"]}},"/v1/integrations/googlechat/{workspace_id}/agent/{agent_id}":{"get":{"tags":["Integrations and Sync"],"summary":"Googlechat Status","description":"Return the current Google Chat binding for an agent.","operationId":"googlechat_status_v1_integrations_googlechat__workspace_id__agent__agent_id__get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Googlechat Status V1 Integrations Googlechat  Workspace Id  Agent  Agent Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["googlechat"]},"patch":{"tags":["Integrations and Sync"],"summary":"Googlechat Update","description":"Update Google Chat binding fields and behavior settings.","operationId":"googlechat_update_v1_integrations_googlechat__workspace_id__agent__agent_id__patch","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Googlechat Update V1 Integrations Googlechat  Workspace Id  Agent  Agent Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["googlechat"]},"delete":{"tags":["Integrations and Sync"],"summary":"Googlechat Disconnect","description":"Remove the Google Chat binding for an agent.\n\nNote: the Chat App still lives in the customer's space. The customer\nremoves the bot from the space via Google Chat if they want to stop\nreceiving events on it altogether.","operationId":"googlechat_disconnect_v1_integrations_googlechat__workspace_id__agent__agent_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Googlechat Disconnect V1 Integrations Googlechat  Workspace Id  Agent  Agent Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["googlechat"]}},"/v1/integrations/teams/{workspace_id}/agent/{agent_id}/provision":{"post":{"tags":["Integrations and Sync"],"summary":"Teams Provision","operationId":"teams_provision_v1_integrations_teams__workspace_id__agent__agent_id__provision_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Teams Provision V1 Integrations Teams  Workspace Id  Agent  Agent Id  Provision Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["teams"]}},"/v1/integrations/teams/{workspace_id}/agent/{agent_id}":{"get":{"tags":["Integrations and Sync"],"summary":"Teams Status","operationId":"teams_status_v1_integrations_teams__workspace_id__agent__agent_id__get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Teams Status V1 Integrations Teams  Workspace Id  Agent  Agent Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["teams"]},"patch":{"tags":["Integrations and Sync"],"summary":"Teams Update","operationId":"teams_update_v1_integrations_teams__workspace_id__agent__agent_id__patch","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_teams_update_v1_integrations_teams__workspace_id__agent__agent_id__patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Teams Update V1 Integrations Teams  Workspace Id  Agent  Agent Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["teams"]},"delete":{"tags":["Integrations and Sync"],"summary":"Teams Disconnect","operationId":"teams_disconnect_v1_integrations_teams__workspace_id__agent__agent_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Teams Disconnect V1 Integrations Teams  Workspace Id  Agent  Agent Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["teams"]}},"/v1/integrations/teams/{workspace_id}/agent/{agent_id}/conversations":{"get":{"tags":["Integrations and Sync"],"summary":"Teams Conversations","operationId":"teams_conversations_v1_integrations_teams__workspace_id__agent__agent_id__conversations_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Teams Conversations V1 Integrations Teams  Workspace Id  Agent  Agent Id  Conversations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["teams"]}},"/v1/integrations/teams/bridge/turn":{"post":{"tags":["Integrations and Sync"],"summary":"Teams Bridge Turn","operationId":"teams_bridge_turn_v1_integrations_teams_bridge_turn_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamsBridgeTurnRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Teams Bridge Turn V1 Integrations Teams Bridge Turn Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["teams"]}},"/v1/integrations/teams/bridge/turn-policy":{"post":{"tags":["Integrations and Sync"],"summary":"Teams Bridge Turn Policy","operationId":"teams_bridge_turn_policy_v1_integrations_teams_bridge_turn_policy_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamsBridgeTurnRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Teams Bridge Turn Policy V1 Integrations Teams Bridge Turn Policy Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["teams"]}},"/v1/integrations/agentmail/{workspace_id}/agent/{agent_id}/connect":{"post":{"tags":["Integrations and Sync"],"summary":"Agentmail Connect","description":"Connect an email inbox to an agent.\n\nCreates an AgentMail inbox (idempotent via client_id), registers a\nwebhook for message.received events, and stores the config.","operationId":"agentmail_connect_v1_integrations_agentmail__workspace_id__agent__agent_id__connect_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectEmailRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Agentmail Connect V1 Integrations Agentmail  Workspace Id  Agent  Agent Id  Connect Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agentmail"]}},"/v1/integrations/agentmail/{workspace_id}/agent/{agent_id}":{"get":{"tags":["Integrations and Sync"],"summary":"Agentmail Status","description":"Get email integration status for a specific agent.","operationId":"agentmail_status_v1_integrations_agentmail__workspace_id__agent__agent_id__get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Agentmail Status V1 Integrations Agentmail  Workspace Id  Agent  Agent Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agentmail"]},"delete":{"tags":["Integrations and Sync"],"summary":"Agentmail Disconnect","description":"Disconnect email integration for an agent. Removes webhook, inbox, and config.","operationId":"agentmail_disconnect_v1_integrations_agentmail__workspace_id__agent__agent_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Agentmail Disconnect V1 Integrations Agentmail  Workspace Id  Agent  Agent Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agentmail"]}},"/v1/integrations/agentmail/{workspace_id}/agent/{agent_id}/settings":{"patch":{"tags":["Integrations and Sync"],"summary":"Agentmail Update Settings","operationId":"agentmail_update_settings_v1_integrations_agentmail__workspace_id__agent__agent_id__settings_patch","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEmailSettingsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Agentmail Update Settings V1 Integrations Agentmail  Workspace Id  Agent  Agent Id  Settings Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agentmail"]}},"/v1/integrations/agentmail/{workspace_id}/agent/{agent_id}/lists/{direction}/{list_type}":{"get":{"tags":["Integrations and Sync"],"summary":"Agentmail List Entries","description":"List block/allow entries for an agent's inbox.","operationId":"agentmail_list_entries_v1_integrations_agentmail__workspace_id__agent__agent_id__lists__direction___list_type__get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"direction","in":"path","required":true,"schema":{"type":"string","title":"Direction"}},{"name":"list_type","in":"path","required":true,"schema":{"type":"string","title":"List Type"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Agentmail List Entries V1 Integrations Agentmail  Workspace Id  Agent  Agent Id  Lists  Direction   List Type  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agentmail"]},"post":{"tags":["Integrations and Sync"],"summary":"Agentmail Create List Entry","description":"Add a block/allow entry for an agent's inbox.","operationId":"agentmail_create_list_entry_v1_integrations_agentmail__workspace_id__agent__agent_id__lists__direction___list_type__post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"direction","in":"path","required":true,"schema":{"type":"string","title":"Direction"}},{"name":"list_type","in":"path","required":true,"schema":{"type":"string","title":"List Type"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateListEntryRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Agentmail Create List Entry V1 Integrations Agentmail  Workspace Id  Agent  Agent Id  Lists  Direction   List Type  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agentmail"]}},"/v1/integrations/agentmail/{workspace_id}/agent/{agent_id}/lists/{direction}/{list_type}/{entry_value}":{"delete":{"tags":["Integrations and Sync"],"summary":"Agentmail Delete List Entry","description":"Remove a block/allow entry from an agent's inbox.\n\nentry_value is the email address or domain to remove (URL-encoded by the caller).","operationId":"agentmail_delete_list_entry_v1_integrations_agentmail__workspace_id__agent__agent_id__lists__direction___list_type___entry_value__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"direction","in":"path","required":true,"schema":{"type":"string","title":"Direction"}},{"name":"list_type","in":"path","required":true,"schema":{"type":"string","title":"List Type"}},{"name":"entry_value","in":"path","required":true,"schema":{"type":"string","title":"Entry Value"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Agentmail Delete List Entry V1 Integrations Agentmail  Workspace Id  Agent  Agent Id  Lists  Direction   List Type   Entry Value  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agentmail"]}},"/v1/integrations/agentmail/{workspace_id}/domains":{"get":{"tags":["Integrations and Sync"],"summary":"Agentmail List Domains","description":"List available custom domains from AgentMail.","operationId":"agentmail_list_domains_v1_integrations_agentmail__workspace_id__domains_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Agentmail List Domains V1 Integrations Agentmail  Workspace Id  Domains Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agentmail"]},"post":{"tags":["Integrations and Sync"],"summary":"Agentmail Create Domain","description":"Register a new custom domain with AgentMail.\n\nReturns DNS records needed for verification (SPF, DKIM, DMARC).","operationId":"agentmail_create_domain_v1_integrations_agentmail__workspace_id__domains_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_agentmail_create_domain_v1_integrations_agentmail__workspace_id__domains_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Agentmail Create Domain V1 Integrations Agentmail  Workspace Id  Domains Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agentmail"]}},"/v1/integrations/agentmail/{workspace_id}/domains/{domain_id}":{"get":{"tags":["Integrations and Sync"],"summary":"Agentmail Get Domain","description":"Get domain verification status and DNS records.","operationId":"agentmail_get_domain_v1_integrations_agentmail__workspace_id__domains__domain_id__get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"domain_id","in":"path","required":true,"schema":{"type":"string","title":"Domain Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Agentmail Get Domain V1 Integrations Agentmail  Workspace Id  Domains  Domain Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["agentmail"]}},"/v1/meeting/e2e-readiness":{"get":{"tags":["Messaging and Voice"],"summary":"Get Meeting E2E Readiness","description":"Validate non-secret config required before creating a real Recall bot.","operationId":"get_meeting_e2e_readiness_v1_meeting_e2e_readiness_get","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Meeting E2E Readiness V1 Meeting E2E Readiness Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["meeting"]}},"/v1/meeting/bots":{"post":{"tags":["Messaging and Voice"],"summary":"Create Meeting Bot","description":"Create a Recall.ai bot and send it to join a Google Meet.\n\nThe bot will:\n- Join the meeting and start recording/transcribing\n- Listen for wake words (auto-derived from agent name, or default \"trellis\")\n- Speak when called by name\n- Process transcripts every 5 minutes","operationId":"create_meeting_bot_v1_meeting_bots_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBotRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Meeting Bot V1 Meeting Bots Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["meeting"]},"get":{"tags":["Messaging and Voice"],"summary":"List Meeting Bots","description":"List meeting bots for a workspace.","operationId":"list_meeting_bots_v1_meeting_bots_get","parameters":[{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Meeting Bots V1 Meeting Bots Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["meeting"]}},"/v1/meeting/bots/{bot_id}":{"get":{"tags":["Messaging and Voice"],"summary":"Get Meeting Bot","description":"Get meeting bot details including day context.","operationId":"get_meeting_bot_v1_meeting_bots__bot_id__get","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Meeting Bot V1 Meeting Bots  Bot Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["meeting"]}},"/v1/meeting/bots/{bot_id}/recording-media":{"get":{"tags":["Messaging and Voice"],"summary":"Get Recording Media","description":"Return fresh Recall recording media URLs for playback.","operationId":"get_recording_media_v1_meeting_bots__bot_id__recording_media_get","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Recording Media V1 Meeting Bots  Bot Id  Recording Media Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["meeting"]}},"/v1/meeting/bots/{bot_id}/stop":{"post":{"tags":["Messaging and Voice"],"summary":"Stop Meeting Bot","description":"Stop a meeting bot (tell it to leave the call).","operationId":"stop_meeting_bot_v1_meeting_bots__bot_id__stop_post","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Stop Meeting Bot V1 Meeting Bots  Bot Id  Stop Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["meeting"]}},"/v1/meeting/transcripts/{bot_id}":{"get":{"tags":["Messaging and Voice"],"summary":"Get Transcript","description":"Get transcript chunks for a meeting bot.","operationId":"get_transcript_v1_meeting_transcripts__bot_id__get","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"speaker_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Speaker Name"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Transcript V1 Meeting Transcripts  Bot Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["meeting"]}},"/v1/meeting/reports":{"get":{"tags":["Messaging and Voice"],"summary":"Get Daily Reports","description":"Get daily meeting reports.","operationId":"get_daily_reports_v1_meeting_reports_get","parameters":[{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"report_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Report Date"}},{"name":"member_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Member Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get Daily Reports V1 Meeting Reports Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["meeting"]}},"/v1/meeting/bots/{bot_id}/regenerate-report":{"post":{"tags":["Messaging and Voice"],"summary":"Regenerate Meeting Report","description":"Retry report generation for a meeting bot that failed.","operationId":"regenerate_meeting_report_v1_meeting_bots__bot_id__regenerate_report_post","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Regenerate Meeting Report V1 Meeting Bots  Bot Id  Regenerate Report Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["meeting"]}},"/v1/meeting/bots/{bot_id}/speak":{"post":{"tags":["Messaging and Voice"],"summary":"Speak In Meeting","description":"Manually make the bot speak in the meeting (for testing).\n\nGenerates TTS from the message and outputs it via Recall.ai.","operationId":"speak_in_meeting_v1_meeting_bots__bot_id__speak_post","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeakRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Speak In Meeting V1 Meeting Bots  Bot Id  Speak Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["meeting"]}},"/v1/meeting/tts-voices":{"get":{"tags":["Messaging and Voice"],"summary":"List Tts Voices","description":"List available OpenAI TTS voices for meeting bot.","operationId":"list_tts_voices_v1_meeting_tts_voices_get","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Tts Voices V1 Meeting Tts Voices Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["meeting"]}},"/v1/meeting/gemini-live-voices":{"get":{"tags":["Messaging and Voice"],"summary":"List Gemini Live Voices","description":"List available Gemini Live voices for meeting bot.","operationId":"list_gemini_live_voices_v1_meeting_gemini_live_voices_get","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Gemini Live Voices V1 Meeting Gemini Live Voices Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["meeting"]}},"/v1/meeting/google-meet-config":{"put":{"tags":["Messaging and Voice"],"summary":"Update Google Meet Config","description":"Update Google Meet integration config on an agent.","operationId":"update_google_meet_config_v1_meeting_google_meet_config_put","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateGoogleMeetConfigRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Google Meet Config V1 Meeting Google Meet Config Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["meeting"]},"get":{"tags":["Messaging and Voice"],"summary":"Get Google Meet Config","description":"Get Google Meet integration config for an agent.\n\nReturns the `google_meet_config` JSONB merged with the per-agent in-call\nbehavior columns (`voice_persona`, `greeting`, `voice_instructions`)\nso the frontend can re-hydrate the meetings settings form correctly\nafter a save. Without these columns in the response, autosave fields\nappear blank on next page-load even though the values are persisted.","operationId":"get_google_meet_config_v1_meeting_google_meet_config_get","parameters":[{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"query","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Google Meet Config V1 Meeting Google Meet Config Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["meeting"]}},"/v1/meeting/bots/{bot_id}/live-config":{"get":{"tags":["Messaging and Voice"],"summary":"Get Live Config","description":"Return Gemini Live config for the meeting agent webpage.\n\nCalled by the Output Media webpage (meeting-agent.html) running inside\nRecall.ai's sandboxed browser. The webpage only receives botId + workspaceId\nin the URL hash and fetches this endpoint to get the full config.\n\nThe webpage cannot carry user bearer auth, so access requires a signed\nbot-scoped session token minted into the Output Media URL hash.","operationId":"get_live_config_v1_meeting_bots__bot_id__live_config_get","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Live Config V1 Meeting Bots  Bot Id  Live Config Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["meeting"]}},"/v1/meeting/bots/{bot_id}/tool-call":{"post":{"tags":["Messaging and Voice"],"summary":"Execute Tool Call","description":"Execute a tool call from the Gemini Live meeting agent.\n\nCalled by meeting-agent.html when Gemini sends a toolCall message.\nSame auth model as live-config — signed bot-scoped session token.","operationId":"execute_tool_call_v1_meeting_bots__bot_id__tool_call_post","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolCallRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Execute Tool Call V1 Meeting Bots  Bot Id  Tool Call Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["meeting"]}},"/v1/meeting/bots/{bot_id}/report-error":{"post":{"tags":["Messaging and Voice"],"summary":"Report Bot Error","description":"Report an error from the Output Media webpage (meeting-agent.html).\n\nCalled by meeting-agent.html when a fatal error occurs (mic access denied,\nWebSocket failure, Gemini API error). Same auth model as live-config.\nStores the error in meeting_bots.metadata for debugging.","operationId":"report_bot_error_v1_meeting_bots__bot_id__report_error_post","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportErrorRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Report Bot Error V1 Meeting Bots  Bot Id  Report Error Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["meeting"]}},"/v1/meeting/bots/{bot_id}/report-event":{"post":{"tags":["Messaging and Voice"],"summary":"Report Bot Event","description":"Report Output Media browser telemetry for audio lifecycle debugging.","operationId":"report_bot_event_v1_meeting_bots__bot_id__report_event_post","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportEventRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Report Bot Event V1 Meeting Bots  Bot Id  Report Event Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["meeting"]}},"/v1/operations/internal/fly-webhook":{"post":{"tags":["Operations and Analytics"],"summary":"Fly Webhook","operationId":"fly_webhook_v1_operations_internal_fly_webhook_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Response Fly Webhook V1 Operations Internal Fly Webhook Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["fly-webhook"]}},"/v1/meeting/bots/{bot_id}/state-stream":{"get":{"tags":["Messaging and Voice"],"summary":"State Stream","description":"Open a server-sent-events stream of state events for one meeting bot.\n\nReturns 401 via an empty stream body if the token is missing / bad / expired\n/ not bound to this bot. Valid tokens subscribe to the Redis channel and\nstream events as they arrive.\n\nEach SSE frame is:\n    event: <type>\n    data: <json>\n\nThe first frame emitted after subscribe is always:\n    event: connected\n    data: {\"bot_id\": \"<bot_id>\", \"state\": \"ACTIVE|DORMANT\"} when state is known\nso the client knows the stream is live before any real event arrives.","operationId":"state_stream_v1_meeting_bots__bot_id__state_stream_get","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}},{"name":"token","in":"query","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"}}}}},"x-trellis-raw-tags":["meeting"]}},"/v1/calendar/connect":{"post":{"tags":["Messaging and Voice"],"summary":"Connect Calendar","operationId":"connect_calendar_v1_calendar_connect_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectCalendarRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Connect Calendar V1 Calendar Connect Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["calendar"]}},"/v1/calendar/connections":{"get":{"tags":["Messaging and Voice"],"summary":"List Connections","operationId":"list_connections_v1_calendar_connections_get","parameters":[{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Connections V1 Calendar Connections Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["calendar"]}},"/v1/calendar/events":{"get":{"tags":["Messaging and Voice"],"summary":"List Events","operationId":"list_events_v1_calendar_events_get","parameters":[{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"connection_id","in":"query","required":true,"schema":{"type":"string","title":"Connection Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Events V1 Calendar Events Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["calendar"]}},"/v1/calendar/disconnect":{"post":{"tags":["Messaging and Voice"],"summary":"Disconnect Calendar","operationId":"disconnect_calendar_v1_calendar_disconnect_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DisconnectCalendarRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Disconnect Calendar V1 Calendar Disconnect Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["calendar"]}},"/v1/calendar/auto-join-rules":{"put":{"tags":["Messaging and Voice"],"summary":"Update Auto Join Rules","operationId":"update_auto_join_rules_v1_calendar_auto_join_rules_put","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAutoJoinRulesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Auto Join Rules V1 Calendar Auto Join Rules Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["calendar"]}},"/v1/webhooks/recall/calendar":{"post":{"tags":["Webhooks and Events"],"summary":"Receive Calendar Webhook","operationId":"receive_calendar_webhook_v1_webhooks_recall_calendar_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Receive Calendar Webhook V1 Webhooks Recall Calendar Post"}}}}},"x-trellis-raw-tags":["calendar-webhooks"]}},"/v1/ai/kb-vectors/search":{"get":{"tags":["Knowledge and Memory"],"summary":"Search Documents","description":"Unified KB document search.\n\nModes:\n- **title**: Fast case-insensitive title matching\n- **keyword**: Full-text search over document content (tsvector)\n- **semantic**: AI-powered meaning-based search using vector embeddings\n- **hybrid**: Combines all modes with intelligent score fusion (default)\n\nShare filtering:\n- When identity params are provided, only documents accessible\n  to that identity are returned (respects kb_document_shares).\n- When omitted, all workspace documents are returned (for workspace members).","operationId":"search_documents_v1_ai_kb_vectors_search_get","parameters":[{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","description":"Workspace ID","title":"Workspace Id"},"description":"Workspace ID"},{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"description":"Search query","title":"Q"},"description":"Search query"},{"name":"mode","in":"query","required":false,"schema":{"type":"string","description":"Search mode: title, keyword, semantic, hybrid","default":"hybrid","title":"Mode"},"description":"Search mode: title, keyword, semantic, hybrid"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"Max results","default":20,"title":"Limit"},"description":"Max results"},{"name":"parent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by parent folder (title mode only)","title":"Parent Id"},"description":"Filter by parent folder (title mode only)"},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by agent share permissions","title":"Agent Id"},"description":"Filter by agent share permissions"},{"name":"contact_type_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by contact type (inbox) share permissions","title":"Contact Type Id"},"description":"Filter by contact type (inbox) share permissions"},{"name":"contact_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by contact share permissions","title":"Contact Id"},"description":"Filter by contact share permissions"},{"name":"property_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by property share permissions","title":"Property Id"},"description":"Filter by property share permissions"},{"name":"member_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by workspace member share permissions","title":"Member Id"},"description":"Filter by workspace member share permissions"},{"name":"user_role","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by workspace role share permissions","title":"User Role"},"description":"Filter by workspace role share permissions"},{"name":"corpus_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Restrict search to corpus IDs","title":"Corpus Ids"},"description":"Restrict search to corpus IDs"},{"name":"include_unscoped","in":"query","required":false,"schema":{"type":"boolean","description":"Include native documents without a corpus","default":false,"title":"Include Unscoped"},"description":"Include native documents without a corpus"},{"name":"tag_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Require any selected tag","title":"Tag Ids"},"description":"Require any selected tag"},{"name":"updated_by_types","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Restrict by document updater type","title":"Updated By Types"},"description":"Restrict by document updater type"},{"name":"created_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"},{"type":"null"}],"description":"Created on or after this date","title":"Created From"},"description":"Created on or after this date"},{"name":"created_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"},{"type":"null"}],"description":"Created on or before this date","title":"Created To"},"description":"Created on or before this date"},{"name":"document_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"DOCUMENT or FOLDER","title":"Document Type"},"description":"DOCUMENT or FOLDER"},{"name":"tagged_only","in":"query","required":false,"schema":{"type":"boolean","description":"Require a tag assignment","default":false,"title":"Tagged Only"},"description":"Require a tag assignment"},{"name":"restricted_only","in":"query","required":false,"schema":{"type":"boolean","description":"Require a restricted share","default":false,"title":"Restricted Only"},"description":"Require a restricted share"},{"name":"agent_context_only","in":"query","required":false,"schema":{"type":"boolean","description":"Require creation by or sharing to agent_id","default":false,"title":"Agent Context Only"},"description":"Require creation by or sharing to agent_id"},{"name":"agent_context_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Validated agent identity used only by the document filter","title":"Agent Context Id"},"description":"Validated agent identity used only by the document filter"},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["ai","kb"]}},"/v1/insights":{"get":{"tags":["Operations and Analytics"],"summary":"Get Insights","description":"Get insights metrics for a workspace.\n\nSections: messaging (more to come).","operationId":"get_insights_v1_insights_get","parameters":[{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","description":"Workspace ID","title":"Workspace Id"},"description":"Workspace ID"},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO 8601 start date","title":"From Date"},"description":"ISO 8601 start date"},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO 8601 end date","title":"To Date"},"description":"ISO 8601 end date"},{"name":"property_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated property UUIDs","title":"Property Ids"},"description":"Comma-separated property UUIDs"},{"name":"sections","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated sections to include","default":"messaging","title":"Sections"},"description":"Comma-separated sections to include"},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InsightsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["insights"]}},"/v1/workspaces/{workspace_id}/platform-stats":{"get":{"tags":["Operations and Analytics"],"summary":"Get All Platform Stats","description":"Aggregate endpoint — returns every section in one payload.\n\nFetches all seven sections in parallel via asyncio.gather.","operationId":"get_all_platform_stats_v1_workspaces__workspace_id__platform_stats_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"from","in":"query","required":true,"schema":{"type":"string","description":"YYYY-MM-DD","title":"From"},"description":"YYYY-MM-DD"},{"name":"to","in":"query","required":true,"schema":{"type":"string","description":"YYYY-MM-DD","title":"To"},"description":"YYYY-MM-DD"},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformStatsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["platform-stats"]}},"/v1/workspaces/{workspace_id}/platform-stats/overview":{"get":{"tags":["Operations and Analytics"],"summary":"Get Overview","description":"Layer 1 overview cards + communications daily trend.","operationId":"get_overview_v1_workspaces__workspace_id__platform_stats_overview_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"from","in":"query","required":true,"schema":{"type":"string","title":"From"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","title":"To"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OverviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["platform-stats"]}},"/v1/workspaces/{workspace_id}/platform-stats/people":{"get":{"tags":["Operations and Analytics"],"summary":"Get People","description":"Per-user activity table + per-agent configuration table.","operationId":"get_people_v1_workspaces__workspace_id__platform_stats_people_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"from","in":"query","required":true,"schema":{"type":"string","title":"From"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","title":"To"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["platform-stats"]}},"/v1/workspaces/{workspace_id}/platform-stats/agent-runtime":{"get":{"tags":["Operations and Analytics"],"summary":"Get Agent Runtime","description":"Interactive agent trace metrics (excludes ResponseFlow and background).","operationId":"get_agent_runtime_v1_workspaces__workspace_id__platform_stats_agent_runtime_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"from","in":"query","required":true,"schema":{"type":"string","title":"From"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","title":"To"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRuntimeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["platform-stats"]}},"/v1/workspaces/{workspace_id}/platform-stats/responseflow":{"get":{"tags":["Operations and Analytics"],"summary":"Get Responseflow","description":"ResponseFlow proposed replies, escalations, and funnel.","operationId":"get_responseflow_v1_workspaces__workspace_id__platform_stats_responseflow_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"from","in":"query","required":true,"schema":{"type":"string","title":"From"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","title":"To"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseFlowResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["platform-stats"]}},"/v1/workspaces/{workspace_id}/platform-stats/tasks":{"get":{"tags":["Operations and Analytics"],"summary":"Get Tasks","description":"Task creation metrics grouped by source.","operationId":"get_tasks_v1_workspaces__workspace_id__platform_stats_tasks_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"from","in":"query","required":true,"schema":{"type":"string","title":"From"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","title":"To"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TasksResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["platform-stats"]}},"/v1/workspaces/{workspace_id}/platform-stats/workflows":{"get":{"tags":["Operations and Analytics"],"summary":"Get Workflows","description":"Workflow summary + per-workflow run counts within the period.","operationId":"get_workflows_v1_workspaces__workspace_id__platform_stats_workflows_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"from","in":"query","required":true,"schema":{"type":"string","title":"From"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","title":"To"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["platform-stats"]}},"/v1/workspaces/{workspace_id}/platform-stats/kb-skills":{"get":{"tags":["Operations and Analytics"],"summary":"Get Kb Skills","description":"KB document counts + top AI tool calls (skills) within the period.","operationId":"get_kb_skills_v1_workspaces__workspace_id__platform_stats_kb_skills_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"from","in":"query","required":true,"schema":{"type":"string","title":"From"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","title":"To"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KbSkillsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["platform-stats"]}},"/v1/workspaces/{workspace_id}/platform-stats/drill-down":{"get":{"tags":["Operations and Analytics"],"summary":"Get Drill Down","description":"Filtered list items for sidebar click-through.\n\nSee services/platform_stats/drill_down.py for supported type values.","operationId":"get_drill_down_v1_workspaces__workspace_id__platform_stats_drill_down_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"from","in":"query","required":true,"schema":{"type":"string","title":"From"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","title":"To"}},{"name":"type","in":"query","required":true,"schema":{"type":"string","description":"Drill-down type (traces, escalations, tasks, ...)","title":"Type"},"description":"Drill-down type (traces, escalations, tasks, ...)"},{"name":"filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter column for type=traces/workflows","title":"Filter"},"description":"Filter column for type=traces/workflows"},{"name":"value","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter value (may be user_id or agent_id)","title":"Value"},"description":"Filter value (may be user_id or agent_id)"},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DrillDownResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["platform-stats"]}},"/v1/ai/custom-tools":{"get":{"tags":["Agent Tools and MCP"],"summary":"List Custom Tools","operationId":"list_custom_tools_v1_ai_custom_tools_get","parameters":[{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["custom-tools"]},"post":{"tags":["Agent Tools and MCP"],"summary":"Create Custom Tool","operationId":"create_custom_tool_v1_ai_custom_tools_post","parameters":[{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCustomToolRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["custom-tools"]}},"/v1/ai/custom-tools/{tool_id}":{"get":{"tags":["Agent Tools and MCP"],"summary":"Get Custom Tool","operationId":"get_custom_tool_v1_ai_custom_tools__tool_id__get","parameters":[{"name":"tool_id","in":"path","required":true,"schema":{"type":"string","title":"Tool Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["custom-tools"]},"put":{"tags":["Agent Tools and MCP"],"summary":"Update Custom Tool","operationId":"update_custom_tool_v1_ai_custom_tools__tool_id__put","parameters":[{"name":"tool_id","in":"path","required":true,"schema":{"type":"string","title":"Tool Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCustomToolRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["custom-tools"]},"delete":{"tags":["Agent Tools and MCP"],"summary":"Delete Custom Tool","operationId":"delete_custom_tool_v1_ai_custom_tools__tool_id__delete","parameters":[{"name":"tool_id","in":"path","required":true,"schema":{"type":"string","title":"Tool Id"}},{"name":"workspace_id","in":"query","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["custom-tools"]}},"/v1/ai/custom-tools/{tool_id}/test":{"post":{"tags":["Agent Tools and MCP"],"summary":"Test Custom Tool","operationId":"test_custom_tool_v1_ai_custom_tools__tool_id__test_post","parameters":[{"name":"tool_id","in":"path","required":true,"schema":{"type":"string","title":"Tool Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestCustomToolRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["custom-tools"]}},"/v1/onboarding/{workspace_id}/profile":{"post":{"tags":["Onboarding and Setup"],"summary":"Save Profile","description":"Save user profile and contact info during onboarding.","operationId":"save_profile_v1_onboarding__workspace_id__profile_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaveProfileRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["onboarding"]}},"/v1/onboarding/{workspace_id}/track":{"post":{"tags":["Onboarding and Setup"],"summary":"Save Track","description":"Save onboarding track selection.","operationId":"save_track_v1_onboarding__workspace_id__track_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaveTrackRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["onboarding"]}},"/v1/onboarding/{workspace_id}/agent":{"post":{"tags":["Onboarding and Setup"],"summary":"Create Agent","description":"Create the user's personal agent with scopes and tool permissions.","operationId":"create_agent_v1_onboarding__workspace_id__agent_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAgentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["onboarding"]}},"/v1/onboarding/{workspace_id}/agent-setup-chat":{"post":{"tags":["Onboarding and Setup"],"summary":"Agent Setup Chat","description":"Stream onboarding agent chat for guided agent configuration.","operationId":"agent_setup_chat_v1_onboarding__workspace_id__agent_setup_chat_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_agent_setup_chat_v1_onboarding__workspace_id__agent_setup_chat_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["onboarding"]}},"/v1/onboarding/{workspace_id}/agent/finalize":{"post":{"tags":["Onboarding and Setup"],"summary":"Finalize Agent","description":"Save agent instructions, pulse config, and install recommended skills.","operationId":"finalize_agent_v1_onboarding__workspace_id__agent_finalize_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinalizeAgentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["onboarding"]}},"/v1/onboarding/{workspace_id}/status":{"get":{"tags":["Onboarding and Setup"],"summary":"Get Onboarding Status","description":"Get onboarding status and computed current step.","operationId":"get_onboarding_status_v1_onboarding__workspace_id__status_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["onboarding"]}},"/v1/onboarding/{workspace_id}/complete":{"post":{"tags":["Onboarding and Setup"],"summary":"Complete Onboarding","description":"Set workspace onboarding status to ACTIVE.","operationId":"complete_onboarding_v1_onboarding__workspace_id__complete_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-trellis-raw-tags":["onboarding"]}},"/":{"get":{"summary":"Root","description":"Root endpoint - basic API info.","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"x-trellis-raw-tags":["untagged"],"tags":["Public and Health"]}}},"components":{"schemas":{"AIActionRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id","description":"Workspace context"},"action":{"$ref":"#/components/schemas/AIActionType","description":"Action to perform"},"context":{"additionalProperties":true,"type":"object","title":"Context","description":"Action-specific context"}},"type":"object","required":["workspace_id","action"],"title":"AIActionRequest","description":"AI sidebar action request."},"AIActionResponse":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"action":{"type":"string","title":"Action","description":"Action that was performed"},"result":{"additionalProperties":true,"type":"object","title":"Result","description":"Action-specific result"},"processing_time_ms":{"type":"number","title":"Processing Time Ms","description":"Processing time"}},"type":"object","required":["action","result","processing_time_ms"],"title":"AIActionResponse","description":"Response from AI action endpoint."},"AIActionType":{"type":"string","enum":["classify_message","generate_response","summarize_conversation","extract_entities"],"title":"AIActionType","description":"AI sidebar action types."},"AcceptedResponse":{"properties":{"status":{"type":"string","title":"Status","description":"Always 'accepted'","default":"accepted"},"message":{"type":"string","title":"Message","description":"Description of queued operation"},"job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Id","description":"Background job ID for tracking"}},"type":"object","required":["message"],"title":"AcceptedResponse","description":"Response for async/background operations."},"ActivationOverride":{"properties":{"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},"type":"object","title":"ActivationOverride","description":"Explicit operator choice to activate without a passing test run.\n\nreason is free text from the operator surface; user_id identifies the\noperator (falls back to the seam's own identity field when omitted)."},"ActivityLogEntry":{"properties":{"id":{"type":"string","title":"Id"},"workspace_id":{"type":"string","title":"Workspace Id"},"entity_type":{"type":"string","title":"Entity Type"},"entity_id":{"type":"string","title":"Entity Id"},"action":{"type":"string","title":"Action"},"actor_type":{"type":"string","title":"Actor Type"},"actor_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Id"},"actor_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Name"},"old_value":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Old Value"},"new_value":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"New Value"},"changes":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Changes"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"is_reverted":{"type":"boolean","title":"Is Reverted","default":false},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","workspace_id","entity_type","entity_id","action","actor_type"],"title":"ActivityLogEntry"},"ActivityLogResponse":{"properties":{"activities":{"items":{"$ref":"#/components/schemas/ActivityLogEntry"},"type":"array","title":"Activities"},"total":{"type":"integer","title":"Total"},"has_more":{"type":"boolean","title":"Has More"}},"type":"object","required":["activities","total","has_more"],"title":"ActivityLogResponse"},"AddMembersRequest":{"properties":{"simulation_ids":{"items":{"type":"string"},"type":"array","title":"Simulation Ids"}},"type":"object","title":"AddMembersRequest"},"AgentChannels":{"properties":{"slack":{"type":"boolean","title":"Slack"},"telegram":{"type":"boolean","title":"Telegram"},"whatsapp":{"type":"boolean","title":"Whatsapp"},"email":{"type":"boolean","title":"Email"},"sms":{"type":"boolean","title":"Sms"},"phone":{"type":"boolean","title":"Phone"}},"type":"object","required":["slack","telegram","whatsapp","email","sms","phone"],"title":"AgentChannels"},"AgentMemoryCommandResponse":{"properties":{"action":{"type":"string","title":"Action"},"memory":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Memory"},"used_chars":{"type":"integer","title":"Used Chars"},"freed_chars":{"type":"integer","title":"Freed Chars"},"memory_revision":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Memory Revision"}},"type":"object","required":["action","memory","used_chars","freed_chars","memory_revision"],"title":"AgentMemoryCommandResponse","description":"Stable receipt returned to application callers."},"AgentMemoryControlCenterResponse":{"properties":{"overview":{"additionalProperties":true,"type":"object","title":"Overview"},"memories":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Memories"},"archived_memories":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Archived Memories"},"history":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"History"}},"type":"object","required":["overview","memories","archived_memories","history"],"title":"AgentMemoryControlCenterResponse","description":"Server-owned memory list, lifecycle health, and immutable history."},"AgentMemoryLifecycleRequest":{"properties":{"workspace_id":{"type":"string","minLength":1,"title":"Workspace Id"},"actor_kind":{"type":"string","const":"user","title":"Actor Kind"},"actor_user_id":{"type":"string","format":"uuid","title":"Actor User Id"},"allowed_property_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Allowed Property Ids"}},"type":"object","required":["workspace_id","actor_kind","actor_user_id"],"title":"AgentMemoryLifecycleRequest","description":"Exact tenant scope for a reversible lifecycle command."},"AgentRow":{"properties":{"agentId":{"type":"string","title":"Agentid"},"name":{"type":"string","title":"Name"},"isDefault":{"type":"boolean","title":"Isdefault"},"inboxScopes":{"type":"integer","title":"Inboxscopes"},"hasAutopilot":{"type":"boolean","title":"Hasautopilot"},"channels":{"$ref":"#/components/schemas/AgentChannels"},"externalConnections":{"items":{"type":"string"},"type":"array","title":"Externalconnections"},"kbDocs":{"type":"integer","title":"Kbdocs"},"skillsOn":{"type":"integer","title":"Skillson"},"skillsOff":{"type":"integer","title":"Skillsoff"},"workflows":{"type":"integer","title":"Workflows"},"runsInPeriod":{"type":"integer","title":"Runsinperiod"}},"type":"object","required":["agentId","name","isDefault","inboxScopes","hasAutopilot","channels","externalConnections","kbDocs","skillsOn","skillsOff","workflows","runsInPeriod"],"title":"AgentRow"},"AgentRuntimeResponse":{"properties":{"totalRuns":{"type":"integer","title":"Totalruns"},"negativeRuns":{"type":"integer","title":"Negativeruns"},"negativeRunsPct":{"type":"number","title":"Negativerunspct"},"avgDurationMs":{"type":"integer","title":"Avgdurationms"},"byChannel":{"items":{"$ref":"#/components/schemas/ChannelRuns"},"type":"array","title":"Bychannel"},"byIntent":{"items":{"$ref":"#/components/schemas/IntentRuns"},"type":"array","title":"Byintent"},"topAgents":{"items":{"$ref":"#/components/schemas/TopAgentRuns"},"type":"array","title":"Topagents"},"trend":{"$ref":"#/components/schemas/AgentRuntimeTrend"}},"type":"object","required":["totalRuns","negativeRuns","negativeRunsPct","avgDurationMs","byChannel","byIntent","topAgents","trend"],"title":"AgentRuntimeResponse"},"AgentRuntimeTrend":{"properties":{"channels":{"items":{"type":"string"},"type":"array","title":"Channels"},"data":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Data"}},"type":"object","required":["channels","data"],"title":"AgentRuntimeTrend"},"AgentTelegramConfigPatch":{"properties":{"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"settings":{"anyOf":[{"$ref":"#/components/schemas/AgentTelegramSettingsPatch"},{"type":"null"}]}},"additionalProperties":false,"type":"object","title":"AgentTelegramConfigPatch","description":"Strict Telegram config update."},"AgentTelegramSettingsPatch":{"properties":{"direct_chat_mode":{"anyOf":[{"type":"string","enum":["mention_only","auto_participate","always_reply"]},{"type":"null"}],"title":"Direct Chat Mode"},"group_chat_mode":{"anyOf":[{"type":"string","enum":["mention_only","auto_participate","always_reply"]},{"type":"null"}],"title":"Group Chat Mode"},"auto_participate_after_mention":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Participate After Mention"},"show_progress":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Show Progress"}},"additionalProperties":false,"type":"object","title":"AgentTelegramSettingsPatch","description":"Strict partial Telegram settings update accepted by the setup route."},"AnalyzeRequest":{"properties":{"source_type":{"type":"string","enum":["GOOGLE_SHEETS","GOOGLE_DRIVE","FILE_UPLOAD","URL"],"title":"Source Type"},"spreadsheet_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Spreadsheet Id"},"sheet_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sheet Name"},"file_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Id"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"storage_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Storage Path"},"identity_col":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Identity Col"}},"type":"object","required":["source_type"],"title":"AnalyzeRequest","description":"Request to analyze content and propose field mappings."},"ApproveRequest":{"properties":{"approval_id":{"type":"string","title":"Approval Id"},"action":{"type":"string","enum":["approved","rejected"],"title":"Action"},"reviewed_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reviewed By"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["approval_id","action"],"title":"ApproveRequest"},"ArchiveWorkflowRequest":{"properties":{"confirm":{"type":"boolean","title":"Confirm","default":false},"preview_receipt":{"anyOf":[{"type":"string","maxLength":64,"minLength":64},{"type":"null"}],"title":"Preview Receipt"},"disposition":{"anyOf":[{"type":"string","enum":["canonical_replacement","duplicate","empty_placeholder","merge_input","obsolete","operator_archive","scratch","test_fixture"]},{"type":"null"}],"title":"Disposition"},"replacement_workflow_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Replacement Workflow Id"},"note":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Note"},"retire":{"type":"boolean","title":"Retire","default":false}},"type":"object","title":"ArchiveWorkflowRequest","description":"Explicit confirmation bound to a fresh, read-only archive preview."},"AssignTagRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"entity_type":{"type":"string","title":"Entity Type"},"entity_id":{"type":"string","title":"Entity Id"},"tag_id":{"type":"string","title":"Tag Id"},"assigned_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assigned By"}},"type":"object","required":["workspace_id","entity_type","entity_id","tag_id"],"title":"AssignTagRequest"},"AttributionCoverage":{"properties":{"attributed_count":{"type":"integer","title":"Attributed Count"},"missing_count":{"type":"integer","title":"Missing Count"},"total_count":{"type":"integer","title":"Total Count"},"complete":{"type":"boolean","title":"Complete"}},"type":"object","required":["attributed_count","missing_count","total_count","complete"],"title":"AttributionCoverage"},"AutomationMetrics":{"properties":{"total_needing_reply":{"type":"integer","title":"Total Needing Reply","default":0},"ai_sent":{"type":"integer","title":"Ai Sent","default":0},"automation_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Automation Rate"},"escalation_count":{"type":"integer","title":"Escalation Count","default":0},"escalation_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Escalation Rate"},"topic_breakdown":{"additionalProperties":{"type":"integer"},"type":"object","title":"Topic Breakdown","default":{}}},"type":"object","title":"AutomationMetrics"},"AutopilotDisabledAlertRequest":{"properties":{"source_workspace_id":{"type":"string","maxLength":200,"minLength":1,"title":"Source Workspace Id"},"source_workspace_name":{"type":"string","maxLength":200,"minLength":1,"title":"Source Workspace Name"},"idempotency_key":{"type":"string","maxLength":512,"minLength":1,"title":"Idempotency Key"},"dry_run":{"type":"boolean","title":"Dry Run"}},"additionalProperties":false,"type":"object","required":["source_workspace_id","source_workspace_name","idempotency_key","dry_run"],"title":"AutopilotDisabledAlertRequest"},"AutopilotDisabledAlertResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true},"dry_run":{"type":"boolean","title":"Dry Run"},"duplicate":{"type":"boolean","title":"Duplicate"},"channel_id":{"type":"string","title":"Channel Id"},"message_ts":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Ts"},"platform_agent_id":{"type":"string","title":"Platform Agent Id"},"delivery_state":{"type":"string","title":"Delivery State"}},"additionalProperties":false,"type":"object","required":["dry_run","duplicate","channel_id","message_ts","platform_agent_id","delivery_state"],"title":"AutopilotDisabledAlertResponse"},"BatchCustomFieldRequest":{"properties":{"field_key":{"type":"string","title":"Field Key"},"field_label":{"type":"string","title":"Field Label"},"field_type":{"type":"string","title":"Field Type"}},"type":"object","required":["field_key","field_label","field_type"],"title":"BatchCustomFieldRequest","description":"A single custom field to create."},"BatchCustomFieldsRequest":{"properties":{"fields":{"items":{"$ref":"#/components/schemas/BatchCustomFieldRequest"},"type":"array","title":"Fields"}},"type":"object","required":["fields"],"title":"BatchCustomFieldsRequest","description":"Request to batch-create custom field definitions."},"BlockCalendarRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"property_id":{"type":"string","title":"Property Id"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["workspace_id","property_id","start_date","end_date"],"title":"BlockCalendarRequest"},"BlockerCreate":{"properties":{"blocker_type":{"type":"string","title":"Blocker Type","description":"Type of blocker"},"description":{"type":"string","title":"Description","description":"Description of the blocker"},"blocking_entity_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blocking Entity Type"},"blocking_entity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Blocking Entity Id"},"due_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Due Date"}},"type":"object","required":["blocker_type","description"],"title":"BlockerCreate","description":"Request model for creating a blocker."},"BlockerListResponse":{"properties":{"blockers":{"items":{"$ref":"#/components/schemas/BlockerResponse"},"type":"array","title":"Blockers"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["blockers","total"],"title":"BlockerListResponse","description":"Response model for list of blockers."},"BlockerResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"workspace_id":{"type":"string","format":"uuid","title":"Workspace Id"},"blocked_entity_type":{"type":"string","title":"Blocked Entity Type"},"blocked_entity_id":{"type":"string","format":"uuid","title":"Blocked Entity Id"},"blocker_type":{"type":"string","title":"Blocker Type"},"description":{"type":"string","title":"Description"},"blocking_entity_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blocking Entity Type"},"blocking_entity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Blocking Entity Id"},"due_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Due Date"},"resolved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Resolved At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","workspace_id","blocked_entity_type","blocked_entity_id","blocker_type","description","created_at","updated_at"],"title":"BlockerResponse","description":"Response model for a blocker."},"Body_agent_setup_chat_v1_onboarding__workspace_id__agent_setup_chat_post":{"properties":{"message":{"type":"string","title":"Message"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},"type":"object","required":["message"],"title":"Body_agent_setup_chat_v1_onboarding__workspace_id__agent_setup_chat_post"},"Body_agentmail_create_domain_v1_integrations_agentmail__workspace_id__domains_post":{"properties":{"domain":{"type":"string","title":"Domain"}},"type":"object","required":["domain"],"title":"Body_agentmail_create_domain_v1_integrations_agentmail__workspace_id__domains_post"},"Body_browser_auth_complete_v1_agent_browser_sessions__session_id__auth_complete_post":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"close_session":{"type":"boolean","title":"Close Session","default":false},"auth_completed":{"type":"boolean","title":"Auth Completed","default":false}},"type":"object","required":["workspace_id"],"title":"Body_browser_auth_complete_v1_agent_browser_sessions__session_id__auth_complete_post"},"Body_cancel_session_plan_v1_agent_sessions__session_id__cancel_plan_post":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"}},"type":"object","required":["workspace_id"],"title":"Body_cancel_session_plan_v1_agent_sessions__session_id__cancel_plan_post"},"Body_cancel_sub_task_v1_agent_sub_tasks__sub_task_id__cancel_post":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"}},"type":"object","required":["workspace_id"],"title":"Body_cancel_sub_task_v1_agent_sub_tasks__sub_task_id__cancel_post"},"Body_change_voice_v1_voice__workspace_id__voice_put":{"properties":{"voice_id":{"type":"string","title":"Voice Id"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"phone_number_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number Id"}},"type":"object","required":["voice_id"],"title":"Body_change_voice_v1_voice__workspace_id__voice_put"},"Body_chaos_v1_internal_agent_sessions__session_id__chaos_post":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"action":{"type":"string","title":"Action"}},"type":"object","required":["workspace_id","action"],"title":"Body_chaos_v1_internal_agent_sessions__session_id__chaos_post"},"Body_delete_browser_context_v1_agent_browser_contexts__context_id__delete":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"}},"type":"object","required":["workspace_id"],"title":"Body_delete_browser_context_v1_agent_browser_contexts__context_id__delete"},"Body_googlechat_connect_v1_integrations_googlechat__workspace_id__agent__agent_id__connect_post":{"properties":{"space_id":{"type":"string","title":"Space Id"}},"type":"object","required":["space_id"],"title":"Body_googlechat_connect_v1_integrations_googlechat__workspace_id__agent__agent_id__connect_post"},"Body_lab_chat_stream_v1_labs_sessions__session_id__chat_post":{"properties":{"content":{"type":"string","title":"Content"},"workspace_id":{"type":"string","title":"Workspace Id"}},"type":"object","required":["content","workspace_id"],"title":"Body_lab_chat_stream_v1_labs_sessions__session_id__chat_post"},"Body_make_call_v1_voice__workspace_id__call_post":{"properties":{"to_number":{"type":"string","title":"To Number"},"from_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Number"},"call_objective":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Call Objective"},"begin_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Begin Message"},"voice_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id"},"contact_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Name"},"contact_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Role"},"property_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Property Name"},"additional_context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Additional Context"},"dynamic_variables":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Dynamic Variables"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"}},"type":"object","required":["to_number"],"title":"Body_make_call_v1_voice__workspace_id__call_post"},"Body_property_cleaning_sweep_v1_internal_property_cleaning_sweep_post":{"properties":{"include_needs_refresh":{"type":"boolean","title":"Include Needs Refresh","default":false}},"type":"object","title":"Body_property_cleaning_sweep_v1_internal_property_cleaning_sweep_post"},"Body_property_timezone_reconcile_v1_internal_property_timezone_reconcile_post":{"properties":{"limit":{"type":"integer","title":"Limit","default":5000}},"type":"object","title":"Body_property_timezone_reconcile_v1_internal_property_timezone_reconcile_post"},"Body_reconcile_voice_number_v1_voice__workspace_id__number_reconcile_post":{"properties":{"phone_number_id":{"type":"string","title":"Phone Number Id"},"agent_id":{"type":"string","title":"Agent Id"}},"type":"object","required":["phone_number_id","agent_id"],"title":"Body_reconcile_voice_number_v1_voice__workspace_id__number_reconcile_post"},"Body_register_custom_telephony_v1_voice__workspace_id__custom_telephony_register_post":{"properties":{"from_number":{"type":"string","title":"From Number"},"to_number":{"type":"string","title":"To Number"},"direction":{"type":"string","enum":["inbound","outbound"],"title":"Direction"},"retell_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retell Agent Id"},"dynamic_variables":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Dynamic Variables"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"resolve_context":{"type":"boolean","title":"Resolve Context","default":true}},"type":"object","required":["from_number","to_number","direction"],"title":"Body_register_custom_telephony_v1_voice__workspace_id__custom_telephony_register_post"},"Body_register_file_to_session_v1_agent_sessions__session_id__register_file_post":{"properties":{"file_name":{"type":"string","title":"File Name"},"file_type":{"type":"string","title":"File Type"},"file_size":{"type":"integer","title":"File Size"},"storage_path":{"type":"string","title":"Storage Path"}},"type":"object","required":["file_name","file_type","file_size","storage_path"],"title":"Body_register_file_to_session_v1_agent_sessions__session_id__register_file_post"},"Body_release_number_v1_voice__workspace_id__number_delete":{"properties":{"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number"}},"type":"object","title":"Body_release_number_v1_voice__workspace_id__number_delete"},"Body_restore_simulation_version_v1_labs_simulations__simulation_id__versions__version_id__restore_post":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},"type":"object","required":["workspace_id"],"title":"Body_restore_simulation_version_v1_labs_simulations__simulation_id__versions__version_id__restore_post"},"Body_resume_run_v1_internal_agent_sessions__session_id__resume_run_post":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"request_id":{"type":"string","title":"Request Id","default":"run-supervisor"},"fold_only":{"type":"boolean","title":"Fold Only","default":false}},"type":"object","required":["workspace_id"],"title":"Body_resume_run_v1_internal_agent_sessions__session_id__resume_run_post"},"Body_setup_voice_v1_voice__workspace_id__setup_post":{"properties":{"area_code":{"type":"integer","title":"Area Code"},"voice_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id"},"language_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language Mode"},"fixed_language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fixed Language"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},"type":"object","required":["area_code"],"title":"Body_setup_voice_v1_voice__workspace_id__setup_post"},"Body_slack_update_v1_integrations_slack__workspace_id__agent__agent_id__patch":{"properties":{"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Settings"},"channels":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Channels"}},"type":"object","title":"Body_slack_update_v1_integrations_slack__workspace_id__agent__agent_id__patch"},"Body_start_manual_login_session_v1_agent_browser_contexts_login_post":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"agent_id":{"type":"string","title":"Agent Id"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"proxy_geolocation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proxy Geolocation"},"task_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task Description"},"automated":{"type":"boolean","title":"Automated","default":false}},"type":"object","required":["workspace_id","agent_id"],"title":"Body_start_manual_login_session_v1_agent_browser_contexts_login_post"},"Body_teams_update_v1_integrations_teams__workspace_id__agent__agent_id__patch":{"properties":{"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Settings"}},"type":"object","title":"Body_teams_update_v1_integrations_teams__workspace_id__agent__agent_id__patch"},"Body_telegram_connect_v1_integrations_telegram__workspace_id__agent__agent_id__connect_post":{"properties":{"bot_token":{"type":"string","title":"Bot Token"}},"type":"object","required":["bot_token"],"title":"Body_telegram_connect_v1_integrations_telegram__workspace_id__agent__agent_id__connect_post"},"Body_toggle_plan_mode_v1_agent_sessions__session_id__plan_mode_patch":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"workspace_id":{"type":"string","title":"Workspace Id"}},"type":"object","required":["enabled","workspace_id"],"title":"Body_toggle_plan_mode_v1_agent_sessions__session_id__plan_mode_patch"},"Body_trigger_canary_health_trigger_canary_post":{"properties":{"ping_at":{"type":"string","title":"Ping At"}},"type":"object","required":["ping_at"],"title":"Body_trigger_canary_health_trigger_canary_post"},"Body_update_agent_name_config_v1_voice__workspace_id__agent_name_put":{"properties":{"agent_name":{"type":"string","title":"Agent Name"}},"type":"object","required":["agent_name"],"title":"Body_update_agent_name_config_v1_voice__workspace_id__agent_name_put"},"Body_update_language_config_v1_voice__workspace_id__language_put":{"properties":{"language_mode":{"type":"string","title":"Language Mode"},"fixed_language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fixed Language"},"begin_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Begin Message"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},"type":"object","required":["language_mode"],"title":"Body_update_language_config_v1_voice__workspace_id__language_put"},"Body_update_session_model_v1_agent_sessions__session_id__model_patch":{"properties":{"model_id":{"type":"string","title":"Model Id"}},"type":"object","required":["model_id"],"title":"Body_update_session_model_v1_agent_sessions__session_id__model_patch"},"Body_update_voice_mapping_config_v1_voice__workspace_id__voice_mapping_put":{"properties":{"voice_mapping":{"additionalProperties":{"type":"string"},"type":"object","title":"Voice Mapping"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},"type":"object","required":["voice_mapping"],"title":"Body_update_voice_mapping_config_v1_voice__workspace_id__voice_mapping_put"},"Body_upload_file_to_session_v1_agent_sessions__session_id__upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_file_to_session_v1_agent_sessions__session_id__upload_post"},"Body_upload_shared_task_photo_api_v1_public_shared_task__token__upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_shared_task_photo_api_v1_public_shared_task__token__upload_post"},"Body_warm_sidebar_v1_agent_warm_post":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"user_id":{"type":"string","title":"User Id"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"model_id":{"type":"string","title":"Model Id","default":"default"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},"type":"object","required":["workspace_id","user_id"],"title":"Body_warm_sidebar_v1_agent_warm_post"},"Body_workflow_health_sweep_v1_internal_workflows_health_sweep_post":{"properties":{"jobs":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Jobs"}},"type":"object","title":"Body_workflow_health_sweep_v1_internal_workflows_health_sweep_post"},"BreezewayShiftSyncRequest":{"properties":{"integration_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Integration Id"},"breezeway_integration_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Breezeway Integration Id"}},"type":"object","title":"BreezewayShiftSyncRequest"},"BulkToolPermissionsRequest":{"properties":{"permissions":{"items":{"$ref":"#/components/schemas/ToolPermissionEntry"},"type":"array","title":"Permissions"}},"type":"object","required":["permissions"],"title":"BulkToolPermissionsRequest"},"ChannelCount":{"properties":{"channel":{"type":"string","title":"Channel"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["channel","count"],"title":"ChannelCount"},"ChannelRuns":{"properties":{"channel":{"type":"string","title":"Channel"},"runs":{"type":"integer","title":"Runs"},"negative":{"type":"integer","title":"Negative"}},"type":"object","required":["channel","runs","negative"],"title":"ChannelRuns"},"ChecklistItemResponse":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"is_completed":{"type":"boolean","title":"Is Completed"},"requires_photo":{"type":"boolean","title":"Requires Photo"},"sort_order":{"type":"integer","title":"Sort Order"}},"type":"object","required":["id","title","is_completed","requires_photo","sort_order"],"title":"ChecklistItemResponse"},"ChildControlRequest":{"properties":{"action":{"type":"string","enum":["pause","resume","cancel","retry","reconnect"],"title":"Action"},"turn_id":{"anyOf":[{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"},{"type":"null"}],"title":"Turn Id"},"target_agent_path":{"anyOf":[{"type":"string","maxLength":500,"minLength":1},{"type":"null"}],"title":"Target Agent Path"},"expected_dispatch_generation":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Expected Dispatch Generation"},"include_descendants":{"type":"boolean","title":"Include Descendants","default":false},"idempotency_key":{"anyOf":[{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]+$"},{"type":"null"}],"title":"Idempotency Key"}},"additionalProperties":false,"type":"object","required":["action"],"title":"ChildControlRequest","description":"One bounded human lifecycle action; authority stays in path/query fields."},"ClassifyTaskRequest":{"properties":{"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"rooms":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Rooms","default":[]},"elements":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Elements","default":[]},"tags":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Tags","default":[]},"source_tags":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Source Tags","default":[]},"trace_context":{"additionalProperties":true,"type":"object","title":"Trace Context","default":{}}},"type":"object","required":["title"],"title":"ClassifyTaskRequest"},"CloseOverdueTasksRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"days_overdue":{"type":"integer","title":"Days Overdue","default":30}},"type":"object","required":["workspace_id"],"title":"CloseOverdueTasksRequest"},"CommentRequest":{"properties":{"content":{"type":"string","title":"Content"}},"type":"object","required":["content"],"title":"CommentRequest"},"CommentResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"}},"type":"object","required":["success","message"],"title":"CommentResponse"},"CommsDailyEntry":{"properties":{"day":{"type":"string","title":"Day"},"whatsapp":{"type":"integer","title":"Whatsapp","default":0},"sms":{"type":"integer","title":"Sms","default":0},"email":{"type":"integer","title":"Email","default":0},"airbnb":{"type":"integer","title":"Airbnb","default":0},"booking":{"type":"integer","title":"Booking","default":0},"calls":{"type":"integer","title":"Calls","default":0}},"type":"object","required":["day"],"title":"CommsDailyEntry"},"CompleteRequest":{"properties":{"completion_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completion Notes"}},"type":"object","title":"CompleteRequest"},"CompleteResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"}},"type":"object","required":["success","message"],"title":"CompleteResponse"},"CompleteRunRequest":{"properties":{"status":{"type":"string","title":"Status"},"stats":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Stats"},"error":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Error"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"trigger_run_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger Run Id"}},"type":"object","required":["status"],"title":"CompleteRunRequest"},"CompletionRequest":{"properties":{"workspace_id":{"type":"string","minLength":1,"title":"Workspace Id"},"actor_kind":{"$ref":"#/components/schemas/GatewayActorKind"},"actor_id":{"type":"string","minLength":1,"title":"Actor Id"},"trace_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Trace Id"},"session_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Session Id"},"braintrust_parent":{"anyOf":[{"type":"string","maxLength":4096,"minLength":1},{"type":"null"}],"title":"Braintrust Parent"},"messages":{"items":{"additionalProperties":true,"type":"object"},"type":"array","maxItems":256,"minItems":1,"title":"Messages"},"tools":{"anyOf":[{"items":{"oneOf":[{"$ref":"#/components/schemas/HostedTool"},{"$ref":"#/components/schemas/MCPTool"}],"discriminator":{"propertyName":"type","mapping":{"apply_patch":"#/components/schemas/HostedTool","code_interpreter":"#/components/schemas/HostedTool","computer":"#/components/schemas/HostedTool","computer_use_preview":"#/components/schemas/HostedTool","custom":"#/components/schemas/HostedTool","file_search":"#/components/schemas/HostedTool","function":"#/components/schemas/HostedTool","image_generation":"#/components/schemas/HostedTool","local_shell":"#/components/schemas/HostedTool","mcp":"#/components/schemas/MCPTool","namespace":"#/components/schemas/HostedTool","programmatic_tool_calling":"#/components/schemas/HostedTool","shell":"#/components/schemas/HostedTool","tool_search":"#/components/schemas/HostedTool","web_search":"#/components/schemas/HostedTool","web_search_2025_08_26":"#/components/schemas/HostedTool","web_search_preview":"#/components/schemas/HostedTool","web_search_preview_2025_03_11":"#/components/schemas/HostedTool"}}},"type":"array","maxItems":128},{"type":"null"}],"title":"Tools"},"tool_choice":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Tool Choice"},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls"},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature"},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P"},"max_tokens":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Max Tokens"},"max_completion_tokens":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Max Completion Tokens"},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop"},"n":{"anyOf":[{"type":"integer","maximum":16.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"N"},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"frequency_penalty":{"anyOf":[{"type":"number","maximum":2.0,"minimum":-2.0},{"type":"null"}],"title":"Frequency Penalty"},"presence_penalty":{"anyOf":[{"type":"number","maximum":2.0,"minimum":-2.0},{"type":"null"}],"title":"Presence Penalty"},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs"},"top_logprobs":{"anyOf":[{"type":"integer","maximum":20.0,"minimum":0.0},{"type":"null"}],"title":"Top Logprobs"},"reasoning_effort":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reasoning Effort"},"verbosity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verbosity"},"web_search_options":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Web Search Options"}},"additionalProperties":false,"type":"object","required":["workspace_id","actor_kind","actor_id","messages"],"title":"CompletionRequest","description":"Non-streaming completion request."},"ConnectCalendarRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"oauth_refresh_token":{"type":"string","title":"Oauth Refresh Token"},"platform_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platform Email"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"platform":{"type":"string","title":"Platform","default":"google_calendar"}},"type":"object","required":["workspace_id","oauth_refresh_token"],"title":"ConnectCalendarRequest"},"ConnectEmailRequest":{"properties":{"username":{"type":"string","maxLength":64,"minLength":1,"pattern":"^[a-zA-Z0-9._+-]+$","title":"Username"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"}},"type":"object","required":["username"],"title":"ConnectEmailRequest","description":"Request to connect an email inbox to an agent."},"ConnectRequest":{"properties":{"toolkit":{"type":"string","title":"Toolkit"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},"type":"object","required":["toolkit"],"title":"ConnectRequest"},"CopilotDraftRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"conversation_id":{"type":"string","title":"Conversation Id"},"instruction":{"type":"string","title":"Instruction"},"mode":{"type":"string","enum":["draft","edit","generate"],"title":"Mode","default":"draft"},"current_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Text"},"system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt"},"inbox_version":{"type":"string","const":"v2","title":"Inbox Version","default":"v2"}},"type":"object","required":["workspace_id","conversation_id","instruction"],"title":"CopilotDraftRequest","description":"Request to draft or edit a message using the unified agent runtime."},"CreateAgentMemoryRequest":{"properties":{"workspace_id":{"type":"string","minLength":1,"title":"Workspace Id"},"content":{"type":"string","maxLength":4000,"minLength":1,"title":"Content"},"source":{"type":"string","pattern":"^(MANUAL|LEARNED)$","title":"Source"},"source_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Session Id"},"property_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Property Id"},"actor_kind":{"type":"string","enum":["agent","user"],"title":"Actor Kind","default":"agent"},"actor_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Actor User Id"},"allowed_property_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Allowed Property Ids"}},"type":"object","required":["workspace_id","content","source"],"title":"CreateAgentMemoryRequest","description":"Accepted-memory creation payload."},"CreateAgentRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"user_id":{"type":"string","title":"User Id"},"name":{"type":"string","title":"Name"},"theme_color":{"type":"string","title":"Theme Color"}},"type":"object","required":["workspace_id","user_id","name","theme_color"],"title":"CreateAgentRequest"},"CreateBotRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"meeting_url":{"type":"string","title":"Meeting Url"},"bot_name":{"type":"string","title":"Bot Name","default":"Trellis"},"agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Id"},"wake_words":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Wake Words"},"sleep_words":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Sleep Words"},"tts_voice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tts Voice"},"google_login_group_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Google Login Group Id"},"conversation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"},"reservation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reservation Id"},"ticket_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticket Id"},"join_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Join At"}},"type":"object","required":["workspace_id","meeting_url"],"title":"CreateBotRequest"},"CreateCustomToolRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"name":{"type":"string","maxLength":255,"title":"Name"},"description":{"type":"string","title":"Description"},"url":{"type":"string","title":"Url"},"method":{"type":"string","title":"Method","default":"GET"},"headers":{"additionalProperties":{"type":"string"},"type":"object","title":"Headers","default":{}},"parameters_schema":{"additionalProperties":true,"type":"object","title":"Parameters Schema","default":{}},"auth_type":{"type":"string","title":"Auth Type","default":"NONE"},"auth_config":{"additionalProperties":true,"type":"object","title":"Auth Config","default":{}},"enabled":{"type":"boolean","title":"Enabled","default":true},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},"type":"object","required":["workspace_id","name","description","url"],"title":"CreateCustomToolRequest"},"CreateLabSessionRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"user_id":{"type":"string","title":"User Id"},"model_id":{"type":"string","title":"Model Id","default":"default"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"simulation_context":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Simulation Context"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}},"type":"object","required":["workspace_id","user_id"],"title":"CreateLabSessionRequest"},"CreateLabSessionResponse":{"properties":{"session_id":{"type":"string","title":"Session Id"},"model_id":{"type":"string","title":"Model Id"}},"type":"object","required":["session_id","model_id"],"title":"CreateLabSessionResponse"},"CreateListEntryRequest":{"properties":{"entry":{"type":"string","maxLength":320,"minLength":1,"title":"Entry"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["entry"],"title":"CreateListEntryRequest","description":"Request to add a block/allow list entry."},"CreateMcpServerRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"name":{"type":"string","maxLength":255,"title":"Name"},"config":{"$ref":"#/components/schemas/McpServerConfig"},"enabled":{"type":"boolean","title":"Enabled","default":true}},"type":"object","required":["workspace_id","name","config"],"title":"CreateMcpServerRequest"},"CreateReservationPMSRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"reservation_id":{"type":"string","title":"Reservation Id"},"reservation_data":{"additionalProperties":true,"type":"object","title":"Reservation Data"}},"type":"object","required":["workspace_id","reservation_id","reservation_data"],"title":"CreateReservationPMSRequest"},"CreateRunRequest":{"properties":{"workflow_id":{"type":"string","title":"Workflow Id"},"workspace_id":{"type":"string","title":"Workspace Id"},"version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"trigger_type":{"type":"string","title":"Trigger Type"},"trigger_data":{"additionalProperties":true,"type":"object","title":"Trigger Data","default":{}},"is_dry_run":{"type":"boolean","title":"Is Dry Run","default":false},"triggered_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Triggered By"},"trigger_run_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger Run Id"},"owner_fencing":{"type":"boolean","title":"Owner Fencing","default":false},"env_overrides":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Env Overrides"},"cron_tick":{"anyOf":[{"$ref":"#/components/schemas/CronTickClaim"},{"type":"null"}]}},"type":"object","required":["workflow_id","workspace_id","trigger_type"],"title":"CreateRunRequest"},"CreateScopeRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"scope_type":{"type":"string","pattern":"^(INBOX|VIEW|ROLE|CONTACT|MEMBER|DEPARTMENT)$","title":"Scope Type"},"scope_ref_id":{"type":"string","title":"Scope Ref Id"},"scope_label":{"type":"string","title":"Scope Label"},"autopilot_enabled":{"type":"boolean","title":"Autopilot Enabled","default":false},"auto_send_delay_minutes":{"type":"integer","title":"Auto Send Delay Minutes","default":5},"auto_send_delay_mode":{"type":"string","pattern":"^(fixed|dynamic)$","title":"Auto Send Delay Mode","default":"fixed"},"auto_send_delay_min_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auto Send Delay Min Minutes"},"auto_send_delay_max_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auto Send Delay Max Minutes"},"auto_send_delay_seconds_per_100_chars":{"type":"integer","title":"Auto Send Delay Seconds Per 100 Chars","default":30},"auto_send_delay_length_rules":{"items":{"additionalProperties":{"type":"integer"},"type":"object"},"type":"array","title":"Auto Send Delay Length Rules","default":[]},"auto_send_delay_request_type_minutes":{"additionalProperties":{"type":"integer"},"type":"object","title":"Auto Send Delay Request Type Minutes","default":{}},"message_buffer_seconds":{"type":"integer","title":"Message Buffer Seconds","default":8},"mark_conversation_done_on_autosend":{"type":"boolean","title":"Mark Conversation Done On Autosend","default":true},"disabled_prompt_sections":{"items":{"type":"string"},"type":"array","title":"Disabled Prompt Sections","default":[]},"voice_widget_enabled":{"type":"boolean","title":"Voice Widget Enabled","default":false},"tasks_access":{"type":"boolean","title":"Tasks Access","default":true},"shifts_access":{"type":"boolean","title":"Shifts Access","default":true},"unified_context_enabled":{"type":"boolean","title":"Unified Context Enabled","default":false}},"type":"object","required":["workspace_id","scope_type","scope_ref_id","scope_label"],"title":"CreateScopeRequest"},"CreateSessionRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"user_id":{"type":"string","title":"User Id"},"model_id":{"type":"string","title":"Model Id","default":"default"},"context":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Context"},"is_incognito":{"type":"boolean","title":"Is Incognito","default":false},"contact_type_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Type Id"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"prepared_session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Prepared Session Id"}},"type":"object","required":["workspace_id","user_id"],"title":"CreateSessionRequest","description":"Request to create a new chat session."},"CreateSessionResponse":{"properties":{"session_id":{"type":"string","title":"Session Id"},"model_id":{"type":"string","title":"Model Id"}},"type":"object","required":["session_id","model_id"],"title":"CreateSessionResponse","description":"Response from creating a session."},"CreateSimulationRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"name":{"type":"string","title":"Name"},"agent_id":{"type":"string","title":"Agent Id"},"contact_messages":{"items":{"type":"string"},"type":"array","title":"Contact Messages"},"simulation_context":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Simulation Context"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"ground_truth":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ground Truth"},"validation_criteria":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Validation Criteria"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"execution_key":{"anyOf":[{"type":"string","maxLength":200,"minLength":1,"pattern":"^[A-Za-z0-9._:-]+$"},{"type":"null"}],"title":"Execution Key"}},"type":"object","required":["workspace_id","name","agent_id","contact_messages"],"title":"CreateSimulationRequest","description":"Create a lab_simulation with a hand-scripted multi-turn scenario.\n\nUnlike ``/simulations/from-session`` (which replays messages from a past\nproduction session/conversation), this endpoint accepts the contact\nmessages + context directly. Use it to iterate on regression tests\nwithout needing a real historical conversation."},"CreateSkillFolderRequest":{"properties":{"title":{"type":"string","title":"Title"}},"type":"object","required":["title"],"title":"CreateSkillFolderRequest"},"CreateSkillRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"content":{"type":"string","title":"Content"}},"type":"object","required":["workspace_id","title","content"],"title":"CreateSkillRequest"},"CreateSuiteRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["workspace_id","name"],"title":"CreateSuiteRequest"},"CreateSuiteTestRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"category":{"type":"string","title":"Category"},"test_type":{"type":"string","title":"Test Type"},"name":{"type":"string","title":"Name"},"topic":{"type":"string","title":"Topic","default":""},"sample_message":{"type":"string","title":"Sample Message"},"expected_behaviour":{"type":"string","title":"Expected Behaviour"},"ground_truth":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ground Truth"}},"type":"object","required":["workspace_id","category","test_type","name","sample_message","expected_behaviour"],"title":"CreateSuiteTestRequest"},"CreateTagRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"color":{"type":"string","title":"Color","default":"#6366f1"},"applies_to":{"items":{"type":"string"},"type":"array","title":"Applies To"},"is_urgent_for_ai":{"type":"boolean","title":"Is Urgent For Ai","default":false}},"type":"object","required":["workspace_id","name"],"title":"CreateTagRequest"},"CreateTokenFromReservationRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"reservation_id":{"type":"string","format":"uuid","title":"Reservation Id"},"days_before_checkin":{"type":"integer","maximum":7.0,"minimum":0.0,"title":"Days Before Checkin","default":3},"days_after_checkout":{"type":"integer","maximum":3.0,"minimum":0.0,"title":"Days After Checkout","default":1},"language":{"type":"string","title":"Language","default":"en"}},"type":"object","required":["workspace_id","reservation_id"],"title":"CreateTokenFromReservationRequest","description":"Request model for creating a token from a reservation."},"CreateTokenRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"property_id":{"type":"string","format":"uuid","title":"Property Id"},"reservation_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Reservation Id"},"valid_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Valid From"},"valid_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Valid Until"},"language":{"type":"string","title":"Language","default":"en"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["workspace_id","property_id"],"title":"CreateTokenRequest","description":"Request model for creating a manual access token."},"CreateVersionRequest":{"properties":{"steps":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Steps"},"notes":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Notes"},"change_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Change Summary"},"source_draft":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Source Draft"},"activation_override":{"anyOf":[{"$ref":"#/components/schemas/ActivationOverride"},{"type":"null"}]}},"type":"object","required":["steps"],"title":"CreateVersionRequest"},"CreateWorkflowFixtureRequest":{"properties":{"name":{"type":"string","title":"Name"},"trigger_data":{"additionalProperties":true,"type":"object","title":"Trigger Data","default":{}},"is_default":{"type":"boolean","title":"Is Default","default":false},"created_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By"}},"type":"object","required":["name"],"title":"CreateWorkflowFixtureRequest"},"CreateWorkflowRequest":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"trigger_type":{"type":"string","title":"Trigger Type"},"trigger_config":{"additionalProperties":true,"type":"object","title":"Trigger Config","default":{}},"steps":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Steps","default":[]},"status":{"type":"string","title":"Status","default":"DRAFT"},"cooldown_minutes":{"type":"integer","title":"Cooldown Minutes","default":0},"max_triggers_per_day":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Triggers Per Day"},"source":{"type":"string","title":"Source","default":"USER"},"created_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By"},"agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Id"},"agent_permissions":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Agent Permissions"},"folder_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Folder Id"},"activation_override":{"anyOf":[{"$ref":"#/components/schemas/ActivationOverride"},{"type":"null"}]}},"type":"object","required":["name","trigger_type"],"title":"CreateWorkflowRequest"},"CronTickClaim":{"properties":{"expected_next_run_at":{"type":"string","title":"Expected Next Run At"}},"type":"object","required":["expected_next_run_at"],"title":"CronTickClaim","description":"One persisted CRON occurrence claimed with run creation."},"DBEventPayload":{"properties":{"type":{"$ref":"#/components/schemas/DBEventType","description":"INSERT, UPDATE, or DELETE"},"table":{"type":"string","title":"Table","description":"Table name that changed"},"schema":{"type":"string","title":"Schema","description":"Schema name","default":"public"},"record":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Record","description":"New/current record"},"old_record":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Old Record","description":"Previous record (for UPDATE/DELETE)"},"workspace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Id","description":"Workspace ID if available"},"source_event_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Event Id","description":"Stable durable source marker used for workflow delivery idempotency"}},"type":"object","required":["type","table"],"title":"DBEventPayload","description":"Payload from Supabase database triggers.\n\nCalled by pg_notify or HTTP webhooks when DB changes occur."},"DBEventResponse":{"properties":{"status":{"type":"string","title":"Status","default":"accepted"},"event_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Id","description":"Event ID for tracking"},"actions_triggered":{"items":{"type":"string"},"type":"array","title":"Actions Triggered","description":"Side-effects triggered"}},"type":"object","title":"DBEventResponse","description":"Response to internal DB event."},"DBEventType":{"type":"string","enum":["INSERT","UPDATE","DELETE"],"title":"DBEventType","description":"Database event types from Supabase triggers."},"DeleteSessionFileRequest":{"properties":{"workspace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Id"}},"type":"object","title":"DeleteSessionFileRequest","description":"Legacy JSON body accepted by the session-file delete route."},"DependencyHealth":{"properties":{"name":{"type":"string","title":"Name"},"status":{"$ref":"#/components/schemas/ServiceHealth"},"latency_ms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latency Ms"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["name","status"],"title":"DependencyHealth","description":"Health status of a dependency."},"DisconnectCalendarRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"connection_id":{"type":"string","title":"Connection Id"}},"type":"object","required":["workspace_id","connection_id"],"title":"DisconnectCalendarRequest"},"DoorOpenResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"}},"type":"object","required":["success","message"],"title":"DoorOpenResponse","description":"Response model for door open action."},"DrillDownResponse":{"properties":{"items":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"DrillDownResponse"},"DryRunRequest":{"properties":{"trigger_data":{"additionalProperties":true,"type":"object","title":"Trigger Data","default":{}},"fixture_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Fixture Id"}},"type":"object","title":"DryRunRequest"},"DurableSessionAccessRequest":{"properties":{"turn_id":{"type":"string","format":"uuid","title":"Turn Id"},"workspace_id":{"anyOf":[{"type":"string","maxLength":512,"minLength":1},{"type":"null"}],"title":"Workspace Id"},"effective_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Effective User Id"}},"additionalProperties":false,"type":"object","required":["turn_id"],"title":"DurableSessionAccessRequest","description":"Authenticated user request for access to the API-owned Trigger Session."},"DurableTriggerStartupTelemetry":{"properties":{"process_boot_id":{"type":"string","format":"uuid","title":"Process Boot Id"},"execution_ordinal":{"type":"integer","maximum":1000000.0,"minimum":1.0,"title":"Execution Ordinal"},"reused_process":{"type":"boolean","title":"Reused Process"},"continuation":{"type":"boolean","title":"Continuation"},"run_created_at_ms":{"type":"integer","maximum":4102444800000.0,"minimum":0.0,"title":"Run Created At Ms"},"run_started_at_ms":{"type":"integer","maximum":4102444800000.0,"minimum":0.0,"title":"Run Started At Ms"},"handler_entered_at_ms":{"type":"integer","maximum":4102444800000.0,"minimum":0.0,"title":"Handler Entered At Ms"},"turn_received_at_ms":{"type":"integer","maximum":4102444800000.0,"minimum":0.0,"title":"Turn Received At Ms"},"process_age_at_turn_ms":{"type":"integer","maximum":31536000000.0,"minimum":0.0,"title":"Process Age At Turn Ms"}},"additionalProperties":false,"type":"object","required":["process_boot_id","execution_ordinal","reused_process","continuation","run_created_at_ms","run_started_at_ms","handler_entered_at_ms","turn_received_at_ms","process_age_at_turn_ms"],"title":"DurableTriggerStartupTelemetry"},"ElevenLabsChatCompletionRequest":{"properties":{"model":{"type":"string","const":"gpt-5.5","title":"Model"},"messages":{"items":{"additionalProperties":true,"type":"object"},"type":"array","maxItems":256,"minItems":1,"title":"Messages"},"stream":{"type":"boolean","title":"Stream","default":false},"tools":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array","maxItems":128},{"type":"null"}],"title":"Tools"},"tool_choice":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Tool Choice"},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls"},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature"},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P"},"max_tokens":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Max Tokens"},"max_completion_tokens":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Max Completion Tokens"},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop"},"n":{"anyOf":[{"type":"integer","maximum":16.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"N"},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"frequency_penalty":{"anyOf":[{"type":"number","maximum":2.0,"minimum":-2.0},{"type":"null"}],"title":"Frequency Penalty"},"presence_penalty":{"anyOf":[{"type":"number","maximum":2.0,"minimum":-2.0},{"type":"null"}],"title":"Presence Penalty"},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs"},"top_logprobs":{"anyOf":[{"type":"integer","maximum":20.0,"minimum":0.0},{"type":"null"}],"title":"Top Logprobs"},"reasoning_effort":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reasoning Effort"},"response_format":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Response Format"},"stream_options":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Stream Options"},"user":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"User"}},"additionalProperties":false,"type":"object","required":["model","messages"],"title":"ElevenLabsChatCompletionRequest","description":"Bounded subset of the OpenAI Chat Completions request contract."},"EmbeddingRequest":{"properties":{"workspace_id":{"type":"string","minLength":1,"title":"Workspace Id"},"actor_kind":{"$ref":"#/components/schemas/GatewayActorKind"},"actor_id":{"type":"string","minLength":1,"title":"Actor Id"},"trace_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Trace Id"},"session_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Session Id"},"braintrust_parent":{"anyOf":[{"type":"string","maxLength":4096,"minLength":1},{"type":"null"}],"title":"Braintrust Parent"},"input":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"}],"title":"Input"},"dimensions":{"anyOf":[{"type":"integer","enum":[768,3072]},{"type":"null"}],"title":"Dimensions"},"encoding_format":{"anyOf":[{"type":"string","const":"float"},{"type":"null"}],"title":"Encoding Format"},"input_type":{"anyOf":[{"type":"string","enum":["query","document"]},{"type":"null"}],"title":"Input Type"}},"additionalProperties":false,"type":"object","required":["workspace_id","actor_kind","actor_id","input"],"title":"EmbeddingRequest","description":"Provider-neutral, bounded embedding request."},"EscalateRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"agent_id":{"type":"string","title":"Agent Id"},"question_to_manager":{"type":"string","title":"Question To Manager"},"request_type":{"type":"string","title":"Request Type"},"escalation_reason":{"type":"string","title":"Escalation Reason"},"teaching_hint":{"type":"string","title":"Teaching Hint"},"draft_response":{"type":"string","title":"Draft Response"},"proposed_reply_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proposed Reply Id"},"draft_task_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Draft Task Id"},"inbox_version":{"type":"string","const":"v2","title":"Inbox Version","default":"v2"},"conversation_v2_id":{"type":"string","title":"Conversation V2 Id"},"trigger_event_id":{"type":"string","title":"Trigger Event Id"},"wait_for_side_effects":{"type":"boolean","title":"Wait For Side Effects","default":false}},"type":"object","required":["workspace_id","agent_id","question_to_manager","request_type","escalation_reason","teaching_hint","draft_response","conversation_v2_id","trigger_event_id"],"title":"EscalateRequest"},"EscalationBreakdownItem":{"properties":{"type":{"type":"string","title":"Type"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["type","count"],"title":"EscalationBreakdownItem"},"ExecuteConversationFollowUpRequest":{"properties":{"workspace_id":{"type":"string","minLength":1,"title":"Workspace Id"},"followup_id":{"type":"string","format":"uuid","title":"Followup Id"},"occurrence_id":{"type":"string","format":"uuid","title":"Occurrence Id"},"conversation_id":{"type":"string","format":"uuid","title":"Conversation Id"},"instruction":{"type":"string","maxLength":10000,"minLength":1,"title":"Instruction"},"operator_created":{"type":"boolean","title":"Operator Created","default":false},"dry_run":{"type":"boolean","title":"Dry Run","default":false}},"type":"object","required":["workspace_id","followup_id","occurrence_id","conversation_id","instruction"],"title":"ExecuteConversationFollowUpRequest"},"ExecuteConversationFollowUpResponse":{"properties":{"outcome":{"type":"string","title":"Outcome"},"run_id":{"type":"string","format":"uuid","title":"Run Id"},"proposed_reply_id":{"type":"string","format":"uuid","title":"Proposed Reply Id"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},"type":"object","required":["outcome","run_id","proposed_reply_id","status"],"title":"ExecuteConversationFollowUpResponse"},"ExecuteImportRequest":{"properties":{"source_type":{"type":"string","enum":["GOOGLE_SHEETS","GOOGLE_DRIVE","FILE_UPLOAD","URL"],"title":"Source Type"},"destination_type":{"type":"string","enum":["PROPERTY","PIPELINE_LEAD"],"title":"Destination Type"},"staged_import_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Staged Import Id"},"spreadsheet_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Spreadsheet Id"},"spreadsheet_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Spreadsheet Name"},"sheet_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sheet Name"},"sheet_gid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sheet Gid"},"file_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Id"},"file_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Name"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"storage_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Storage Path"},"structure_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Structure Type"},"field_mapping":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Field Mapping"},"property_matches":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Property Matches"},"identity_column":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Identity Column"},"pipeline_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pipeline Id"},"pipeline_stage_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pipeline Stage Id"}},"type":"object","required":["source_type","destination_type"],"title":"ExecuteImportRequest","description":"Request to execute an import operation."},"ExecutePlanStepTriggerRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"trigger_data":{"additionalProperties":true,"type":"object","title":"Trigger Data","default":{}},"source_event_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Event Id"}},"type":"object","required":["workspace_id"],"title":"ExecutePlanStepTriggerRequest"},"ExecuteSessionFollowUpRequest":{"properties":{"workspace_id":{"type":"string","minLength":1,"title":"Workspace Id"},"followup_id":{"type":"string","format":"uuid","title":"Followup Id"},"occurrence_id":{"type":"string","format":"uuid","title":"Occurrence Id"},"session_id":{"type":"string","format":"uuid","title":"Session Id"},"instruction":{"type":"string","maxLength":10000,"minLength":1,"title":"Instruction"},"operator_created":{"type":"boolean","title":"Operator Created","default":false},"dry_run":{"type":"boolean","title":"Dry Run","default":false}},"type":"object","required":["workspace_id","followup_id","occurrence_id","session_id","instruction"],"title":"ExecuteSessionFollowUpRequest"},"ExecuteSessionFollowUpResponse":{"properties":{"outcome":{"type":"string","title":"Outcome"},"assistant_message_id":{"type":"string","format":"uuid","title":"Assistant Message Id"},"durable_turn_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Durable Turn Id"}},"type":"object","required":["outcome","assistant_message_id"],"title":"ExecuteSessionFollowUpResponse"},"ExecuteStepRequest":{"properties":{"step_id":{"type":"string","title":"Step Id"},"step_type":{"type":"string","title":"Step Type"},"step_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Step Name"},"step_config":{"additionalProperties":true,"type":"object","title":"Step Config"},"inputs":{"additionalProperties":true,"type":"object","title":"Inputs","default":{}},"env":{"additionalProperties":true,"type":"object","title":"Env","default":{}},"parent_step_run_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Step Run Id"},"loop_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Loop Index"},"idempotency_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency Key"},"attempt":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Attempt"},"max_attempts":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Attempts"},"context_before":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Context Before"},"output_keys":{"items":{"type":"string"},"type":"array","title":"Output Keys"},"trigger_run_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger Run Id"}},"type":"object","required":["step_id","step_type","step_config"],"title":"ExecuteStepRequest"},"FinalizeAgentRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"agent_id":{"type":"string","title":"Agent Id"},"instructions":{"type":"string","title":"Instructions"},"pulse_enabled":{"type":"boolean","title":"Pulse Enabled","default":false},"pulse_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pulse Instructions"},"pulse_interval_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pulse Interval Minutes"},"pulse_timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pulse Timezone"},"recommended_skills":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Recommended Skills"}},"type":"object","required":["workspace_id","agent_id","instructions"],"title":"FinalizeAgentRequest"},"FromMarketplaceRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"marketplace_id":{"type":"string","title":"Marketplace Id"}},"type":"object","required":["workspace_id","marketplace_id"],"title":"FromMarketplaceRequest"},"FromSessionRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"source":{"type":"string","title":"Source"},"source_id":{"type":"string","title":"Source Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"ground_truth":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ground Truth"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},"type":"object","required":["workspace_id","source","source_id","name"],"title":"FromSessionRequest","description":"Create a lab_simulation row from a past production session or Inbox v2 thread.\n\nTwo supported sources:\n  - ``chat``: an ai_chat_sessions row; user messages pulled from\n    ai_chat_messages.\n  - ``inbox_v2``: a conversations_v2 row; inbound messages pulled from\n    conversation_timeline_events_v2.\n\nCreates a new lab_session as the parent and a lab_simulation under it.\nPopulates property_id, contact_id, reservation_id onto\nsimulation_context when available so tools see the real context."},"FrontendHistoryBlock":{"properties":{"type":{"type":"string","title":"Type","description":"Frontend block type, e.g. tool_call."},"tool_name":{"type":"string","title":"Tool Name","description":"Tool slug/name to replay."},"args":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Args","description":"Tool arguments captured by the UI message part."},"result":{"anyOf":[{},{"type":"null"}],"title":"Result","description":"Completed tool result or error text captured by the UI."},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","description":"Terminal tool status, e.g. completed or error."}},"additionalProperties":false,"type":"object","required":["type","tool_name"],"title":"FrontendHistoryBlock","description":"Replayable frontend-provided assistant tool block."},"FrontendHistoryMessage":{"properties":{"role":{"type":"string","enum":["user","assistant","system"],"title":"Role","description":"Message role from the UI message history. Completed assistant tool blocks may be included for faithful replay; unsafe shapes fall back to persisted DB history."},"content":{"type":"string","title":"Content","description":"Plain text content extracted by the web client. If omitted or empty, the server falls back to the persisted session history."},"blocks":{"anyOf":[{"items":{"$ref":"#/components/schemas/FrontendHistoryBlock"},"type":"array"},{"type":"null"}],"title":"Blocks","description":"Optional completed assistant tool blocks safe to replay."}},"additionalProperties":false,"type":"object","required":["role","content"],"title":"FrontendHistoryMessage","description":"Safe frontend-provided history for a background chat run."},"GatewayActorKind":{"type":"string","enum":["user","agent","system","automation","public_widget","trigger_job","maintenance"],"title":"GatewayActorKind"},"GenerateRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"conversation_v2_id":{"type":"string","title":"Conversation V2 Id"},"trigger_event_id":{"type":"string","title":"Trigger Event Id"},"agent_id":{"type":"string","title":"Agent Id"},"scope_config":{"additionalProperties":true,"type":"object","title":"Scope Config"},"inbox_version":{"type":"string","const":"v2","title":"Inbox Version","default":"v2"},"trigger_event_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Trigger Event Ids"},"responseflow_run_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Responseflow Run Id"},"force_draft":{"type":"boolean","title":"Force Draft","default":false},"property_selection_draft_only":{"type":"boolean","title":"Property Selection Draft Only","default":false},"manual_draft_text":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Manual Draft Text"},"manual_draft_instruction":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Manual Draft Instruction"},"dry_run":{"type":"boolean","title":"Dry Run","default":false},"responseflow_v3_shadow":{"type":"boolean","title":"Responseflow V3 Shadow","default":false},"responseflow_v3_runtime_version":{"anyOf":[{"type":"string","maxLength":80,"minLength":1},{"type":"null"}],"title":"Responseflow V3 Runtime Version"},"responseflow_v3_chain_chronology_v1":{"type":"boolean","title":"Responseflow V3 Chain Chronology V1","default":false}},"type":"object","required":["workspace_id","conversation_v2_id","trigger_event_id","agent_id","scope_config"],"title":"GenerateRequest"},"GenerateResponse":{"properties":{"decision":{"anyOf":[{"$ref":"#/components/schemas/ResponseFlowDecisionPayload"},{"type":"null"}],"description":"Authoritative business decision; null for operational failures."},"responseflow_v3_plan":{"anyOf":[{"$ref":"#/components/schemas/ResponseFlowV3Plan"},{"type":"null"}],"description":"Authoritative ResponseFlow V3 turn plan when the V3 runtime ran."},"responseflow_v3_chain_commit":{"anyOf":[{"$ref":"#/components/schemas/ResponseFlowV3ChainCommit"},{"type":"null"}],"description":"Response-chain advance persisted only after app finalization."},"responseflow_v3_provider_content_filter_fallback_success":{"anyOf":[{"$ref":"#/components/schemas/ResponseFlowProviderFallbackRecoveryPayload"},{"type":"null"}],"description":"Typed provider-neutral recovery marker for a V3 plan that does not advance an OpenAI response chain."},"responseflow_v3_provider_refusal":{"anyOf":[{"$ref":"#/components/schemas/ResponseFlowProviderRefusalPayload"},{"type":"null"}],"description":"Typed provider content-filter evidence for a recovered terminal manager escalation."},"trace":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Trace"},"context":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Context"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error","description":"Internal operational diagnostic; never a business escalation."},"error_details":{"anyOf":[{"$ref":"#/components/schemas/ResponseFlowErrorDetails"},{"type":"null"}]},"processing_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Processing Ms"},"trigger_event_id":{"type":"string","title":"Trigger Event Id"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"user_message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Message Id"},"assistant_message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assistant Message Id"},"runtime_source":{"type":"string","title":"Runtime Source","default":"responseflow-v3"},"trace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trace Id"}},"type":"object","required":["trace","context","processing_ms","trigger_event_id"],"title":"GenerateResponse"},"GenerateReviewReplyRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"review_id":{"type":"string","title":"Review Id"},"agent_id":{"type":"string","title":"Agent Id"}},"type":"object","required":["workspace_id","review_id","agent_id"],"title":"GenerateReviewReplyRequest"},"GenerateReviewReplyResponse":{"properties":{"reply_text":{"type":"string","title":"Reply Text"},"trace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trace Id"},"agent_id":{"type":"string","title":"Agent Id"}},"type":"object","required":["reply_text","agent_id"],"title":"GenerateReviewReplyResponse"},"GenerateTestRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"description":{"type":"string","title":"Description"}},"type":"object","required":["workspace_id","description"],"title":"GenerateTestRequest"},"GeneratedRepoPage":{"properties":{"title":{"type":"string","maxLength":240,"minLength":1,"title":"Title"},"slug":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","title":"Slug"},"content":{"type":"string","minLength":1,"title":"Content"},"content_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$","title":"Content Sha256"}},"additionalProperties":false,"type":"object","required":["title","slug","content","content_sha256"],"title":"GeneratedRepoPage"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthResponse":{"properties":{"status":{"$ref":"#/components/schemas/ServiceHealth","description":"Overall health status"},"version":{"type":"string","title":"Version","description":"API version"},"release_git_sha":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Git Sha","description":"Exact source commit baked into this deployment"},"environment":{"type":"string","title":"Environment","description":"Environment name"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"dependencies":{"items":{"$ref":"#/components/schemas/DependencyHealth"},"type":"array","title":"Dependencies"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","description":"Human-readable status detail"}},"type":"object","required":["status","version","environment"],"title":"HealthResponse","description":"Health check response."},"HostedTool":{"properties":{"type":{"type":"string","enum":["function","file_search","computer","computer_use_preview","web_search","web_search_2025_08_26","code_interpreter","programmatic_tool_calling","image_generation","local_shell","shell","custom","namespace","tool_search","web_search_preview","web_search_preview_2025_03_11","apply_patch"],"title":"Type"}},"additionalProperties":true,"type":"object","required":["type"],"title":"HostedTool"},"HttpInteraction":{"properties":{"continuation_id":{"type":"string","title":"Continuation Id"},"status":{"type":"string","title":"Status"},"request":{"additionalProperties":true,"type":"object","title":"Request"},"response":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Response"},"resume_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resume Status"}},"type":"object","required":["continuation_id","status","request"],"title":"HttpInteraction","description":"Typed durable interaction exposed to an authenticated HTTP caller."},"ImageRequest":{"properties":{"workspace_id":{"type":"string","minLength":1,"title":"Workspace Id"},"actor_kind":{"$ref":"#/components/schemas/GatewayActorKind"},"actor_id":{"type":"string","minLength":1,"title":"Actor Id"},"trace_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Trace Id"},"session_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Session Id"},"braintrust_parent":{"anyOf":[{"type":"string","maxLength":4096,"minLength":1},{"type":"null"}],"title":"Braintrust Parent"},"prompt":{"type":"string","maxLength":16384,"minLength":1,"title":"Prompt"},"aspect_ratio":{"type":"string","enum":["1:1","2:3","3:2","3:4","4:3","4:5","5:4","9:16","16:9","21:9","1:4","4:1","1:8","8:1"],"title":"Aspect Ratio","default":"1:1"},"resolution":{"type":"string","enum":["512","1K","2K","4K"],"title":"Resolution","default":"1K"}},"additionalProperties":false,"type":"object","required":["workspace_id","actor_kind","actor_id","prompt"],"title":"ImageRequest","description":"Bounded image generation request with server-owned routing."},"IndexingJobRequest":{"properties":{"version":{"type":"integer","const":1,"title":"Version"},"target":{"type":"string","const":"property","title":"Target"},"operation":{"type":"string","enum":["upsert","delete"],"title":"Operation"},"workspace_id":{"type":"string","minLength":1,"title":"Workspace Id"},"entity_id":{"type":"string","minLength":1,"title":"Entity Id"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"source":{"type":"string","enum":["postgres_outbox","pgmq_legacy"],"title":"Source"},"source_message_id":{"type":"string","pattern":"^\\d+$","title":"Source Message Id"}},"additionalProperties":false,"type":"object","required":["version","target","operation","workspace_id","entity_id","source","source_message_id"],"title":"IndexingJobRequest"},"InitialContextWidget":{"properties":{"type":{"type":"string","enum":["task","message","escalation"],"title":"Type"},"id":{"type":"string","title":"Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"conversation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"}},"additionalProperties":false,"type":"object","required":["type","id"],"title":"InitialContextWidget","description":"Clickable context card shown before the first operator reply."},"InquiryActionRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"reservation_id":{"type":"string","title":"Reservation Id"},"decision":{"type":"string","title":"Decision"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["workspace_id","reservation_id","decision"],"title":"InquiryActionRequest"},"InsightsResponse":{"properties":{"messaging":{"anyOf":[{"$ref":"#/components/schemas/MessagingInsights"},{"type":"null"}]}},"type":"object","title":"InsightsResponse"},"IntentRuns":{"properties":{"intent":{"type":"string","title":"Intent"},"runs":{"type":"integer","title":"Runs"},"negative":{"type":"integer","title":"Negative"}},"type":"object","required":["intent","runs","negative"],"title":"IntentRuns"},"InvalidateMcpRuntimeCacheRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"}},"type":"object","required":["workspace_id"],"title":"InvalidateMcpRuntimeCacheRequest"},"InvokeRequest":{"properties":{"message":{"type":"string","maxLength":65536,"title":"Message"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"request_id":{"anyOf":[{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$"},{"type":"null"}],"title":"Request Id"},"integration":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Integration"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"safety_profile":{"anyOf":[{"type":"string","const":"read_properties_only"},{"type":"null"}],"title":"Safety Profile"}},"additionalProperties":false,"type":"object","required":["message"],"title":"InvokeRequest","description":"One HTTP turn; workspace identity always comes from the API key."},"InvokeResponse":{"properties":{"response":{"type":"string","title":"Response"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"timed_out":{"type":"boolean","title":"Timed Out","default":false},"status":{"type":"string","title":"Status","default":"completed"},"run_status":{"type":"string","title":"Run Status","default":"completed"},"request_id":{"type":"string","title":"Request Id","default":""},"run_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Run Id"},"trace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trace Id"},"runtime_owner":{"type":"string","title":"Runtime Owner","default":"legacy"},"next_action":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Action"},"receipt_summary":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Receipt Summary"},"interaction":{"anyOf":[{"$ref":"#/components/schemas/HttpInteraction"},{"type":"null"}]}},"type":"object","required":["response"],"title":"InvokeResponse","description":"Backward-compatible response with additive durable correlation."},"KbSkillsResponse":{"properties":{"totalDocs":{"type":"integer","title":"Totaldocs"},"activatedDocs":{"type":"integer","title":"Activateddocs"},"totalSkills":{"type":"integer","title":"Totalskills"},"topSkills":{"items":{"$ref":"#/components/schemas/TopSkillItem"},"type":"array","title":"Topskills"}},"type":"object","required":["totalDocs","activatedDocs","totalSkills","topSkills"],"title":"KbSkillsResponse"},"LangSmithAlertWebhookResponse":{"properties":{"ok":{"type":"boolean","title":"Ok"},"notified":{"type":"boolean","title":"Notified"}},"type":"object","required":["ok","notified"],"title":"LangSmithAlertWebhookResponse"},"LangSmithEngineWebhookResponse":{"properties":{"ok":{"type":"boolean","title":"Ok"},"project_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Name"},"event_id":{"type":"string","title":"Event Id"},"issue_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Issue Id"},"duplicate":{"type":"boolean","title":"Duplicate"},"notified":{"type":"boolean","title":"Notified"},"quality_event_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quality Event Id"},"status":{"type":"string","title":"Status"}},"type":"object","required":["ok","event_id","duplicate","notified","status"],"title":"LangSmithEngineWebhookResponse"},"LangSmithQualityWebhookResponse":{"properties":{"ok":{"type":"boolean","title":"Ok"},"project_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Name"},"processed":{"type":"integer","title":"Processed"},"events":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Events"}},"type":"object","required":["ok","processed","events"],"title":"LangSmithQualityWebhookResponse"},"MCPTool":{"properties":{"type":{"type":"string","const":"mcp","title":"Type"},"connector_id":{"type":"string","minLength":1,"title":"Connector Id"}},"additionalProperties":true,"type":"object","required":["type","connector_id"],"title":"MCPTool"},"ManualRunRequest":{"properties":{"trigger_data":{"additionalProperties":true,"type":"object","title":"Trigger Data","default":{}},"triggered_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Triggered By"}},"type":"object","title":"ManualRunRequest"},"McpServerConfig":{"properties":{"url":{"type":"string","title":"Url"},"transport":{"type":"string","title":"Transport","default":"streamable-http"},"headers":{"additionalProperties":{"type":"string"},"type":"object","title":"Headers","default":{}}},"type":"object","required":["url"],"title":"McpServerConfig"},"MenuAudioRequest":{"properties":{"text":{"type":"string","maxLength":1000,"minLength":1,"title":"Text"},"voice":{"type":"string","maxLength":40,"minLength":2,"title":"Voice","default":"coral"},"language":{"anyOf":[{"type":"string","maxLength":16,"minLength":2},{"type":"null"}],"title":"Language"}},"type":"object","required":["text"],"title":"MenuAudioRequest"},"MessagesByChannel":{"properties":{"WhatsApp":{"type":"integer","title":"Whatsapp","default":0},"SMS":{"type":"integer","title":"Sms","default":0},"Email":{"type":"integer","title":"Email","default":0},"Voice":{"type":"integer","title":"Voice","default":0},"Airbnb":{"type":"integer","title":"Airbnb","default":0},"Booking":{"type":"integer","title":"Booking","default":0}},"type":"object","title":"MessagesByChannel"},"MessagingInsights":{"properties":{"response_time":{"$ref":"#/components/schemas/ResponseTimeMetrics"},"response_time_distribution":{"items":{"$ref":"#/components/schemas/ResponseTimeBucket"},"type":"array","title":"Response Time Distribution"},"messages_by_channel":{"items":{"$ref":"#/components/schemas/ChannelCount"},"type":"array","title":"Messages By Channel"},"automation":{"$ref":"#/components/schemas/AutomationMetrics"},"total_inbound":{"type":"integer","title":"Total Inbound","default":0},"total_outbound":{"type":"integer","title":"Total Outbound","default":0}},"type":"object","required":["response_time","response_time_distribution","messages_by_channel","automation"],"title":"MessagingInsights"},"MetricsResponse":{"properties":{"summary":{"$ref":"#/components/schemas/MetricsSummary"},"time_series":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Time Series"},"by_model":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"By Model"},"by_trace_group":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"By Trace Group"},"top_tools":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Top Tools"}},"type":"object","required":["summary","time_series","by_model","by_trace_group","top_tools"],"title":"MetricsResponse"},"MetricsSummary":{"properties":{"cost_currency":{"type":"string","const":"USD","title":"Cost Currency","default":"USD"},"cost_scale":{"type":"integer","const":6,"title":"Cost Scale","default":6},"total_requests":{"type":"integer","title":"Total Requests","default":0},"total_errors":{"type":"integer","title":"Total Errors","default":0},"error_rate":{"type":"number","title":"Error Rate","default":0},"total_cost":{"type":"number","title":"Total Cost","default":0},"total_cost_microusd":{"type":"integer","title":"Total Cost Microusd","default":0},"total_input_tokens":{"type":"integer","title":"Total Input Tokens","default":0},"total_output_tokens":{"type":"integer","title":"Total Output Tokens","default":0},"total_tokens":{"type":"integer","title":"Total Tokens","default":0},"total_duration_ms":{"type":"integer","title":"Total Duration Ms","default":0},"duration_count":{"type":"integer","title":"Duration Count","default":0},"avg_duration_ms":{"type":"number","title":"Avg Duration Ms","default":0},"p50_duration_ms":{"type":"number","title":"P50 Duration Ms","default":0},"p95_duration_ms":{"type":"number","title":"P95 Duration Ms","default":0},"p99_duration_ms":{"type":"number","title":"P99 Duration Ms","default":0},"attribution":{"$ref":"#/components/schemas/UsageAttribution"}},"type":"object","required":["attribution"],"title":"MetricsSummary"},"ModelInfo":{"properties":{"id":{"type":"string","title":"Id"},"display_name":{"type":"string","title":"Display Name"},"description":{"type":"string","title":"Description"},"is_default":{"type":"boolean","title":"Is Default"},"provider":{"type":"string","title":"Provider"},"provider_model":{"type":"string","title":"Provider Model"},"release_stage":{"type":"string","title":"Release Stage"},"reasoning_control":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reasoning Control"},"reasoning_effort":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reasoning Effort"},"reasoning_efforts":{"items":{"type":"string"},"type":"array","title":"Reasoning Efforts"},"thinking_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thinking Level"},"thinking_levels":{"items":{"type":"string"},"type":"array","title":"Thinking Levels"},"thinking_budget":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thinking Budget"},"context_window":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Context Window"},"input_window":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Input Window"},"max_output_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Output Tokens"},"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier"}},"type":"object","required":["id","display_name","description","is_default","provider","provider_model","release_stage"],"title":"ModelInfo","description":"Model information."},"NotionWebhookResponse":{"properties":{"status":{"type":"string","title":"Status","description":"Always 'accepted' for webhooks","default":"accepted"},"webhook_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Id","description":"ID for tracking"},"verification_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verification Token","description":"One-time Notion webhook verification token for setup challenges"}},"type":"object","title":"NotionWebhookResponse","description":"Webhook response with Notion's one-time setup challenge when present."},"OAuthExchangeRequest":{"properties":{"code":{"type":"string","title":"Code"},"redirect_uri":{"type":"string","title":"Redirect Uri"}},"type":"object","required":["code","redirect_uri"],"title":"OAuthExchangeRequest","description":"Request to exchange an OAuth authorization code for tokens."},"OverviewResponse":{"properties":{"activeUsers":{"type":"integer","title":"Activeusers"},"activeAgents":{"type":"integer","title":"Activeagents"},"presentShifts":{"type":"integer","title":"Presentshifts"},"messagesSent":{"type":"integer","title":"Messagessent"},"messagesByChannel":{"$ref":"#/components/schemas/MessagesByChannel"},"callsOnPlatform":{"type":"integer","title":"Callsonplatform"},"callsAiPct":{"type":"integer","title":"Callsaipct"},"commsDaily":{"items":{"$ref":"#/components/schemas/CommsDailyEntry"},"type":"array","title":"Commsdaily"}},"type":"object","required":["activeUsers","activeAgents","presentShifts","messagesSent","messagesByChannel","callsOnPlatform","callsAiPct","commsDaily"],"title":"OverviewResponse"},"OwnerReplyReviewActionRequest":{"properties":{"workspace_id":{"type":"string","maxLength":200,"minLength":1,"title":"Workspace Id"},"workflow_id":{"type":"string","minLength":1,"title":"Workflow Id"},"run_id":{"type":"string","minLength":1,"title":"Run Id"},"step_id":{"type":"string","maxLength":200,"minLength":1,"title":"Step Id"},"step_run_id":{"type":"string","minLength":1,"title":"Step Run Id"},"effect_key":{"type":"string","pattern":"^[a-f0-9]{64}$","title":"Effect Key"},"dry_run":{"type":"boolean","title":"Dry Run"},"channel_id":{"type":"string","maxLength":100,"minLength":1,"title":"Channel Id"},"conversation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"},"trigger_event_id":{"type":"string","minLength":1,"title":"Trigger Event Id"},"agent_id":{"type":"string","minLength":1,"title":"Agent Id"},"proposed_message":{"anyOf":[{"type":"string","maxLength":2600},{"type":"null"}],"title":"Proposed Message"},"idempotency_key":{"type":"string","maxLength":256,"minLength":1,"title":"Idempotency Key"}},"additionalProperties":false,"type":"object","required":["workspace_id","workflow_id","run_id","step_id","step_run_id","effect_key","dry_run","channel_id","trigger_event_id","agent_id","idempotency_key"],"title":"OwnerReplyReviewActionRequest"},"OwnerReplyReviewActionResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true},"dry_run":{"type":"boolean","title":"Dry Run"},"skipped":{"type":"boolean","title":"Skipped","default":false},"duplicate":{"type":"boolean","title":"Duplicate","default":false},"reply_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reply Id"},"channel_id":{"type":"string","title":"Channel Id"},"message_ts":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Ts"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"additionalProperties":false,"type":"object","required":["dry_run","channel_id"],"title":"OwnerReplyReviewActionResponse"},"PeopleResponse":{"properties":{"users":{"items":{"$ref":"#/components/schemas/UserRow"},"type":"array","title":"Users"},"agents":{"items":{"$ref":"#/components/schemas/AgentRow"},"type":"array","title":"Agents"}},"type":"object","required":["users","agents"],"title":"PeopleResponse"},"PhotoCheckRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"task_id":{"type":"string","format":"uuid","title":"Task Id"},"checklist_item_id":{"type":"string","format":"uuid","title":"Checklist Item Id"},"photo_url":{"type":"string","title":"Photo Url"},"reference_photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference Photo Url"},"step_title":{"type":"string","title":"Step Title"},"step_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Step Description"}},"type":"object","required":["workspace_id","task_id","checklist_item_id","photo_url","step_title"],"title":"PhotoCheckRequest"},"PhotoCheckResponse":{"properties":{"passed":{"type":"boolean","title":"Passed"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["passed"],"title":"PhotoCheckResponse"},"PhotoResponse":{"properties":{"id":{"type":"string","title":"Id"},"internal_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Internal Url"},"external_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Url"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url"},"filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename"}},"type":"object","required":["id"],"title":"PhotoResponse"},"PlatformStatsResponse":{"properties":{"activeUsers":{"type":"integer","title":"Activeusers"},"activeAgents":{"type":"integer","title":"Activeagents"},"presentShifts":{"type":"integer","title":"Presentshifts"},"users":{"items":{"$ref":"#/components/schemas/UserRow"},"type":"array","title":"Users"},"agents":{"items":{"$ref":"#/components/schemas/AgentRow"},"type":"array","title":"Agents"},"messagesSent":{"type":"integer","title":"Messagessent"},"messagesByChannel":{"$ref":"#/components/schemas/MessagesByChannel"},"callsOnPlatform":{"type":"integer","title":"Callsonplatform"},"callsAiPct":{"type":"integer","title":"Callsaipct"},"commsDaily":{"items":{"$ref":"#/components/schemas/CommsDailyEntry"},"type":"array","title":"Commsdaily"},"agentRuntime":{"$ref":"#/components/schemas/AgentRuntimeResponse"},"responseFlow":{"$ref":"#/components/schemas/ResponseFlowResponse"},"tasks":{"$ref":"#/components/schemas/TasksResponse"},"workflows":{"$ref":"#/components/schemas/WorkflowsResponse"},"knowledgeBase":{"$ref":"#/components/schemas/KbSkillsResponse"}},"type":"object","required":["activeUsers","activeAgents","presentShifts","users","agents","messagesSent","messagesByChannel","callsOnPlatform","callsAiPct","commsDaily","agentRuntime","responseFlow","tasks","workflows","knowledgeBase"],"title":"PlatformStatsResponse"},"PrepareComponentState":{"properties":{"status":{"type":"string","enum":["ready","degraded","skipped"],"title":"Status"},"duration_ms":{"type":"integer","minimum":0.0,"title":"Duration Ms"}},"type":"object","required":["status","duration_ms"],"title":"PrepareComponentState"},"PrepareComponents":{"properties":{"context":{"$ref":"#/components/schemas/PrepareComponentState"},"coordinator":{"$ref":"#/components/schemas/PrepareComponentState"}},"type":"object","required":["context","coordinator"],"title":"PrepareComponents"},"PrepareSessionRequest":{"properties":{"prepared_session_id":{"type":"string","format":"uuid","title":"Prepared Session Id"},"workspace_id":{"type":"string","title":"Workspace Id"},"user_id":{"type":"string","title":"User Id"},"model_id":{"type":"string","title":"Model Id","default":"default"},"is_incognito":{"type":"boolean","title":"Is Incognito","default":false},"contact_type_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contact Type Id"},"agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Id"}},"additionalProperties":false,"type":"object","required":["prepared_session_id","workspace_id","user_id"],"title":"PrepareSessionRequest","description":"Reserve and warm a chat address without creating business rows."},"PrepareSessionResponse":{"properties":{"status":{"type":"string","enum":["ready","degraded"],"title":"Status"},"prepared_session_id":{"type":"string","format":"uuid","title":"Prepared Session Id"},"workspace_id":{"type":"string","title":"Workspace Id"},"agent_id":{"type":"string","format":"uuid","title":"Agent Id"},"components":{"$ref":"#/components/schemas/PrepareComponents"},"timings":{"$ref":"#/components/schemas/PrepareTimings"}},"type":"object","required":["status","prepared_session_id","workspace_id","agent_id","components","timings"],"title":"PrepareSessionResponse"},"PrepareTimings":{"properties":{"validation_ms":{"type":"integer","minimum":0.0,"title":"Validation Ms"},"total_ms":{"type":"integer","minimum":0.0,"title":"Total Ms"}},"type":"object","required":["validation_ms","total_ms"],"title":"PrepareTimings"},"PriceLabsCredentials":{"properties":{"api_key":{"type":"string","title":"Api Key"}},"type":"object","required":["api_key"],"title":"PriceLabsCredentials"},"PulseConfigRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"agent_id":{"type":"string","title":"Agent Id"},"pulse_interval_minutes":{"type":"integer","title":"Pulse Interval Minutes"},"pulse_instructions":{"type":"string","title":"Pulse Instructions","default":""},"pulse_timezone":{"type":"string","title":"Pulse Timezone","default":"UTC"}},"type":"object","required":["workspace_id","agent_id","pulse_interval_minutes"],"title":"PulseConfigRequest"},"PulseRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"pulse_type":{"type":"string","title":"Pulse Type","default":"INTERVAL"}},"type":"object","required":["workspace_id"],"title":"PulseRequest"},"RealtimeSessionRequest":{"properties":{"workspace_id":{"type":"string","minLength":1,"title":"Workspace Id"},"actor_kind":{"$ref":"#/components/schemas/GatewayActorKind"},"actor_id":{"type":"string","minLength":1,"title":"Actor Id"},"trace_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Trace Id"},"session_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Session Id"},"braintrust_parent":{"anyOf":[{"type":"string","maxLength":4096,"minLength":1},{"type":"null"}],"title":"Braintrust Parent"}},"additionalProperties":false,"type":"object","required":["workspace_id","actor_kind","actor_id"],"title":"RealtimeSessionRequest","description":"Provider-neutral request to mint a short-lived browser session."},"ReconcileAgentMemoryCompleted":{"properties":{"job_id":{"type":"string","title":"Job Id"},"stage_two_attempts":{"type":"integer","title":"Stage Two Attempts"},"extraction_enqueued":{"type":"integer","title":"Extraction Enqueued"},"extraction_scheduled":{"type":"integer","title":"Extraction Scheduled"},"newly_enqueued_sources_pending_extraction":{"type":"boolean","title":"Newly Enqueued Sources Pending Extraction"},"stage_two_status":{"type":"string","const":"completed","title":"Stage Two Status"},"stage_two_result":{"$ref":"#/components/schemas/ReconcileAgentMemoryCompletedResult"},"stage_two_retry_at":{"type":"null","title":"Stage Two Retry At"},"last_error":{"type":"null","title":"Last Error"}},"type":"object","required":["job_id","stage_two_attempts","extraction_enqueued","extraction_scheduled","newly_enqueued_sources_pending_extraction","stage_two_status","stage_two_result"],"title":"ReconcileAgentMemoryCompleted"},"ReconcileAgentMemoryCompletedResult":{"properties":{"exact_duplicates_linked":{"type":"integer","title":"Exact Duplicates Linked"},"review_required":{"type":"integer","title":"Review Required"}},"type":"object","required":["exact_duplicates_linked","review_required"],"title":"ReconcileAgentMemoryCompletedResult"},"ReconcileAgentMemoryDeadLetter":{"properties":{"job_id":{"type":"string","title":"Job Id"},"stage_two_attempts":{"type":"integer","title":"Stage Two Attempts"},"extraction_enqueued":{"type":"integer","title":"Extraction Enqueued"},"extraction_scheduled":{"type":"integer","title":"Extraction Scheduled"},"newly_enqueued_sources_pending_extraction":{"type":"boolean","title":"Newly Enqueued Sources Pending Extraction"},"stage_two_status":{"type":"string","const":"dead_letter","title":"Stage Two Status"},"stage_two_result":{"type":"null","title":"Stage Two Result"},"stage_two_retry_at":{"type":"null","title":"Stage Two Retry At"},"last_error":{"type":"string","title":"Last Error"}},"type":"object","required":["job_id","stage_two_attempts","extraction_enqueued","extraction_scheduled","newly_enqueued_sources_pending_extraction","stage_two_status","last_error"],"title":"ReconcileAgentMemoryDeadLetter"},"ReconcileAgentMemoryFailed":{"properties":{"job_id":{"type":"string","title":"Job Id"},"stage_two_attempts":{"type":"integer","title":"Stage Two Attempts"},"extraction_enqueued":{"type":"integer","title":"Extraction Enqueued"},"extraction_scheduled":{"type":"integer","title":"Extraction Scheduled"},"newly_enqueued_sources_pending_extraction":{"type":"boolean","title":"Newly Enqueued Sources Pending Extraction"},"stage_two_status":{"type":"string","const":"failed","title":"Stage Two Status"},"stage_two_result":{"type":"null","title":"Stage Two Result"},"stage_two_retry_at":{"type":"string","format":"date-time","title":"Stage Two Retry At"},"last_error":{"type":"string","title":"Last Error"}},"type":"object","required":["job_id","stage_two_attempts","extraction_enqueued","extraction_scheduled","newly_enqueued_sources_pending_extraction","stage_two_status","stage_two_retry_at","last_error"],"title":"ReconcileAgentMemoryFailed"},"ReconcileAgentMemoryQueued":{"properties":{"job_id":{"type":"string","title":"Job Id"},"stage_two_attempts":{"type":"integer","title":"Stage Two Attempts"},"extraction_enqueued":{"type":"integer","title":"Extraction Enqueued"},"extraction_scheduled":{"type":"integer","title":"Extraction Scheduled"},"newly_enqueued_sources_pending_extraction":{"type":"boolean","title":"Newly Enqueued Sources Pending Extraction"},"stage_two_status":{"type":"string","const":"queued","title":"Stage Two Status"},"stage_two_result":{"type":"null","title":"Stage Two Result"},"stage_two_retry_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Stage Two Retry At"},"last_error":{"type":"null","title":"Last Error"}},"type":"object","required":["job_id","stage_two_attempts","extraction_enqueued","extraction_scheduled","newly_enqueued_sources_pending_extraction","stage_two_status","stage_two_retry_at"],"title":"ReconcileAgentMemoryQueued"},"ReconcileAgentMemoryRequest":{"properties":{"workspace_id":{"type":"string","minLength":1,"title":"Workspace Id"}},"type":"object","required":["workspace_id"],"title":"ReconcileAgentMemoryRequest","description":"Exact tenant scope for an on-demand reconciliation pass."},"ReconcileAgentMemoryRunning":{"properties":{"job_id":{"type":"string","title":"Job Id"},"stage_two_attempts":{"type":"integer","title":"Stage Two Attempts"},"extraction_enqueued":{"type":"integer","title":"Extraction Enqueued"},"extraction_scheduled":{"type":"integer","title":"Extraction Scheduled"},"newly_enqueued_sources_pending_extraction":{"type":"boolean","title":"Newly Enqueued Sources Pending Extraction"},"stage_two_status":{"type":"string","const":"running","title":"Stage Two Status"},"stage_two_result":{"type":"null","title":"Stage Two Result"},"stage_two_retry_at":{"type":"null","title":"Stage Two Retry At"},"last_error":{"type":"null","title":"Last Error"}},"type":"object","required":["job_id","stage_two_attempts","extraction_enqueued","extraction_scheduled","newly_enqueued_sources_pending_extraction","stage_two_status"],"title":"ReconcileAgentMemoryRunning"},"ReconcileReceiptRequest":{"properties":{"resolution":{"type":"string","enum":["completed","failed"],"title":"Resolution"},"evidence":{"additionalProperties":true,"type":"object","title":"Evidence"},"bounded_result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Bounded Result"}},"additionalProperties":false,"type":"object","required":["resolution","evidence"],"title":"ReconcileReceiptRequest"},"RecordMockedStepRunRequest":{"properties":{"step_id":{"type":"string","title":"Step Id"},"step_type":{"type":"string","title":"Step Type"},"step_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Step Name"},"inputs":{"additionalProperties":true,"type":"object","title":"Inputs","default":{}},"env":{"additionalProperties":true,"type":"object","title":"Env","default":{}},"output":{"title":"Output"},"parent_step_run_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Step Run Id"},"loop_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Loop Index"},"idempotency_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency Key"},"context_before":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Context Before"},"output_keys":{"items":{"type":"string"},"type":"array","title":"Output Keys"}},"type":"object","required":["step_id","step_type"],"title":"RecordMockedStepRunRequest"},"RecoverySweepRequest":{"properties":{"limit":{"type":"integer","title":"Limit","default":100}},"additionalProperties":false,"type":"object","title":"RecoverySweepRequest"},"ReferenceMapPatch":{"properties":{"additions":{"additionalProperties":true,"type":"object","title":"Additions","description":"Shallow-merged into the row's reference_map. Adds new keys; overwrites existing ones. Pass an empty dict to no-op."}},"type":"object","required":["additions"],"title":"ReferenceMapPatch"},"RepoRefreshCommand":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"repository":{"type":"string","title":"Repository"},"source_branch":{"type":"string","title":"Source Branch"},"source_sha":{"type":"string","pattern":"^[a-f0-9]{40,64}$","title":"Source Sha"},"full":{"type":"boolean","title":"Full","default":false},"trigger":{"type":"string","enum":["main_push","scheduled_ci","nightly_full"],"title":"Trigger","default":"main_push"},"visible_run_id":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{8}-[a-f0-9]{4}-[1-8][a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$"},{"type":"null"}],"title":"Visible Run Id"},"docs":{"items":{"$ref":"#/components/schemas/GeneratedRepoPage"},"type":"array","maxItems":100,"minItems":1,"title":"Docs"}},"additionalProperties":false,"type":"object","required":["workspace_id","repository","source_branch","source_sha","docs"],"title":"RepoRefreshCommand"},"ReportErrorRequest":{"properties":{"error":{"type":"string","title":"Error"},"stage":{"type":"string","title":"Stage","default":"unknown"},"close_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Close Code"},"close_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Close Reason"},"reconnect_exhausted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Reconnect Exhausted"}},"type":"object","required":["error"],"title":"ReportErrorRequest"},"ReportEventRequest":{"properties":{"event":{"type":"string","title":"Event"},"stage":{"type":"string","title":"Stage","default":"unknown"},"level":{"type":"string","enum":["fatal","critical","error","warning","info","debug"],"title":"Level","default":"info"},"details":{"additionalProperties":true,"type":"object","title":"Details"}},"type":"object","required":["event"],"title":"ReportEventRequest"},"RerunSimulationRequest":{"properties":{"model_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id"},"batch_run_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Batch Run Id"},"use_responseflow_runtime":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Responseflow Runtime"},"runtime_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Runtime Mode"},"agent_runtime_mode_override":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Runtime Mode Override"},"execution_key":{"anyOf":[{"type":"string","maxLength":200,"minLength":1,"pattern":"^[A-Za-z0-9._:-]+$"},{"type":"null"}],"title":"Execution Key"}},"type":"object","title":"RerunSimulationRequest","description":"Optional overrides for a single simulation run."},"ResolveContinuationRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"user_id":{"type":"string","title":"User Id"},"response":{"additionalProperties":true,"type":"object","title":"Response"}},"type":"object","required":["workspace_id","user_id","response"],"title":"ResolveContinuationRequest","description":"Request to resolve a continuation with arbitrary human input."},"ResolveHttpInteractionRequest":{"properties":{"response":{"additionalProperties":true,"type":"object","title":"Response"}},"additionalProperties":false,"type":"object","required":["response"],"title":"ResolveHttpInteractionRequest","description":"Typed answer to a durable HTTP interaction."},"ResolvePauseRequest":{"properties":{"action":{"type":"string","pattern":"^(approve|reject)$","title":"Action"},"workspace_id":{"type":"string","title":"Workspace Id"},"user_id":{"type":"string","title":"User Id"},"response":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Response"}},"type":"object","required":["action","workspace_id","user_id"],"title":"ResolvePauseRequest","description":"Request to approve or reject a paused tool call."},"ResponseFlowDecisionPayload":{"properties":{"generated_response":{"type":"string","title":"Generated Response","default":""},"reflection":{"type":"string","title":"Reflection","default":""},"is_answerable":{"type":"boolean","title":"Is Answerable","default":true},"no_reply_needed":{"type":"boolean","title":"No Reply Needed","default":false},"no_reply_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"No Reply Reason","default":""},"question_to_manager":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question To Manager","default":""},"request_type":{"type":"string","title":"Request Type","default":""},"escalation_type":{"type":"string","title":"Escalation Type","default":""},"teaching_hint":{"type":"string","title":"Teaching Hint","default":""},"sources":{"items":{"type":"string"},"type":"array","title":"Sources"},"knowledge_sources":{"items":{"$ref":"#/components/schemas/ResponseFlowKnowledgeSource"},"type":"array","title":"Knowledge Sources"},"used_conversation_evidence_ids":{"items":{"type":"string"},"type":"array","title":"Used Conversation Evidence Ids"},"topic":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic"},"shouldEscalate":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Shouldescalate"},"escalationReason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Escalationreason"},"response":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Response"},"hold_from_autosend":{"type":"boolean","title":"Hold From Autosend","default":false},"delivery_mode":{"type":"string","title":"Delivery Mode","default":""}},"type":"object","title":"ResponseFlowDecisionPayload"},"ResponseFlowErrorDetails":{"properties":{"code":{"type":"string","title":"Code"},"rawError":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rawerror"},"retryable":{"type":"boolean","title":"Retryable","default":false},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stage"},"providerReason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Providerreason"},"providerErrorCode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Providererrorcode"},"providerErrorField":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Providererrorfield"},"providerStatusCode":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Providerstatuscode"},"attempt":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Attempt"},"maxAttempts":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Maxattempts"},"traceId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Traceid"},"sessionId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sessionid"},"assistantMessageId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assistantmessageid"},"workspaceId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspaceid"},"conversationId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversationid"},"agentId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agentid"},"modelId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Modelid"},"sideEffectObserved":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Sideeffectobserved"}},"type":"object","required":["code"],"title":"ResponseFlowErrorDetails"},"ResponseFlowKnowledgeSource":{"properties":{"type":{"type":"string","title":"Type","default":""},"id":{"type":"string","title":"Id","default":""},"title":{"type":"string","title":"Title","default":""},"preview":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview"},"agent_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Slug"}},"type":"object","title":"ResponseFlowKnowledgeSource"},"ResponseFlowProviderFallbackRecoveryPayload":{"properties":{"reason":{"type":"string","enum":["content_filter","provider_capacity","provider_invalid_argument"],"title":"Reason","default":"content_filter"},"primary_model":{"type":"string","minLength":1,"title":"Primary Model"},"fallback_model":{"type":"string","minLength":1,"title":"Fallback Model"}},"type":"object","required":["primary_model","fallback_model"],"title":"ResponseFlowProviderFallbackRecoveryPayload"},"ResponseFlowProviderRefusalPayload":{"properties":{"provider":{"type":"string","const":"openai","title":"Provider","default":"openai"},"event_type":{"type":"string","const":"response.incomplete","title":"Event Type","default":"response.incomplete"},"reason":{"type":"string","const":"content_filter","title":"Reason","default":"content_filter"},"primary_model":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Primary Model"},"fallback_model":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Fallback Model"}},"type":"object","title":"ResponseFlowProviderRefusalPayload"},"ResponseFlowResponse":{"properties":{"totalProposed":{"type":"integer","title":"Totalproposed"},"autoSent":{"type":"integer","title":"Autosent"},"automationRate":{"type":"number","title":"Automationrate"},"escalationCount":{"type":"integer","title":"Escalationcount"},"escalationBreakdown":{"items":{"$ref":"#/components/schemas/EscalationBreakdownItem"},"type":"array","title":"Escalationbreakdown"},"trend":{"items":{"$ref":"#/components/schemas/RfTrendEntry"},"type":"array","title":"Trend"},"funnel":{"$ref":"#/components/schemas/RfFunnel"}},"type":"object","required":["totalProposed","autoSent","automationRate","escalationCount","escalationBreakdown","trend","funnel"],"title":"ResponseFlowResponse"},"ResponseFlowV3ChainCommit":{"properties":{"response_id":{"type":"string","minLength":1,"title":"Response Id"},"expected_predecessor_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Predecessor Id"},"agent_id":{"type":"string","minLength":1,"title":"Agent Id"},"model_id":{"type":"string","minLength":1,"title":"Model Id"},"provider":{"type":"string","minLength":1,"title":"Provider","default":"openai"},"transport":{"type":"string","minLength":1,"title":"Transport","default":"responses"},"source_cursor":{"type":"string","minLength":1,"title":"Source Cursor"},"epoch_started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Epoch Started At"},"reset_response_chain":{"type":"boolean","title":"Reset Response Chain","default":false},"preserve_existing_chain":{"type":"boolean","title":"Preserve Existing Chain","default":false},"prompt_contract_revision":{"type":"string","title":"Prompt Contract Revision","default":"responseflow-v3-current-thread-v10"}},"additionalProperties":false,"type":"object","required":["response_id","agent_id","model_id","source_cursor"],"title":"ResponseFlowV3ChainCommit","description":"Opaque response-chain advance staged for app-side finalization."},"ResponseFlowV3Delivery":{"properties":{"recipient_contact_id":{"type":"string","minLength":1,"title":"Recipient Contact Id"},"channel":{"type":"string","minLength":1,"title":"Channel"},"message":{"type":"string","minLength":1,"title":"Message","description":"Exact contact-facing plain text. Do not use Markdown formatting. Use ordinary sentences and line breaks. Write full URLs directly instead of Markdown links. Ask a clarification directly; do not append a promise or offer to check later. Do not introduce unverified examples in the clarification. For unresolved_staff_action, a clarification or conversational acknowledgement does not by itself establish a knowledge gap. An established knowledge gap always has management ownership through its escalation, even when no contact reply is sent. You do not continue handling work after this run on your own. Any guest-facing commitment by you or the team to check, look into, review, confirm later, or follow up therefore involves management. Treat that commitment as part of an escalation and create the escalation with the clearest natural question the owner needs to answer. That future commitment does not mean a handoff already happened. Only claim a task, escalation, assignment, confirmed review, scheduled action, or completed action when current context or a successful tool result proves it. Never expose internal tools, access limits, ownership state, or receipt requirements, and never promise a timeframe or outcome without authoritative evidence. An urgent or emergency handoff does not prove immediate attention, dispatch, or work started. For a current safety or security risk, include appropriate common-sense immediate precautions grounded in the conversation without inventing property-specific instructions. Treat unverified reports as the contact's experience; do not admit company fault or state a disputed cause as fact."},"purpose":{"type":"string","enum":["answer","acknowledgement","clarification","courtesy","recovery"],"title":"Purpose"},"route":{"type":"string","const":"current","title":"Route","default":"current"},"visual_evidence":{"anyOf":[{"$ref":"#/components/schemas/ResponseFlowV3VisualEvidence"},{"type":"null"}],"description":"Required for every delivery. Classify the delivery's actual use of attachments: not_used when no claim depends on either a current or historical attachment; categorical_or_state for a clearly visible non-exact detail; exact_non_numeric_text when deliberately re-read visible text contains no numeric reading; exact_numeric_reading whenever the message quotes a number or digits read from an attachment; unreadable_or_ambiguous when the message preserves uncertainty. Exact attachment numeric readings are rejected until independently verified by authoritative non-visual evidence."}},"additionalProperties":false,"type":"object","required":["recipient_contact_id","channel","message","purpose"],"title":"ResponseFlowV3Delivery"},"ResponseFlowV3Obligation":{"properties":{"need":{"type":"string","minLength":1,"title":"Need"},"status":{"type":"string","enum":["completed","waiting_on_contact","unresolved_staff_action","queued_for_staff_review","owned_by_staff","handed_off","closed"],"title":"Status","description":"Resolution state for this external need. Use completed or closed only when nobody owns more work, waiting_on_contact only when the contact must act, unresolved_staff_action only when staff action is still required and no durable owner is proven, whether or not an executable handoff is available, queued_for_staff_review only when a draft is durably recorded for human review, owned_by_staff only when current context proves an active task or escalation beyond review, and handed_off only after an observed escalation handoff in this turn. For unresolved_staff_action, the intended team next step does not claim that a handoff already happened."},"next_owner":{"type":"string","enum":["contact","review_queue","staff","none"],"title":"Next Owner","description":"Owner implied by status: completed and closed require none; waiting_on_contact requires contact; unresolved_staff_action, owned_by_staff, and handed_off require staff; queued_for_staff_review requires review_queue."},"ownership_ref":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Ownership Ref","description":"The exact task or escalation ID that owns this need. Supply it for queued_for_staff_review, owned_by_staff, and handed_off from current context or a successful tool result. Omit it for every other status, including unresolved_staff_action."}},"additionalProperties":false,"type":"object","required":["need","status","next_owner"],"title":"ResponseFlowV3Obligation"},"ResponseFlowV3Plan":{"properties":{"conversation_version":{"type":"string","minLength":1,"title":"Conversation Version"},"trigger_event_ids":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Trigger Event Ids"},"obligations":{"items":{"$ref":"#/components/schemas/ResponseFlowV3Obligation"},"type":"array","title":"Obligations"},"deliveries":{"items":{"$ref":"#/components/schemas/ResponseFlowV3Delivery"},"type":"array","maxItems":1,"title":"Deliveries","description":"The optional contact-facing message for the verified current route."},"no_reply_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"No Reply Reason","description":"Concise internal reason no external delivery is warranted. Required when deliveries is empty and forbidden when a delivery is present."},"no_reply_reason_code":{"anyOf":[{"type":"string","enum":["settled_exchange","no_external_intent","automated_or_system_traffic","route_loop","unusable_route","active_human_exchange","workspace_rule","other"]},{"type":"null"}],"title":"No Reply Reason Code","description":"Typed category for the no-reply decision. Use workspace_rule when an applicable workspace-authored rule requires silence after a successful same-turn handoff. Otherwise use a concrete route or traffic category. The generic other category requires at least one declared obligation; never pair it with an empty obligations list."},"sources":{"items":{"type":"string"},"type":"array","title":"Sources","description":"IDs of retrieved Trellis entities that directly support the final plan, including properties, tasks, reservations, conversations, claims, contacts, workflows, memories, or knowledge documents. Omit consulted results that were not used."},"used_conversation_evidence_ids":{"items":{"type":"string"},"type":"array","title":"Used Conversation Evidence Ids","description":"Evidence IDs returned by search_conversation_history that materially support the delivered message. Omit search results that were only consulted."},"decision_summary":{"type":"string","minLength":1,"title":"Decision Summary"}},"additionalProperties":false,"type":"object","required":["conversation_version","trigger_event_ids","decision_summary"],"title":"ResponseFlowV3Plan","description":"Authoritative model-facing output for one ResponseFlow V3 turn."},"ResponseFlowV3VisualEvidence":{"properties":{"attachment_claim":{"type":"string","enum":["not_used","categorical_or_state","exact_non_numeric_text","exact_numeric_reading","unreadable_or_ambiguous"],"title":"Attachment Claim"}},"additionalProperties":false,"type":"object","required":["attachment_claim"],"title":"ResponseFlowV3VisualEvidence"},"ResponseTimeBucket":{"properties":{"bucket":{"type":"string","title":"Bucket"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["bucket","count"],"title":"ResponseTimeBucket"},"ResponseTimeMetrics":{"properties":{"avg_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Seconds"},"median_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Median Seconds"},"p90_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P90 Seconds"},"ai_avg_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ai Avg Seconds"},"human_avg_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Human Avg Seconds"}},"type":"object","title":"ResponseTimeMetrics"},"ResumeTurnRequest":{"properties":{"decision":{"type":"string","enum":["approve","reject"],"title":"Decision"},"evidence":{"additionalProperties":true,"type":"object","title":"Evidence"}},"additionalProperties":false,"type":"object","required":["decision","evidence"],"title":"ResumeTurnRequest"},"RetellVoiceScenario":{"properties":{"scenario_id":{"type":"string","title":"Scenario Id"},"caller_profile":{"additionalProperties":{"type":"string"},"type":"object","title":"Caller Profile"},"turns":{"items":{"type":"string"},"type":"array","title":"Turns"},"dynamic_variables":{"additionalProperties":{"type":"string"},"type":"object","title":"Dynamic Variables"},"expected_tools":{"items":{"type":"string"},"type":"array","title":"Expected Tools"},"expected_tool_groups":{"items":{"items":{"type":"string"},"type":"array"},"type":"array","title":"Expected Tool Groups"},"expected_final_disposition":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Final Disposition"},"coverage":{"items":{"type":"string"},"type":"array","title":"Coverage"},"required_speak_during_tools":{"items":{"type":"string"},"type":"array","title":"Required Speak During Tools"},"max_response_delay_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Response Delay Ms"},"min_agent_pause_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Agent Pause Ms","default":300},"max_agent_turn_words":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Agent Turn Words","default":50},"max_agent_turn_sentences":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Agent Turn Sentences","default":2},"retell_user_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retell User Prompt"},"retell_metrics":{"items":{"type":"string"},"type":"array","title":"Retell Metrics"},"retell_tool_mocks":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Retell Tool Mocks"},"retell_test_case_definition_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retell Test Case Definition Id"},"allow_retell_batch_test":{"type":"boolean","title":"Allow Retell Batch Test","default":false},"retell_batch_poll_attempts":{"type":"integer","title":"Retell Batch Poll Attempts","default":12},"retell_batch_poll_interval_s":{"type":"number","title":"Retell Batch Poll Interval S","default":5.0},"source_evidence_keys":{"items":{"type":"string"},"type":"array","title":"Source Evidence Keys"},"source_call_record_ids":{"items":{"type":"string"},"type":"array","title":"Source Call Record Ids"},"source_voice_call_ids":{"items":{"type":"string"},"type":"array","title":"Source Voice Call Ids"},"source_trace_ids":{"items":{"type":"string"},"type":"array","title":"Source Trace Ids"}},"additionalProperties":false,"type":"object","required":["scenario_id"],"title":"RetellVoiceScenario"},"RetellVoiceTestRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"agent_id":{"type":"string","title":"Agent Id"},"scenario":{"$ref":"#/components/schemas/RetellVoiceScenario"}},"additionalProperties":false,"type":"object","required":["workspace_id","agent_id","scenario"],"title":"RetellVoiceTestRequest"},"RetellVoiceTestResult":{"properties":{"scenario_id":{"type":"string","title":"Scenario Id"},"workspace_id":{"type":"string","title":"Workspace Id"},"agent_id":{"type":"string","title":"Agent Id"},"retell_runtime_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retell Runtime Id"},"retell_llm_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retell Llm Id"},"mode":{"type":"string","enum":["local_simulation","retell_batch_test"],"title":"Mode"},"transcript":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Transcript"},"tool_calls":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Tool Calls"},"final_state":{"type":"string","enum":["passed","failed","submitted"],"title":"Final State"},"latency_ms":{"type":"integer","title":"Latency Ms"},"assertions":{"additionalProperties":true,"type":"object","title":"Assertions"},"dynamic_variables":{"additionalProperties":{"type":"string"},"type":"object","title":"Dynamic Variables"},"observability":{"additionalProperties":true,"type":"object","title":"Observability"}},"additionalProperties":false,"type":"object","required":["scenario_id","workspace_id","agent_id","mode","transcript","tool_calls","final_state","latency_ms","assertions","dynamic_variables","observability"],"title":"RetellVoiceTestResult"},"RevertRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"reverted_by":{"type":"string","title":"Reverted By"}},"type":"object","required":["workspace_id","reverted_by"],"title":"RevertRequest"},"RevertResponse":{"properties":{"status":{"type":"string","title":"Status"},"activity_id":{"type":"string","title":"Activity Id"},"action":{"type":"string","title":"Action"},"revert_activity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Revert Activity Id"}},"type":"object","required":["status","activity_id","action"],"title":"RevertResponse"},"RfFunnel":{"properties":{"totalInbound":{"type":"integer","title":"Totalinbound"},"rfInvolved":{"type":"integer","title":"Rfinvolved"},"autoSent":{"type":"integer","title":"Autosent"},"escalated":{"type":"integer","title":"Escalated"},"humanSent":{"type":"integer","title":"Humansent"},"noReply":{"type":"integer","title":"Noreply"},"rejected":{"type":"integer","title":"Rejected"},"escMissingData":{"type":"integer","title":"Escmissingdata"},"escMissingAction":{"type":"integer","title":"Escmissingaction"},"escPolicy":{"type":"integer","title":"Escpolicy"}},"type":"object","required":["totalInbound","rfInvolved","autoSent","escalated","humanSent","noReply","rejected","escMissingData","escMissingAction","escPolicy"],"title":"RfFunnel"},"RfTrendEntry":{"properties":{"day":{"type":"string","title":"Day"},"proposed":{"type":"integer","title":"Proposed"},"autoSent":{"type":"integer","title":"Autosent"},"escalated":{"type":"integer","title":"Escalated"}},"type":"object","required":["day","proposed","autoSent","escalated"],"title":"RfTrendEntry"},"RollbackRequest":{"properties":{"version":{"type":"integer","title":"Version"},"activation_override":{"anyOf":[{"$ref":"#/components/schemas/ActivationOverride"},{"type":"null"}]}},"type":"object","required":["version"],"title":"RollbackRequest"},"RunSuiteRequest":{"properties":{"model_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id"},"concurrency":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Concurrency"},"failed_only":{"type":"boolean","title":"Failed Only","default":false},"simulation_ids":{"items":{"type":"string"},"type":"array","title":"Simulation Ids"},"use_responseflow_runtime":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Responseflow Runtime"},"runtime_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Runtime Mode"},"agent_runtime_mode_override":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Runtime Mode Override"}},"type":"object","title":"RunSuiteRequest"},"RunSuiteTestRequest":{"properties":{"mode":{"type":"string","title":"Mode","default":"single"},"property_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Property Ids"},"random_property_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Random Property Count"},"variation_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Variation Count"},"property_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Property Id"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},"type":"object","title":"RunSuiteTestRequest"},"SandboxGatewayCall":{"properties":{"request_id":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Request Id"},"tool_name":{"type":"string","maxLength":200,"minLength":1,"title":"Tool Name"},"arguments":{"additionalProperties":true,"type":"object","title":"Arguments"}},"type":"object","required":["tool_name"],"title":"SandboxGatewayCall"},"SandboxGatewayCallsRequest":{"properties":{"calls":{"items":{"$ref":"#/components/schemas/SandboxGatewayCall"},"type":"array","maxItems":50,"minItems":1,"title":"Calls"}},"type":"object","required":["calls"],"title":"SandboxGatewayCallsRequest"},"SaveProfileRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"user_id":{"type":"string","title":"User Id"},"full_name":{"type":"string","title":"Full Name"},"email":{"type":"string","title":"Email"},"phone":{"type":"string","title":"Phone"},"is_pm":{"type":"boolean","title":"Is Pm"},"listing_count":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Listing Count"},"role_context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role Context"}},"type":"object","required":["workspace_id","user_id","full_name","email","phone","is_pm"],"title":"SaveProfileRequest"},"SaveTrackRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"track":{"type":"string","title":"Track"}},"type":"object","required":["workspace_id","track"],"title":"SaveTrackRequest"},"ScaffoldFillRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"kind":{"type":"string","pattern":"^(reservation|contact)$","title":"Kind"},"contact_type":{"anyOf":[{"type":"string","pattern":"^(GUEST|VENDOR|OWNER|OTHER)$"},{"type":"null"}],"title":"Contact Type"},"prompt":{"type":"string","maxLength":2000,"minLength":1,"title":"Prompt"}},"type":"object","required":["workspace_id","kind","prompt"],"title":"ScaffoldFillRequest","description":"Wizard \"Fill with AI\" — populate a reservation or contact form from a\nnatural-language description. Demographics only. Does NOT invent a first\nmessage or scenario — that's what saved simulations are for."},"ScrapeUrlRequest":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"ScrapeUrlRequest","description":"Request to scrape a URL via Firecrawl."},"SeedDefaultsRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"target_types":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Target Types"}},"type":"object","required":["workspace_id"],"title":"SeedDefaultsRequest"},"SeedSuiteTestEntry":{"properties":{"template_id":{"type":"string","title":"Template Id"},"category":{"type":"string","title":"Category"},"test_type":{"type":"string","title":"Test Type"},"name":{"type":"string","title":"Name"},"topic":{"type":"string","title":"Topic","default":""},"sample_message":{"type":"string","title":"Sample Message"},"expected_behaviour":{"type":"string","title":"Expected Behaviour"},"reservation_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reservation Status"}},"type":"object","required":["template_id","category","test_type","name","sample_message","expected_behaviour"],"title":"SeedSuiteTestEntry"},"SeedSuiteTestsRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"tests":{"items":{"$ref":"#/components/schemas/SeedSuiteTestEntry"},"type":"array","title":"Tests"}},"type":"object","required":["workspace_id","tests"],"title":"SeedSuiteTestsRequest"},"ServiceHealth":{"type":"string","enum":["healthy","degraded","unhealthy"],"title":"ServiceHealth","description":"Service health status."},"ShareSkillRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"target_agent_ids":{"items":{"type":"string"},"type":"array","title":"Target Agent Ids"}},"type":"object","required":["workspace_id","target_agent_ids"],"title":"ShareSkillRequest"},"SharedTaskResponse":{"properties":{"token":{"type":"string","title":"Token"},"technician_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Technician Name"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"is_completed":{"type":"boolean","title":"Is Completed","default":false},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completed At"},"completion_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completion Notes"},"task_id":{"type":"string","title":"Task Id"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"department_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department Name"},"priority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Priority"},"scheduled_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scheduled Date"},"scheduled_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scheduled Time"},"property_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Property Name"},"property_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Property Address"},"manual_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Manual Url"},"checklist_items":{"items":{"$ref":"#/components/schemas/ChecklistItemResponse"},"type":"array","title":"Checklist Items","default":[]},"photos":{"items":{"$ref":"#/components/schemas/PhotoResponse"},"type":"array","title":"Photos","default":[]}},"type":"object","required":["token","task_id","title"],"title":"SharedTaskResponse","description":"Response model for shared task data."},"SliceRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"trigger_session_id":{"type":"string","title":"Trigger Session Id"},"trigger_run_id":{"type":"string","title":"Trigger Run Id"},"dispatch_generation":{"type":"integer","minimum":0.0,"title":"Dispatch Generation"},"stream_protocol_version":{"anyOf":[{"type":"integer","const":2},{"type":"null"}],"title":"Stream Protocol Version"},"startup_telemetry":{"anyOf":[{"$ref":"#/components/schemas/DurableTriggerStartupTelemetry"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["workspace_id","trigger_session_id","trigger_run_id","dispatch_generation"],"title":"SliceRequest"},"SpeakRequest":{"properties":{"message":{"type":"string","title":"Message"}},"type":"object","required":["message"],"title":"SpeakRequest"},"SpeechRequest":{"properties":{"workspace_id":{"type":"string","minLength":1,"title":"Workspace Id"},"actor_kind":{"$ref":"#/components/schemas/GatewayActorKind"},"actor_id":{"type":"string","minLength":1,"title":"Actor Id"},"trace_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Trace Id"},"session_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Session Id"},"braintrust_parent":{"anyOf":[{"type":"string","maxLength":4096,"minLength":1},{"type":"null"}],"title":"Braintrust Parent"},"input":{"type":"string","maxLength":4096,"minLength":1,"title":"Input"},"voice":{"type":"string","enum":["alloy","echo","fable","onyx","nova","shimmer"],"title":"Voice","default":"nova"},"response_format":{"type":"string","enum":["mp3","opus","aac","flac","wav","pcm"],"title":"Response Format","default":"mp3"},"speed":{"type":"number","maximum":4.0,"minimum":0.25,"title":"Speed","default":1.0},"instructions":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Instructions"}},"additionalProperties":false,"type":"object","required":["workspace_id","actor_kind","actor_id","input"],"title":"SpeechRequest","description":"Bounded text-to-speech request with server-owned routing."},"StartBackgroundRunRequest":{"properties":{"content":{"type":"string","title":"Content","description":"Latest user message text to send."},"context":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Context","description":"Optional UI/runtime context for this chat turn."},"sender_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender User Id","description":"User id to persist on the message; defaults to session user."},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id","description":"Agent id override; defaults to the session agent."},"message_history":{"anyOf":[{"items":{"$ref":"#/components/schemas/FrontendHistoryMessage"},"type":"array"},{"type":"null"}],"title":"Message History","description":"Optional safe text-only UI history for freshly-created chat sessions. Roles are limited to user, assistant, and system; the server uses DB history when this is absent."},"ui_message_history":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Ui Message History","description":"Optional AI SDK UIMessage history for native OpenAI Agents runs. When present, the server converts parts directly to Responses input items instead of replaying LangChain-shaped history."},"ui_message":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Ui Message","description":"Latest AI SDK UIMessage for native OpenAI Agents runs. Content remains required for compatibility, but the native parts preserve current-turn multimodal shape."},"interrupt":{"type":"boolean","title":"Interrupt","description":"Stop any active run before starting this one.","default":false},"dry_run":{"type":"boolean","title":"Dry Run","description":"Run with runtime-enforced side-effect blocking.","default":false},"has_attachments":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Attachments","description":"Frontend hint used to skip attachment lookup on text-only turns."},"file_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"File Ids","description":"Uploaded ai_agent_files ids selected for this message."},"is_template_install":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Template Install","description":"Frontend hint for template install primer sessions."},"client_warm_lead_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Client Warm Lead Ms","description":"Milliseconds between the latest exact warm request and send."},"assistant_message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assistant Message Id","description":"Optional client-preallocated assistant message UUID so clients can open the live stream before the durable run reservation returns."},"user_message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Message Id","description":"Stable user message UUID for a Trellis-app durable queued turn."},"initial_assistant_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Initial Assistant Message","description":"Assistant seed shown before the first operator reply."},"initial_context_widgets":{"anyOf":[{"items":{"$ref":"#/components/schemas/InitialContextWidget"},"type":"array"},{"type":"null"}],"title":"Initial Context Widgets","description":"Clickable context cards rendered before the assistant seed."}},"type":"object","required":["content"],"title":"StartBackgroundRunRequest","description":"Request body for starting a detached background chat run."},"SteeringConfirmationRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"trigger_session_id":{"type":"string","title":"Trigger Session Id"},"trigger_run_id":{"type":"string","title":"Trigger Run Id"},"dispatch_generation":{"type":"integer","minimum":0.0,"title":"Dispatch Generation"},"stream_protocol_version":{"anyOf":[{"type":"integer","const":2},{"type":"null"}],"title":"Stream Protocol Version"},"startup_telemetry":{"anyOf":[{"$ref":"#/components/schemas/DurableTriggerStartupTelemetry"},{"type":"null"}]},"message_ids":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Message Ids"}},"additionalProperties":false,"type":"object","required":["workspace_id","trigger_session_id","trigger_run_id","dispatch_generation","message_ids"],"title":"SteeringConfirmationRequest"},"SteeringRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"trigger_session_id":{"type":"string","title":"Trigger Session Id"},"trigger_run_id":{"type":"string","title":"Trigger Run Id"},"dispatch_generation":{"type":"integer","minimum":0.0,"title":"Dispatch Generation"},"stream_protocol_version":{"anyOf":[{"type":"integer","const":2},{"type":"null"}],"title":"Stream Protocol Version"},"startup_telemetry":{"anyOf":[{"$ref":"#/components/schemas/DurableTriggerStartupTelemetry"},{"type":"null"}]},"message_id":{"type":"string","maxLength":512,"minLength":1,"title":"Message Id"},"message_text":{"type":"string","maxLength":16384,"minLength":1,"title":"Message Text"}},"additionalProperties":false,"type":"object","required":["workspace_id","trigger_session_id","trigger_run_id","dispatch_generation","message_id","message_text"],"title":"SteeringRequest"},"StoreApprovalTokenRequest":{"properties":{"approval_id":{"type":"string","title":"Approval Id"},"waitpoint_token_id":{"type":"string","title":"Waitpoint Token Id"},"workspace_id":{"type":"string","title":"Workspace Id"},"waitpoint_callback_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Waitpoint Callback Url"}},"type":"object","required":["approval_id","waitpoint_token_id","workspace_id"],"title":"StoreApprovalTokenRequest"},"StreamRequest":{"properties":{"workspace_id":{"type":"string","minLength":1,"title":"Workspace Id"},"actor_kind":{"$ref":"#/components/schemas/GatewayActorKind"},"actor_id":{"type":"string","minLength":1,"title":"Actor Id"},"trace_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Trace Id"},"session_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Session Id"},"braintrust_parent":{"anyOf":[{"type":"string","maxLength":4096,"minLength":1},{"type":"null"}],"title":"Braintrust Parent"},"messages":{"items":{"additionalProperties":true,"type":"object"},"type":"array","maxItems":256,"minItems":1,"title":"Messages"},"tools":{"anyOf":[{"items":{"oneOf":[{"$ref":"#/components/schemas/HostedTool"},{"$ref":"#/components/schemas/MCPTool"}],"discriminator":{"propertyName":"type","mapping":{"apply_patch":"#/components/schemas/HostedTool","code_interpreter":"#/components/schemas/HostedTool","computer":"#/components/schemas/HostedTool","computer_use_preview":"#/components/schemas/HostedTool","custom":"#/components/schemas/HostedTool","file_search":"#/components/schemas/HostedTool","function":"#/components/schemas/HostedTool","image_generation":"#/components/schemas/HostedTool","local_shell":"#/components/schemas/HostedTool","mcp":"#/components/schemas/MCPTool","namespace":"#/components/schemas/HostedTool","programmatic_tool_calling":"#/components/schemas/HostedTool","shell":"#/components/schemas/HostedTool","tool_search":"#/components/schemas/HostedTool","web_search":"#/components/schemas/HostedTool","web_search_2025_08_26":"#/components/schemas/HostedTool","web_search_preview":"#/components/schemas/HostedTool","web_search_preview_2025_03_11":"#/components/schemas/HostedTool"}}},"type":"array","maxItems":128},{"type":"null"}],"title":"Tools"},"tool_choice":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Tool Choice"},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls"},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature"},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P"},"max_tokens":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Max Tokens"},"max_completion_tokens":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Max Completion Tokens"},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop"},"n":{"anyOf":[{"type":"integer","maximum":16.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"N"},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"frequency_penalty":{"anyOf":[{"type":"number","maximum":2.0,"minimum":-2.0},{"type":"null"}],"title":"Frequency Penalty"},"presence_penalty":{"anyOf":[{"type":"number","maximum":2.0,"minimum":-2.0},{"type":"null"}],"title":"Presence Penalty"},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs"},"top_logprobs":{"anyOf":[{"type":"integer","maximum":20.0,"minimum":0.0},{"type":"null"}],"title":"Top Logprobs"},"reasoning_effort":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reasoning Effort"},"verbosity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verbosity"},"web_search_options":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Web Search Options"}},"additionalProperties":false,"type":"object","required":["workspace_id","actor_kind","actor_id","messages"],"title":"StreamRequest","description":"Streaming completion request."},"StructuredRequest":{"properties":{"workspace_id":{"type":"string","minLength":1,"title":"Workspace Id"},"actor_kind":{"$ref":"#/components/schemas/GatewayActorKind"},"actor_id":{"type":"string","minLength":1,"title":"Actor Id"},"trace_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Trace Id"},"session_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Session Id"},"braintrust_parent":{"anyOf":[{"type":"string","maxLength":4096,"minLength":1},{"type":"null"}],"title":"Braintrust Parent"},"messages":{"items":{"additionalProperties":true,"type":"object"},"type":"array","maxItems":256,"minItems":1,"title":"Messages"},"tools":{"anyOf":[{"items":{"oneOf":[{"$ref":"#/components/schemas/HostedTool"},{"$ref":"#/components/schemas/MCPTool"}],"discriminator":{"propertyName":"type","mapping":{"apply_patch":"#/components/schemas/HostedTool","code_interpreter":"#/components/schemas/HostedTool","computer":"#/components/schemas/HostedTool","computer_use_preview":"#/components/schemas/HostedTool","custom":"#/components/schemas/HostedTool","file_search":"#/components/schemas/HostedTool","function":"#/components/schemas/HostedTool","image_generation":"#/components/schemas/HostedTool","local_shell":"#/components/schemas/HostedTool","mcp":"#/components/schemas/MCPTool","namespace":"#/components/schemas/HostedTool","programmatic_tool_calling":"#/components/schemas/HostedTool","shell":"#/components/schemas/HostedTool","tool_search":"#/components/schemas/HostedTool","web_search":"#/components/schemas/HostedTool","web_search_2025_08_26":"#/components/schemas/HostedTool","web_search_preview":"#/components/schemas/HostedTool","web_search_preview_2025_03_11":"#/components/schemas/HostedTool"}}},"type":"array","maxItems":128},{"type":"null"}],"title":"Tools"},"tool_choice":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Tool Choice"},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls"},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature"},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P"},"max_tokens":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Max Tokens"},"max_completion_tokens":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Max Completion Tokens"},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop"},"n":{"anyOf":[{"type":"integer","maximum":16.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"N"},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"frequency_penalty":{"anyOf":[{"type":"number","maximum":2.0,"minimum":-2.0},{"type":"null"}],"title":"Frequency Penalty"},"presence_penalty":{"anyOf":[{"type":"number","maximum":2.0,"minimum":-2.0},{"type":"null"}],"title":"Presence Penalty"},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs"},"top_logprobs":{"anyOf":[{"type":"integer","maximum":20.0,"minimum":0.0},{"type":"null"}],"title":"Top Logprobs"},"reasoning_effort":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reasoning Effort"},"verbosity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verbosity"},"web_search_options":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Web Search Options"},"json_schema":{"additionalProperties":true,"type":"object","title":"Json Schema"}},"additionalProperties":false,"type":"object","required":["workspace_id","actor_kind","actor_id","messages","json_schema"],"title":"StructuredRequest","description":"JSON-schema constrained completion request."},"SubmitFeedbackRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"session_id":{"type":"string","title":"Session Id"},"message_id":{"type":"string","title":"Message Id"},"reason":{"type":"string","title":"Reason"},"user_id":{"type":"string","title":"User Id"}},"type":"object","required":["workspace_id","session_id","message_id","reason","user_id"],"title":"SubmitFeedbackRequest","description":"Request to submit feedback on an AI message."},"SummarizeRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"batch_size":{"type":"integer","title":"Batch Size","default":50},"max_concurrency":{"type":"integer","title":"Max Concurrency","default":5},"last_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Days"},"inbox_version":{"type":"string","const":"v2","title":"Inbox Version","default":"v2"}},"type":"object","required":["workspace_id"],"title":"SummarizeRequest","description":"Request body for summarization operations."},"SummarizeResponse":{"properties":{"status":{"type":"string","title":"Status"},"workspace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Id"},"processed":{"type":"integer","title":"Processed","default":0},"succeeded":{"type":"integer","title":"Succeeded","default":0},"failed":{"type":"integer","title":"Failed","default":0},"skipped":{"type":"integer","title":"Skipped","default":0}},"type":"object","required":["status"],"title":"SummarizeResponse","description":"Response for summarization operations."},"SyncContactRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"contact_id":{"type":"string","title":"Contact Id"},"updates":{"additionalProperties":true,"type":"object","title":"Updates"}},"type":"object","required":["workspace_id","contact_id","updates"],"title":"SyncContactRequest"},"SyncEntity":{"type":"string","enum":["tasks","people","templates","tags"],"title":"SyncEntity","description":"Entities that can be manually synced."},"SyncReservationCustomFieldsRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"reservation_id":{"type":"string","title":"Reservation Id"},"fields":{"additionalProperties":true,"type":"object","title":"Fields"}},"type":"object","required":["workspace_id","reservation_id","fields"],"title":"SyncReservationCustomFieldsRequest"},"SyncReservationRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"reservation_id":{"type":"string","title":"Reservation Id"},"changes":{"additionalProperties":true,"type":"object","title":"Changes"}},"type":"object","required":["workspace_id","reservation_id","changes"],"title":"SyncReservationRequest"},"SyncTaskVisitBody":{"properties":{"task_id":{"type":"string","title":"Task Id","description":"Task UUID to sync to the correct visit"}},"type":"object","required":["task_id"],"title":"SyncTaskVisitBody","description":"Request to reconcile a task's visit_tasks link with its assigned_to/scheduled_date."},"TaskBySource":{"properties":{"source":{"type":"string","title":"Source"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["source","count"],"title":"TaskBySource"},"TasksResponse":{"properties":{"totalCreated":{"type":"integer","title":"Totalcreated"},"aiCreated":{"type":"integer","title":"Aicreated"},"aiPct":{"type":"number","title":"Aipct"},"bySource":{"items":{"$ref":"#/components/schemas/TaskBySource"},"type":"array","title":"Bysource"}},"type":"object","required":["totalCreated","aiCreated","aiPct","bySource"],"title":"TasksResponse"},"TeamsAttachmentRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"contentType":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contenttype"},"contentUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contenturl"},"contentData":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contentdata"},"thumbnailUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnailurl"}},"type":"object","title":"TeamsAttachmentRequest"},"TeamsBridgeTurnRequest":{"properties":{"eventType":{"type":"string","title":"Eventtype"},"text":{"type":"string","title":"Text","default":""},"isMention":{"type":"boolean","title":"Ismention","default":false},"thread":{"$ref":"#/components/schemas/TeamsThreadRequest"},"message":{"$ref":"#/components/schemas/TeamsMessageRequest"},"teams":{"$ref":"#/components/schemas/TeamsMetadataRequest"},"history":{"anyOf":[{"$ref":"#/components/schemas/TeamsHistoryRequest"},{"type":"null"}]}},"type":"object","required":["eventType","thread","message","teams"],"title":"TeamsBridgeTurnRequest"},"TeamsHistoryMessageRequest":{"properties":{"id":{"type":"string","title":"Id"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"authorId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorid"},"authorName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorname"},"attachments":{"items":{"$ref":"#/components/schemas/TeamsAttachmentRequest"},"type":"array","title":"Attachments"},"raw":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Raw"}},"type":"object","required":["id"],"title":"TeamsHistoryMessageRequest"},"TeamsHistoryRequest":{"properties":{"messages":{"items":{"$ref":"#/components/schemas/TeamsHistoryMessageRequest"},"type":"array","title":"Messages"},"truncated":{"type":"boolean","title":"Truncated","default":false},"unavailableReason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unavailablereason"}},"type":"object","title":"TeamsHistoryRequest"},"TeamsMessageRequest":{"properties":{"id":{"type":"string","title":"Id"},"threadId":{"type":"string","title":"Threadid"},"authorId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorid"},"authorName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorname"},"attachments":{"items":{"$ref":"#/components/schemas/TeamsAttachmentRequest"},"type":"array","title":"Attachments"},"raw":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Raw"}},"type":"object","required":["id","threadId"],"title":"TeamsMessageRequest"},"TeamsMetadataRequest":{"properties":{"tenantId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenantid"},"teamId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Teamid"},"teamName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Teamname"},"channelId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channelid"},"channelName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channelname"},"conversationId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversationid"},"conversationType":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversationtype"},"serviceUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Serviceurl"},"activityId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activityid"},"userId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Userid"},"userName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"}},"type":"object","title":"TeamsMetadataRequest"},"TeamsThreadRequest":{"properties":{"id":{"type":"string","title":"Id"},"channelId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channelid"}},"type":"object","required":["id"],"title":"TeamsThreadRequest"},"TestCustomToolRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"test_params":{"additionalProperties":true,"type":"object","title":"Test Params","default":{}}},"type":"object","required":["workspace_id"],"title":"TestCustomToolRequest"},"TestStepRequest":{"properties":{"run_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Run Id"},"fixture_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Fixture Id"},"trigger_data":{"additionalProperties":true,"type":"object","title":"Trigger Data","default":{}},"triggered_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Triggered By"}},"type":"object","title":"TestStepRequest","description":"Body for POST /workflows/{id}/steps/{step_id}/test.\n\nInput lanes mirror `workflow_actions(action='test_step')`:\n- run_id: replay against a prior run's captured trigger payload and\n  completed step outputs (workspace-scoped).\n- fixture_id / trigger_data: same resolution the dry-run endpoint uses.\n- neither: empty trigger data (fine for steps without upstream inputs)."},"ToggleWorkflowRequest":{"properties":{"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"activation_override":{"anyOf":[{"$ref":"#/components/schemas/ActivationOverride"},{"type":"null"}]},"target_status":{"anyOf":[{"type":"string","enum":["ACTIVE","PAUSED"]},{"type":"null"}],"title":"Target Status"}},"type":"object","title":"ToggleWorkflowRequest","description":"Body for POST /workflows/{id}/toggle.\n\nuser_id is the operator initiating the toggle. Forwarded by the trellis-app\nproxy from the authenticated session and stamped onto paused_by when the\ntoggle pauses the workflow. Optional so legacy clients without the new body\nstill flip status (paused_by then falls back to 'unknown').\n\ntarget_status makes the toggle compare-and-set instead of a blind flip:\nthe client sends the status it intends to land on, and the route 409s\nwhen the server-computed flip disagrees (workflow changed in another\ntab / double-click raced). Optional for backward compatibility — old\nclients keep the blind flip."},"TokenListResponse":{"properties":{"tokens":{"items":{"$ref":"#/components/schemas/TokenResponse"},"type":"array","title":"Tokens"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["tokens","total"],"title":"TokenListResponse","description":"Response model for listing tokens."},"TokenResponse":{"properties":{"id":{"type":"string","title":"Id"},"token":{"type":"string","title":"Token"},"workspace_id":{"type":"string","title":"Workspace Id"},"property_id":{"type":"string","title":"Property Id"},"reservation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reservation Id"},"valid_from":{"type":"string","title":"Valid From"},"valid_until":{"type":"string","title":"Valid Until"},"language":{"type":"string","title":"Language"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"access_count":{"type":"integer","title":"Access Count"},"accessed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Accessed At"},"revoked_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Revoked At"},"created_at":{"type":"string","title":"Created At"},"manual_url":{"type":"string","title":"Manual Url"}},"type":"object","required":["id","token","workspace_id","property_id","valid_from","valid_until","language","access_count","created_at","manual_url"],"title":"TokenResponse","description":"Response model for a manual access token."},"ToolCallRequest":{"properties":{"tool_name":{"type":"string","title":"Tool Name"},"args":{"additionalProperties":true,"type":"object","title":"Args","default":{}}},"type":"object","required":["tool_name"],"title":"ToolCallRequest"},"ToolCallsResponse":{"properties":{"calls":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Calls"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["calls","total","page","page_size"],"title":"ToolCallsResponse"},"ToolPermissionEntry":{"properties":{"tool_slug":{"type":"string","title":"Tool Slug"},"permission":{"type":"string","pattern":"^(FULL_ACCESS|WITH_PERMISSION|OFF)$","title":"Permission"}},"type":"object","required":["tool_slug","permission"],"title":"ToolPermissionEntry"},"TopAgentRuns":{"properties":{"agentId":{"type":"string","title":"Agentid"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"runs":{"type":"integer","title":"Runs"},"negative":{"type":"integer","title":"Negative"}},"type":"object","required":["agentId","runs","negative"],"title":"TopAgentRuns"},"TopSkillItem":{"properties":{"name":{"type":"string","title":"Name"},"callCount":{"type":"integer","title":"Callcount"}},"type":"object","required":["name","callCount"],"title":"TopSkillItem"},"TraceDetailResponse":{"properties":{"trace":{"additionalProperties":true,"type":"object","title":"Trace"},"spans":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Spans"},"child_traces":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Child Traces","default":[]}},"type":"object","required":["trace","spans"],"title":"TraceDetailResponse"},"TraceListAggregates":{"properties":{"cost_currency":{"type":"string","const":"USD","title":"Cost Currency","default":"USD"},"cost_scale":{"type":"integer","const":6,"title":"Cost Scale","default":6},"total_cost":{"type":"number","title":"Total Cost","default":0},"total_cost_microusd":{"type":"integer","title":"Total Cost Microusd","default":0},"total_input_tokens":{"type":"integer","title":"Total Input Tokens","default":0},"total_output_tokens":{"type":"integer","title":"Total Output Tokens","default":0},"total_tokens":{"type":"integer","title":"Total Tokens","default":0},"total_duration_ms":{"type":"integer","title":"Total Duration Ms","default":0},"duration_count":{"type":"integer","title":"Duration Count","default":0},"avg_duration_ms":{"type":"number","title":"Avg Duration Ms","default":0},"error_count":{"type":"integer","title":"Error Count","default":0},"attribution":{"$ref":"#/components/schemas/UsageAttribution"}},"type":"object","required":["attribution"],"title":"TraceListAggregates"},"TraceListResponse":{"properties":{"traces":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Traces"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"},"aggregates":{"$ref":"#/components/schemas/TraceListAggregates"}},"type":"object","required":["traces","total","page","page_size","aggregates"],"title":"TraceListResponse"},"TranscriptionRequest":{"properties":{"workspace_id":{"type":"string","minLength":1,"title":"Workspace Id"},"actor_kind":{"$ref":"#/components/schemas/GatewayActorKind"},"actor_id":{"type":"string","minLength":1,"title":"Actor Id"},"trace_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Trace Id"},"session_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Session Id"},"braintrust_parent":{"anyOf":[{"type":"string","maxLength":4096,"minLength":1},{"type":"null"}],"title":"Braintrust Parent"},"audio_base64":{"type":"string","maxLength":27962028,"minLength":4,"title":"Audio Base64"},"content_type":{"type":"string","enum":["audio/aac","audio/flac","audio/m4a","audio/mp3","audio/mp4","audio/mpeg","audio/ogg","audio/wav","audio/webm","video/mp4","video/webm"],"title":"Content Type"},"filename":{"type":"string","maxLength":128,"minLength":3,"title":"Filename"},"language":{"anyOf":[{"type":"string","maxLength":35,"minLength":2},{"type":"null"}],"title":"Language"},"prompt":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Prompt"},"response_format":{"anyOf":[{"type":"string","enum":["text","json","verbose_json"]},{"type":"null"}],"title":"Response Format"},"timestamp_granularities":{"anyOf":[{"items":{"type":"string","enum":["word","segment"]},"type":"array","maxItems":2,"minItems":1},{"type":"null"}],"title":"Timestamp Granularities"}},"additionalProperties":false,"type":"object","required":["workspace_id","actor_kind","actor_id","audio_base64","content_type","filename"],"title":"TranscriptionRequest","description":"Bounded base64 audio contract with no caller-owned provider routing."},"TriggerCoordinatorFailureRequest":{"properties":{"task_id":{"type":"string","const":"agent-v3-durable-session","title":"Task Id"},"stage":{"type":"string","const":"session-runtime","title":"Stage"},"trigger_environment":{"type":"string","enum":["DEVELOPMENT","PREVIEW","PRODUCTION","STAGING"],"title":"Trigger Environment"},"trigger_session_id":{"type":"string","maxLength":512,"minLength":1,"title":"Trigger Session Id"},"trigger_run_id":{"type":"string","maxLength":512,"minLength":1,"title":"Trigger Run Id"},"workspace_id":{"anyOf":[{"type":"string","maxLength":512,"minLength":1},{"type":"null"}],"title":"Workspace Id"},"turn_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Turn Id"},"error_name":{"type":"string","maxLength":128,"minLength":1,"title":"Error Name"},"error_message":{"type":"string","maxLength":1000,"minLength":1,"title":"Error Message"}},"additionalProperties":false,"type":"object","required":["task_id","stage","trigger_environment","trigger_session_id","trigger_run_id","error_name","error_message"],"title":"TriggerCoordinatorFailureRequest","description":"An unhandled failure raised by the isolated Trigger coordinator itself."},"UnassignTagRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"entity_type":{"type":"string","title":"Entity Type"},"entity_id":{"type":"string","title":"Entity Id"},"tag_id":{"type":"string","title":"Tag Id"}},"type":"object","required":["workspace_id","entity_type","entity_id","tag_id"],"title":"UnassignTagRequest"},"UnblockCalendarRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"property_id":{"type":"string","title":"Property Id"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"}},"type":"object","required":["workspace_id","property_id","start_date","end_date"],"title":"UnblockCalendarRequest"},"UpdateAgentMemoryRequest":{"properties":{"workspace_id":{"type":"string","minLength":1,"title":"Workspace Id"},"content":{"type":"string","maxLength":4000,"minLength":1,"title":"Content"},"source_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Session Id"},"property_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Property Id"},"change_property_scope":{"type":"boolean","title":"Change Property Scope","default":false},"actor_kind":{"type":"string","enum":["agent","user"],"title":"Actor Kind","default":"agent"},"actor_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Actor User Id"},"allowed_property_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Allowed Property Ids"}},"type":"object","required":["workspace_id","content"],"title":"UpdateAgentMemoryRequest","description":"Accepted-memory update payload."},"UpdateAgentModelTierConfigRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"model_tier_config":{"additionalProperties":true,"type":"object","title":"Model Tier Config"}},"type":"object","required":["workspace_id"],"title":"UpdateAgentModelTierConfigRequest","description":"Per-agent backend model profile map keyed by stable operator tier."},"UpdateAutoJoinRulesRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"connection_id":{"type":"string","title":"Connection Id"},"auto_join_rules":{"additionalProperties":true,"type":"object","title":"Auto Join Rules"}},"type":"object","required":["workspace_id","connection_id","auto_join_rules"],"title":"UpdateAutoJoinRulesRequest"},"UpdateCustomToolRequest":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Method"},"headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Headers"},"parameters_schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters Schema"},"auth_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Type"},"auth_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Auth Config"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},"type":"object","title":"UpdateCustomToolRequest"},"UpdateEmailSettingsRequest":{"properties":{"auto_reply":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Reply"}},"type":"object","title":"UpdateEmailSettingsRequest"},"UpdateGoogleMeetConfigRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"agent_id":{"type":"string","title":"Agent Id"},"auto_join_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Join Enabled"},"default_tts_voice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Tts Voice"},"calendar_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Calendar Email"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"wake_words":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Wake Words"},"sleep_words":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Sleep Words"},"meeting_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Meeting Timeout"},"silence_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Silence Timeout"},"hybrid_diarization":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Hybrid Diarization"},"email_recap_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Email Recap Enabled"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"google_login_group_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Google Login Group Id"},"daily_ops_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Daily Ops Enabled"},"daily_ops_workflow_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Daily Ops Workflow Id"},"daily_ops_slack_channel_id":{"anyOf":[{"type":"string","maxLength":64,"minLength":1,"pattern":"^[A-Z0-9]+$"},{"type":"null"}],"title":"Daily Ops Slack Channel Id"},"voice_persona":{"anyOf":[{"type":"string","maxLength":150},{"type":"null"}],"title":"Voice Persona"},"greeting":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Greeting"},"voice_instructions":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Voice Instructions"}},"type":"object","required":["workspace_id","agent_id"],"title":"UpdateGoogleMeetConfigRequest"},"UpdateLabSessionContextRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"user_id":{"type":"string","title":"User Id"},"simulation_context":{"additionalProperties":true,"type":"object","title":"Simulation Context"}},"type":"object","required":["workspace_id","user_id","simulation_context"],"title":"UpdateLabSessionContextRequest"},"UpdateMcpServerRequest":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Name"},"config":{"anyOf":[{"$ref":"#/components/schemas/McpServerConfig"},{"type":"null"}]},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"}},"type":"object","title":"UpdateMcpServerRequest"},"UpdateScopeRequest":{"properties":{"scope_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope Label"},"autopilot_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Autopilot Enabled"},"auto_send_delay_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auto Send Delay Minutes"},"auto_send_delay_mode":{"anyOf":[{"type":"string","pattern":"^(fixed|dynamic)$"},{"type":"null"}],"title":"Auto Send Delay Mode"},"auto_send_delay_min_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auto Send Delay Min Minutes"},"auto_send_delay_max_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auto Send Delay Max Minutes"},"auto_send_delay_seconds_per_100_chars":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auto Send Delay Seconds Per 100 Chars"},"auto_send_delay_length_rules":{"anyOf":[{"items":{"additionalProperties":{"type":"integer"},"type":"object"},"type":"array"},{"type":"null"}],"title":"Auto Send Delay Length Rules"},"auto_send_delay_request_type_minutes":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Auto Send Delay Request Type Minutes"},"message_buffer_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Message Buffer Seconds"},"mark_conversation_done_on_autosend":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Mark Conversation Done On Autosend"},"disabled_prompt_sections":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Disabled Prompt Sections"},"voice_widget_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Voice Widget Enabled"},"private":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Private"},"tasks_access":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Tasks Access"},"shifts_access":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Shifts Access"},"unified_context_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Unified Context Enabled"}},"type":"object","title":"UpdateScopeRequest"},"UpdateSkillRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"auto_attach_to_tools":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Auto Attach To Tools"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Id"}},"type":"object","title":"UpdateSkillRequest"},"UpdateSuiteRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","title":"UpdateSuiteRequest"},"UpdateTagRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"is_urgent_for_ai":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Urgent For Ai"}},"type":"object","title":"UpdateTagRequest"},"UpdateWorkflowFixtureRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"trigger_data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Trigger Data"},"is_default":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Default"}},"type":"object","title":"UpdateWorkflowFixtureRequest"},"UpdateWorkflowRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"trigger_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger Type"},"trigger_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Trigger Config"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"cooldown_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cooldown Minutes"},"max_triggers_per_day":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Triggers Per Day"},"notify_when_draft":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Notify When Draft"},"draft_notification_interval_minutes":{"anyOf":[{"type":"integer","maximum":43200.0,"minimum":15.0},{"type":"null"}],"title":"Draft Notification Interval Minutes"},"agent_permissions":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Agent Permissions"},"folder_id":{"anyOf":[{"type":"string","format":"uuid"},{"$ref":"#/components/schemas/_Unset"},{"type":"null"}],"title":"Folder Id","default":"UNSET"},"agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"$ref":"#/components/schemas/_Unset"},{"type":"null"}],"title":"Agent Id","default":"UNSET"},"activation_override":{"anyOf":[{"$ref":"#/components/schemas/ActivationOverride"},{"type":"null"}]}},"type":"object","title":"UpdateWorkflowRequest"},"UploadResponse":{"properties":{"id":{"type":"string","title":"Id"},"url":{"type":"string","title":"Url"},"filename":{"type":"string","title":"Filename"}},"type":"object","required":["id","url","filename"],"title":"UploadResponse"},"UsageAttribution":{"properties":{"cost":{"$ref":"#/components/schemas/AttributionCoverage"},"input_tokens":{"$ref":"#/components/schemas/AttributionCoverage"},"output_tokens":{"$ref":"#/components/schemas/AttributionCoverage"},"total_tokens":{"$ref":"#/components/schemas/AttributionCoverage"},"duration":{"$ref":"#/components/schemas/AttributionCoverage"}},"type":"object","required":["cost","input_tokens","output_tokens","total_tokens","duration"],"title":"UsageAttribution"},"UserRow":{"properties":{"userId":{"type":"string","title":"Userid"},"name":{"type":"string","title":"Name"},"aiInteractions":{"type":"integer","title":"Aiinteractions"},"shifts":{"type":"integer","title":"Shifts"},"tasksCreated":{"type":"integer","title":"Taskscreated"},"kbActivity":{"type":"integer","title":"Kbactivity"},"visitsCompleted":{"type":"integer","title":"Visitscompleted"},"tasksCompleted":{"type":"integer","title":"Taskscompleted"}},"type":"object","required":["userId","name","aiInteractions","shifts","tasksCreated","kbActivity","visitsCompleted","tasksCompleted"],"title":"UserRow"},"ValidateStepsRequest":{"properties":{"steps":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Steps"},"trigger_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger Type"},"trigger_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Trigger Config"}},"type":"object","required":["steps"],"title":"ValidateStepsRequest"},"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"},"VoicePreviewRequest":{"properties":{"voice_id":{"type":"string","maxLength":80,"minLength":2,"title":"Voice Id"},"language":{"anyOf":[{"type":"string","maxLength":16,"minLength":2},{"type":"null"}],"title":"Language"},"voice_speed":{"type":"number","maximum":2.0,"minimum":0.5,"title":"Voice Speed","default":1.0}},"type":"object","required":["voice_id"],"title":"VoicePreviewRequest"},"VoiceWebTestCleanupRequest":{"properties":{"session_id":{"type":"string","maxLength":80,"minLength":1,"title":"Session Id"}},"type":"object","required":["session_id"],"title":"VoiceWebTestCleanupRequest"},"VoiceWebTestRequest":{"properties":{"agent_id":{"type":"string","maxLength":80,"minLength":1,"title":"Agent Id"},"voice_id":{"anyOf":[{"type":"string","maxLength":80,"minLength":2},{"type":"null"}],"title":"Voice Id"},"language_mode":{"type":"string","enum":["auto","fixed"],"title":"Language Mode"},"fixed_language":{"anyOf":[{"type":"string","maxLength":16,"minLength":2},{"type":"null"}],"title":"Fixed Language"},"voice_instructions":{"anyOf":[{"type":"string","maxLength":20000},{"type":"null"}],"title":"Voice Instructions"},"opening_greeting":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Opening Greeting"},"agent_settings":{"additionalProperties":true,"type":"object","title":"Agent Settings"}},"type":"object","required":["agent_id","language_mode","agent_settings"],"title":"VoiceWebTestRequest"},"WarmBatchRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"user_id":{"type":"string","title":"User Id"},"agent_ids":{"items":{"type":"string"},"type":"array","title":"Agent Ids"},"model_id":{"type":"string","title":"Model Id","default":"default"},"include_all_workspace_agents":{"type":"boolean","title":"Include All Workspace Agents","default":false}},"type":"object","required":["workspace_id","user_id"],"title":"WarmBatchRequest","description":"Batch warm request for workspace-level agent startup planning."},"WebhookResponse":{"properties":{"status":{"type":"string","title":"Status","description":"Always 'accepted' for webhooks","default":"accepted"},"webhook_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Id","description":"ID for tracking"}},"type":"object","title":"WebhookResponse","description":"Response to webhook requests."},"WfCategoryItem":{"properties":{"category":{"type":"string","title":"Category"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["category","count"],"title":"WfCategoryItem"},"WfComplexityItem":{"properties":{"score":{"type":"integer","title":"Score"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["score","count"],"title":"WfComplexityItem"},"WfListItem":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"complexity":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Complexity"},"status":{"type":"string","title":"Status"},"totalRuns":{"type":"integer","title":"Totalruns"},"completedRuns":{"type":"integer","title":"Completedruns"},"failedRuns":{"type":"integer","title":"Failedruns"}},"type":"object","required":["id","name","type","category","complexity","status","totalRuns","completedRuns","failedRuns"],"title":"WfListItem"},"WfTypeItem":{"properties":{"type":{"type":"string","title":"Type"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["type","count"],"title":"WfTypeItem"},"WorkflowVariableCreate":{"properties":{"name":{"type":"string","maxLength":128,"pattern":"^[a-z][a-z0-9_]*$","title":"Name"},"value_type":{"type":"string","title":"Value Type","description":"One of: ['BOOLEAN', 'JSON', 'NUMBER', 'STRING', 'UUID']"},"value":{"title":"Value"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_secret":{"type":"boolean","title":"Is Secret","default":false}},"type":"object","required":["name","value_type","value"],"title":"WorkflowVariableCreate"},"WorkflowVariableUpdate":{"properties":{"value":{"anyOf":[{},{"$ref":"#/components/schemas/_Unset"}],"title":"Value","default":"UNSET"},"description":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/_Unset"},{"type":"null"}],"title":"Description","default":"UNSET"},"is_secret":{"anyOf":[{"type":"boolean"},{"$ref":"#/components/schemas/_Unset"},{"type":"null"}],"title":"Is Secret","default":"UNSET"},"value_type":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/_Unset"},{"type":"null"}],"title":"Value Type","default":"UNSET"}},"type":"object","title":"WorkflowVariableUpdate"},"WorkflowsResponse":{"properties":{"activeWorkflows":{"type":"integer","title":"Activeworkflows"},"totalWorkflows":{"type":"integer","title":"Totalworkflows"},"totalRuns":{"type":"integer","title":"Totalruns"},"completedRuns":{"type":"integer","title":"Completedruns"},"failedRuns":{"type":"integer","title":"Failedruns"},"failureRate":{"type":"number","title":"Failurerate"},"byType":{"items":{"$ref":"#/components/schemas/WfTypeItem"},"type":"array","title":"Bytype"},"byCategory":{"items":{"$ref":"#/components/schemas/WfCategoryItem"},"type":"array","title":"Bycategory"},"byComplexity":{"items":{"$ref":"#/components/schemas/WfComplexityItem"},"type":"array","title":"Bycomplexity"},"list":{"items":{"$ref":"#/components/schemas/WfListItem"},"type":"array","title":"List"}},"type":"object","required":["activeWorkflows","totalWorkflows","totalRuns","completedRuns","failedRuns","failureRate","byType","byCategory","byComplexity","list"],"title":"WorkflowsResponse"},"WorkspaceSlackNotificationChannelRequest":{"properties":{"notification_type":{"type":"string","title":"Notification Type"},"channel_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel Id"}},"type":"object","required":["notification_type"],"title":"WorkspaceSlackNotificationChannelRequest"},"WorkspaceSlackNotificationRequest":{"properties":{"type":{"type":"string","title":"Type","default":""},"title":{"type":"string","title":"Title"},"message":{"type":"string","title":"Message"},"entity_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Type"},"entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Id"},"source_event_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Event Id"},"data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Data"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"url_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url Label"}},"type":"object","required":["title","message"],"title":"WorkspaceSlackNotificationRequest"},"WorkspaceSlackSettingsRequest":{"properties":{"default_channel_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Channel Id"}},"type":"object","title":"WorkspaceSlackSettingsRequest"},"WorkspaceSlackTestMessageRequest":{"properties":{"channel_id":{"type":"string","title":"Channel Id"},"text":{"type":"string","title":"Text","default":"Test message from Trellis."}},"type":"object","required":["channel_id"],"title":"WorkspaceSlackTestMessageRequest"},"_Unset":{"type":"string","enum":["UNSET"],"title":"_Unset"},"routes__v1__ai__agent_mcp__TestConnectionRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"url":{"type":"string","title":"Url"},"headers":{"additionalProperties":{"type":"string"},"type":"object","title":"Headers","default":{}},"transport":{"type":"string","title":"Transport","default":"streamable-http"}},"type":"object","required":["workspace_id","url"],"title":"TestConnectionRequest"},"routes__v1__ai__mcp__TestConnectionRequest":{"properties":{"url":{"type":"string","title":"Url"},"headers":{"additionalProperties":{"type":"string"},"type":"object","title":"Headers","default":{}},"transport":{"type":"string","title":"Transport","default":"streamable-http"}},"type":"object","required":["url"],"title":"TestConnectionRequest"},"routes__v1__public__manual__ErrorResponse":{"properties":{"error":{"type":"string","title":"Error"},"code":{"type":"string","title":"Code"}},"type":"object","required":["error","code"],"title":"ErrorResponse","description":"Error response model."},"routes__v1__public__shared_tasks__ErrorResponse":{"properties":{"error":{"type":"string","title":"Error"},"code":{"type":"string","title":"Code"}},"type":"object","required":["error","code"],"title":"ErrorResponse"}}},"tags":[{"name":"Agent Runtime","description":"Agent chat, direct invocation, generated replies, runtime sessions, and agent configuration APIs."},{"name":"Agent Tools and MCP","description":"First-party tool registry, custom tools, agent scopes, MCP servers, and tool discovery/control APIs."},{"name":"Agent Observability","description":"AI traces, sessions, tool-call analytics, span search, anomaly detection, and LangSmith quality hooks."},{"name":"Labs and Evals","description":"Labs simulations, suites, sandbox runs, and reproducible agent-quality evaluation APIs."},{"name":"Workflows and Automation","description":"Workflow definitions, workflow runs, variables, approvals, scheduled actions, and cron automation."},{"name":"Messaging and Voice","description":"Guest messaging, ResponseFlow, voice agents, ElevenLabs, Recall meeting bots, and calendar bridge APIs."},{"name":"Integrations and Sync","description":"PMS sync, imports, OAuth setup, Slack/Teams/Telegram/Google Chat/connected app/AgentMail integrations."},{"name":"Webhooks and Events","description":"External webhook ingress, Fly lifecycle webhooks, calendar webhooks, and event callback APIs."},{"name":"Knowledge and Memory","description":"Knowledge-base vectors, manuals, manual tokens, agent memory, files, skills, and document access."},{"name":"Operations and Analytics","description":"Activity, blockers, insights, tags, platform stats, operational rollbacks, and workspace analytics."},{"name":"Internal Admin","description":"Internal platform routes for database events, translations, PMS maintenance, and admin utilities."},{"name":"Public and Health","description":"Health checks and public token-backed guest, shared-task, and manual endpoints."},{"name":"Onboarding and Setup","description":"Workspace onboarding, setup checks, and guided configuration APIs."}],"x-trellis-api-docs":{"categorySource":"trellis-api/services/openapi_docs.py","categoryCount":13,"uncategorizedRawTags":[]},"x-trellis-agent-tools":{"source":"services.ai.tools.v2","totalToolCount":137,"internalToolCount":7,"categoryCount":58,"categories":{"agent_email":{"toolCount":2,"internalToolCount":0,"tools":["email_actions","read_agent_email"]},"agent_followups":{"toolCount":1,"internalToolCount":0,"tools":["follow_up_actions"]},"artifacts":{"toolCount":2,"internalToolCount":0,"tools":["artifact_actions","read_artifacts"]},"browser":{"toolCount":14,"internalToolCount":0,"tools":["browser_action","browser_ask_operator","browser_click","browser_extract","browser_finish","browser_navigate","browser_observe","browser_request_approval","browser_start","browser_stop","browser_type","browser_type_credential","browser_upload_file","manage_credentials"]},"claims":{"toolCount":2,"internalToolCount":0,"tools":["claim_actions","read_claims"]},"code":{"toolCount":2,"internalToolCount":0,"tools":["execute_code","install_package"]},"contacts":{"toolCount":2,"internalToolCount":0,"tools":["contact_actions","read_contacts"]},"context":{"toolCount":2,"internalToolCount":0,"tools":["read_context","read_meeting_transcript"]},"control_agents":{"toolCount":2,"internalToolCount":0,"tools":["agent_actions","read_agents"]},"control_integrations":{"toolCount":2,"internalToolCount":0,"tools":["integration_actions","read_integrations"]},"control_memory":{"toolCount":2,"internalToolCount":0,"tools":["agent_memory_actions","read_agent_memory"]},"control_runtime":{"toolCount":1,"internalToolCount":0,"tools":["run_agent_runtime"]},"control_scopes":{"toolCount":2,"internalToolCount":0,"tools":["agent_scope_actions","read_agent_scopes"]},"control_team":{"toolCount":2,"internalToolCount":0,"tools":["read_team","team_actions"]},"control_workspace":{"toolCount":2,"internalToolCount":0,"tools":["read_workspace","workspace_actions"]},"conversation_goals":{"toolCount":1,"internalToolCount":0,"tools":["conversation_goal_actions"]},"deals":{"toolCount":2,"internalToolCount":0,"tools":["deal_actions","read_deals"]},"delegation":{"toolCount":1,"internalToolCount":0,"tools":["delegate"]},"departments":{"toolCount":2,"internalToolCount":0,"tools":["department_actions","read_departments"]},"escalation":{"toolCount":3,"internalToolCount":0,"tools":["escalate_to_manager","no_reply_needed","propose_reply"]},"escalations":{"toolCount":1,"internalToolCount":0,"tools":["escalation_actions"]},"files":{"toolCount":2,"internalToolCount":0,"tools":["file_actions","read_files"]},"generative_ui":{"toolCount":4,"internalToolCount":0,"tools":["present_assistant_quick_actions","present_entity_list","render_map","render_schedule"]},"guesty":{"toolCount":2,"internalToolCount":1,"tools":["guesty_task_actions","read_guesty_payouts"]},"hostaway":{"toolCount":3,"internalToolCount":1,"tools":["get_hostaway_finance_report","hostaway_actions","hostaway_listing_copy_update"]},"image_generation":{"toolCount":1,"internalToolCount":0,"tools":["generate_image"]},"inbox":{"toolCount":3,"internalToolCount":0,"tools":["conversation_actions","inbox_actions","read_inbox"]},"interactions":{"toolCount":2,"internalToolCount":0,"tools":["ask_human","ask_user"]},"kb":{"toolCount":3,"internalToolCount":0,"tools":["activate_skill","knowledge_actions","read_knowledge"]},"linear":{"toolCount":10,"internalToolCount":0,"tools":["add_linear_comment","assign_linear_issue","create_linear_issue","create_linear_project","get_linear_issue","list_linear_issues","list_linear_members","list_linear_projects","send_linear_customer_update","send_linear_origin_update"]},"manual_tokens":{"toolCount":1,"internalToolCount":0,"tools":["manual_token_actions"]},"maps":{"toolCount":1,"internalToolCount":0,"tools":["maps"]},"memory":{"toolCount":1,"internalToolCount":0,"tools":["memory_actions"]},"patches":{"toolCount":1,"internalToolCount":0,"tools":["patch_actions"]},"photo_verification":{"toolCount":1,"internalToolCount":0,"tools":["verify_photo"]},"plans":{"toolCount":2,"internalToolCount":0,"tools":["plan_actions","read_plans"]},"platform_agent":{"toolCount":2,"internalToolCount":0,"tools":["query_database","search_context_graph"]},"platform_observability":{"toolCount":2,"internalToolCount":0,"tools":["read_axiom_logs","read_sentry"]},"pricing":{"toolCount":2,"internalToolCount":0,"tools":["pricing_actions","read_pricing"]},"properties":{"toolCount":3,"internalToolCount":0,"tools":["property_actions","read_properties","video_screenshot"]},"ramp":{"toolCount":2,"internalToolCount":0,"tools":["ramp_actions","read_ramp"]},"reservations":{"toolCount":4,"internalToolCount":0,"tools":["read_relocation_options","read_reservations","reservation_actions","reservation_inquiry_actions"]},"reviews":{"toolCount":2,"internalToolCount":0,"tools":["read_reviews","review_actions"]},"self_settings":{"toolCount":2,"internalToolCount":0,"tools":["get_my_settings","update_my_settings"]},"slack":{"toolCount":5,"internalToolCount":3,"tools":["meeting_ops_actions","read_slack","read_workspace_slack","slack_actions","slack_workspace_actions"]},"smart_devices":{"toolCount":1,"internalToolCount":1,"tools":["smart_device_actions"]},"tasks":{"toolCount":5,"internalToolCount":1,"tools":["daily_ops_plan_actions","read_checkin_cleaning_audit","read_tasks","read_visits","task_actions"]},"telegram":{"toolCount":2,"internalToolCount":0,"tools":["read_telegram","telegram_actions"]},"templates":{"toolCount":2,"internalToolCount":0,"tools":["read_templates","template_actions"]},"traces":{"toolCount":2,"internalToolCount":0,"tools":["read_sessions","read_traces"]},"upsells":{"toolCount":1,"internalToolCount":0,"tools":["upsell_actions"]},"user_management":{"toolCount":2,"internalToolCount":0,"tools":["read_users","user_actions"]},"video_generation":{"toolCount":2,"internalToolCount":0,"tools":["generate_property_reel","generate_video"]},"voice":{"toolCount":2,"internalToolCount":0,"tools":["get_call_result","initiate_voice_call"]},"web":{"toolCount":1,"internalToolCount":0,"tools":["web"]},"whatsapp":{"toolCount":1,"internalToolCount":0,"tools":["read_whatsapp"]},"workflows":{"toolCount":2,"internalToolCount":0,"tools":["read_workflows","workflow_actions"]},"workforce":{"toolCount":3,"internalToolCount":0,"tools":["read_shifts","read_workforce","workforce_actions"]}},"tools":[{"name":"email_actions","category":"agent_email","description":"Send or reply to email from the agent's AgentMail inbox.\n\nActions:\n  - \"send\": Compose a new email. Requires `to`, `subject`, `body`. Optional `cc`.\n    `to` and `cc` accept comma-separated addresses.\n  - \"reply\": Reply to an existing thread. Requires `thread_id` (from read_ag...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"read_agent_email","category":"agent_email","description":"Read the agent's own email inbox (AgentMail).\n\nUse this to check if you received an email, search for specific emails,\nor read email thread contents. This reads the live AgentMail inbox, not\nthe Trellis guest conversation inbox.\n\nArgs:\n    filters: Optional filters (all option...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"follow_up_actions","category":"agent_followups","description":"Create, list, update, or cancel durable future Agent work.\n\nA Follow-up starts a fresh Agent run later with current context. In a\nConversation, its normal purpose is to send the next useful message in that\nsame Conversation. Do not create one only to poll an escalation or inte...","tags":[],"internal":false,"sideEffect":"internal_write","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":["cancel","create","list","update"]},{"name":"artifact_actions","category":"artifacts","description":"Create or update Trellis artifacts and live dashboard reports.\n\nUse `create_dashboard` / `update_dashboard` with a JSON artifact_spec for\napp-rendered dashboards. Use `create` / `update` with html_content only for\nHTML or PDF artifacts. Detailed dashboard guidance lives in the...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[],"publicSummary":"Create or update live Trellis artifacts, dashboard reports, and public forms.","publicActions":["create","update","create_dashboard","update_dashboard","create_form"]},{"name":"read_artifacts","category":"artifacts","description":"List all artifacts created in this session and by this agent across recent sessions.\n\nUse this to check what artifacts already exist before creating a new one.\nIf the user asks to modify an existing artifact, find its artifact_id here\nand use artifact_actions(action=\"update\")...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"browser_action","category":"browser","description":"Run a safe low-level browser action.\n\nUse this for agent-browser CLI parity actions that do not need a dedicated\ntool: wait, get, screenshot, press, hover, scroll, focus, select, check,\nand uncheck. Do not use it for credentials, uploads, approvals, or stopping\nsessions; those...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"browser_ask_operator","category":"browser","description":"Ask the operator for input while preserving browser session state.\n\nUse this when browser_observe shows CAPTCHA, 2FA, login verification, or\nbrowser_state.needs_handoff. Do not only tell the user to take over; call\nthis tool so the session is paused and resumable.","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"browser_click","category":"browser","description":"Click an observed browser element.\n\nSave, Submit, Publish, Confirm, Done, and similar external-site mutation\ncontrols require browser_request_approval before clicking. A chat message\napproving a save is not enough unless it approves an existing\nbrowser_request_approval pause f...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"browser_extract","category":"browser","description":"Extract structured information from the current browser page.\n\nFor single-shot extraction requests, if this returns enough facts to answer\nthe user, call browser_finish next and then browser_stop. Do not navigate\nagain to look for extra facts unless the extraction is empty, co...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[],"publicSummary":"Extract structured values from the current browser page or final form state."},{"name":"browser_finish","category":"browser","description":"Finish a completed direct browser-control task before the final answer.\n\nDo not use this for setup/navigation/login/inspection turns where the user\nis likely to continue working in the same external browser session.","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"browser_navigate","category":"browser","description":"Navigate an active direct-control browser session to a URL.","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"browser_observe","category":"browser","description":"Observe the current browser state for a direct-control session.","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"browser_request_approval","category":"browser","description":"Request operator approval before a high-impact browser action.\n\nUse this tool, not a plain final-answer question, when browser work needs\napproval before saving or submitting. If the user asked you to stop before\nsaving for approval, call this after edits and observation befor...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[],"publicSummary":"Request operator approval before a browser action that would submit, publish, charge, send, or mutate an external site."},{"name":"browser_start","category":"browser","description":"Start or reuse an external browser session for direct main-agent control.\n\nOn later turns, use this to resume/reuse the active browser session for the\nsame domain/context/start_url instead of asking the user for a\nbrowser_session_id.\nFor login requests, do not ask the user for...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[],"publicSummary":"Start or reuse an authenticated external website browser session for OTA, PMS, marketplace, or admin UI automation; not for Trellis records, files, code, or general search."},{"name":"browser_stop","category":"browser","description":"Stop a completed browser session unless follow-up browser work is likely.","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"browser_type","category":"browser","description":"Type text into an observed browser element.\n\nExternal/admin text fields can autosave. If approval-before-save was\nrequested or the edit is high impact, do not type into a persistent field\nunless the exact change is already approved or you have confirmed the field\nwill not pers...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"browser_type_credential","category":"browser","description":"Type a saved site credential field without exposing its value.","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"browser_upload_file","category":"browser","description":"Upload staged/allowlisted files into an observed file input.","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"manage_credentials","category":"browser","description":"Manage stored website login credentials and API keys with a thin schema.\n\nlist returns both LOGIN credentials (browser automation) and API_KEY rows\n(used by `{{secrets.<label>}}` substitution in http_request). API_KEY\nvalues and LOGIN secrets are never returned.\n\nFor website l...","tags":[],"internal":false,"sideEffect":"internal_write","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":["delete","list","save","save_auth"]},{"name":"claim_actions","category":"claims","description":"Create / update / delete financial claims for damage recovery and dispute\nresolution. Use this for guest damage cost recovery, vendor refund disputes,\nOTA chargeback handling, late checkout fee compensation, lost-key replacement\nfees, and cleaning damage charges. For Airbnb/OT...","tags":[],"internal":false,"sideEffect":"internal_write","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"read_claims","category":"claims","description":"Query claims with flexible filtering and aggregation.\nReturns ALL matching results (large results are auto-saved to file).\n\nArgs:\n    filters: Filter criteria (all optional, combine as needed):\n        - id: Specific claim UUID, or list of UUIDs for batch lookup\n        - stat...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"execute_code","category":"code","description":"Execute Python or Bash code in a sandboxed workbench.\n\nThe working directory contains all session files, including data files\nauto-saved from previous tool calls (CSV/JSON). Common packages\n(pandas, numpy, matplotlib, openpyxl) are available.\n\nUse this for data analysis, chart...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"install_package","category":"code","description":"Install one or more pip packages for use in execute_code.\n\nUse this when you need packages that aren't pre-installed\n(e.g. scikit-learn, requests, beautifulsoup4).\n\nArgs:\n    package_names: Packages to install (e.g. [\"scikit-learn\", \"requests\", \"beautifulsoup4\"])\n\nReturns:...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"contact_actions","category":"contacts","description":"Create/update a contact in the Trellis Contacts page, or group people under a company — save vendors, utility/service contacts, owners, or leads with their phone numbers and emails.\n\nWrites to the browsable Contacts store (contacts_v2). Use this instead of\nagent memory when as...","tags":[],"internal":false,"sideEffect":"internal_write","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[],"publicSummary":"Create or update a contact in the browsable Contacts page — save vendors, utility/service contacts, owners, or leads with phone numbers and emails.","publicActions":["create","update"]},{"name":"read_contacts","category":"contacts","description":"Look up people in the Trellis Contacts page — guests, leads, owners, vendors, and utility/service contacts.\n\nUse this to find a contact (and their phone numbers / emails) before updating\nit, to check whether a vendor or utility contact already exists, or to answer\n\"what's the...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[],"publicSummary":"Look up people in the Contacts page — guests, leads, owners, vendors, and utility/service contacts with their phone numbers and emails."},{"name":"read_context","category":"context","description":"Read workspace context, recent activity, pulse reports, or tags for operational grounding.\n\nArgs:\n    type: What context to retrieve:\n        - \"summary\": Current workspace state (inbox, reservations, tasks by department)\n        - \"activity\": Recent activity feed since a time...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"read_meeting_transcript","category":"context","description":"Read a persisted meeting transcript plus Slack clarification context.\n\nPass a meeting UUID when known. Otherwise this reads the latest ended\nmeeting owned by the current agent. Use the returned meeting_id when\ninvoking a meeting-backed workflow tool. The call fails closed inst...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"agent_actions","category":"control_agents","description":"Create / update / delete AI agents in the workspace. Use this to spin\nup a new specialist agent (with custom identity, behavior, model, language,\nvoice, and avatar), update an existing agent's identity or persona,\nconfigure pulse-mode (proactive scheduled background runs at a...","tags":[],"internal":false,"sideEffect":"internal_write","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"read_agents","category":"control_agents","description":"Query AI agents in the workspace.\n\nfilters:\n  id: str - Get a single agent by ID\n  name: str - Search by name (case-insensitive)\n  status: str - ACTIVE or INACTIVE\n\ninclude (list of extra data to fetch):\n  \"full_instructions\" - Return full identity and behavior text (not trunc...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"integration_actions","category":"control_integrations","description":"Manage integrations in the workspace.\n\nActions:\n  status - Get detailed sync status for an integration (requires integration_id)\n  sync - Trigger sync for a specific entity (requires integration_id + sync_entity)\n  full_sync - Trigger full sync for all entities (requires integ...","tags":[],"internal":false,"sideEffect":"external_write","workflowSafe":true,"requiresHumanApproval":true,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"read_integrations","category":"control_integrations","description":"Query integrations connected to the workspace.\n\nfilters:\n  id: str - Get a single integration by ID\n  provider: str - Filter by provider name (krossbooking, hostaway, guesty, twilio, etc.)\n  status: str - Filter by sync_status. Valid values: SUCCESS | FAILED | IN_PROGRESS\n\ninc...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"agent_memory_actions","category":"control_memory","description":"Manage memories for a specific agent.\n\nActions:\n  create - Add a new memory (requires content)\n  update - Update memory content (requires memory_id + content)\n  delete - Delete a specific memory (requires memory_id)\n  clear - Delete ALL memories for the agent (destructive!)\n\nS...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"read_agent_memory","category":"control_memory","description":"Read memories for a specific agent.\n\nArgs:\n    agent_id: The agent whose memories to read (required)\n    filters:\n      id: str - Get a single memory by ID\n      search: str - Search memory content (case-insensitive)\n      source: str - Filter by source (MANUAL, LEARNED)...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"run_agent_runtime","category":"control_runtime","description":"Invoke an agent runtime with a prompt and get the result.\n\nThis runs an agent to completion (non-streaming) and returns the\nfinal response text along with any tool calls made.\n\nArgs:\n    prompt: The message/instruction to send to the agent\n    agent_id: Agent to invoke (uses w...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"agent_scope_actions","category":"control_scopes","description":"Manage scopes for a specific agent.\n\nActions:\n  create - Create a new scope (requires scope_type, scope_ref_id, scope_label)\n    scope_type: INBOX, ROLE, CONTACT, or MEMBER\n    scope_ref_id: contact_type.id (INBOX), role name (ROLE), contact.id (CONTACT/MEMBER)\n    scope_label...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"read_agent_scopes","category":"control_scopes","description":"Read scopes for a specific agent.\n\nArgs:\n    agent_id: The agent whose scopes to read (required)\n    scope_id: Optional specific scope ID to read (returns single scope with full detail)\n    include_tool_permissions: Whether to include tool permissions for each scope","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"read_team","category":"control_team","description":"Query workspace team members.\n\nEach result has TWO IDs:\n  - `user_id` (auth.users.id): the canonical person identity. Use this\n    when assigning the member to a task, mentioning them, or anywhere\n    else the rest of Trellis speaks \"user\". `task_actions(assigned_to_id=...)`...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"team_actions","category":"control_team","description":"Update / deactivate / reactivate workspace team members and change\ntheir permission role. Use this for role promotions and demotions\n(ADMIN / MANAGER / MEMBER / VIEWER), suspending a member's access\nwithout revoking the invite, and reinstating a previously deactivated\nmember....","tags":[],"internal":false,"sideEffect":"internal_write","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"read_workspace","category":"control_workspace","description":"Read workspace configuration and settings.\n\ninclude:\n  \"contact_types\" - All contact types and their settings\n  \"tags\" - All tags in the workspace\n  \"phone_numbers\" - Phone numbers (Twilio/WhatsApp)\n  \"api_keys\" - Active workspace API keys (names only, not values)\n  \"stats\" -...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"workspace_actions","category":"control_workspace","description":"Manage workspace settings and configuration.\n\nActions:\n  update_settings - Update workspace settings (pass settings dict with keys to update)\n    Supported keys: name, timezone, language, currency, default_language,\n    default_currency. default_language/default_currency are a...","tags":[],"internal":false,"sideEffect":"internal_write","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"conversation_goal_actions","category":"conversation_goals","description":"Create, inspect, update, complete, or cancel a Conversation Goal.\n\nA Goal is a durable outcome that every later ResponseFlow run can see. Use\n``observe`` to inspect natural replies without contacting someone only for\nthe Goal. Use ``pursue`` when the Agent may act under curren...","tags":[],"internal":false,"sideEffect":"internal_write","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":["cancel","complete","create","list","update"]},{"name":"deal_actions","category":"deals","description":"Manage the deals kanban — sales pipelines, stages, property cards, notes,\nand linked contacts. Use this for owner-acquisition pipeline management,\nmoving a property lead through qualification stages (qualif → proposal →\nwon / lost), capturing deal notes after a site visit, lin...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"read_deals","category":"deals","description":"Query the deals kanban (property pipelines) with related data.\n\nArgs:\n    filters: Filter criteria (all optional):\n        - pipeline_id: Specific pipeline UUID (default: workspace default pipeline)\n        - pipeline_name: Find pipeline by name\n        - stage_id: Filter item...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"delegate","category":"delegation","description":"Delegate a task to a sub-agent — by name, ad-hoc, or to a builder specialist.\n\nASYNC DELEGATION — this tool returns immediately while the sub-agent runs in\nthe background. Your turn should END after calling this tool. Do NOT claim\nthe task was completed. Do NOT summarize or in...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"department_actions","category":"departments","description":"Create / update / delete operational departments that scope tasks, teams,\nand shifts. Use this to set up a new field ops category (cleaning,\nmaintenance, inspection, front desk), reassign a department's color / icon\nin the calendar and Kanban boards, mark a department as field...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"read_departments","category":"departments","description":"Query workspace departments.\n\nArgs:\n    filters: Filter criteria (all optional):\n        - department_id: str — specific department UUID\n        - name: str — partial match on department name (case-insensitive)\n        - is_field_ops: bool — filter by field ops flag\n        -...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"escalate_to_manager","category":"escalation","description":"Ask a human colleague for help with a situation you cannot handle alone.\n\nUse this tool when you need human judgment, a decision you are not\nauthorized to make, or information that is not available to you.\nAfter calling this tool, do NOT write any additional text.\n\nThink of th...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"no_reply_needed","category":"escalation","description":"Indicate that no host reply is needed for this message.\n\nTwo categories qualify:\n\n**A. Conversation-closure acknowledgements** — the prior OUTBOUND message\nalready made further host replies logically redundant and the latest\ninbound is just the contact confirming that close:\n-...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"propose_reply","category":"escalation","description":"Write the exact outbound message for this conversation.\n\nThe `response` must read as if a real human from the host company personally\nwrote it to the guest or contact. For guest conversations, write host to\nguest. For other conversations, write person to person. Use only natur...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"escalation_actions","category":"escalations","description":"Search, create, enrich, or evidence-gate resolution of manager ownership.\n\nSearch before creating when current context shows related active ownership.\nReuse an existing escalation with update when it owns the same need. Create\nbinds to the current ResponseFlow turn or exact wo...","tags":[],"internal":false,"sideEffect":"internal_write","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":["create","search","update"]},{"name":"file_actions","category":"files","description":"Write or delete files in the current session.\n\nArgs:\n    action: The operation to perform:\n        - \"write\": Create or overwrite a file (requires file_name + content)\n        - \"delete\": Delete a file (requires file_name)\n\n    file_name: Name of the file\n    content: File con...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"read_files","category":"files","description":"Read or list files in the current session.\n\nWhen listing (no file_name), returns files sorted most-recent-first.\nThe user message includes [Attached files: ...] with the exact file names\nuploaded with that message — use those names for attach_file operations.\n\nArgs:\n    file_n...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"present_assistant_quick_actions","category":"generative_ui","description":"Render up to three useful quick actions after your reply.\n\nUse only when the next step is genuinely helpful. Do not add filler.\n\nAction kinds:\n    * prompt: sends `prompt` as the next user message.\n    * link: opens an internal Trellis route in `href` (must start with /).\n\nRul...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"present_entity_list","category":"generative_ui","description":"Render a list of entities inline in your reply using the same row\ncomponents used on the corresponding entity page (e.g. PropertyListItem\non /properties, TaskRow on /tasks).\n\nUse this tool when a rich, inspectable list is more useful than prose or a\ncompact markdown list. Sing...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"render_map","category":"generative_ui","description":"Render an interactive map widget in the chat with markers, legends, and optional routes.\n\nUse this tool when the user asks to visualize locations, routes, schedules, or any\ngeographic data on a map. Always pair it with a short text explanation.\n\nArgs:\n    markers: List of map...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"render_schedule","category":"generative_ui","description":"Render the visit schedule as an interactive table ⇄ map artifact in the chat.\n\nUse this whenever the user asks to see, plan, or generate the schedule of\nvisits for a day or range — e.g. \"show me today's visits\", \"what's scheduled\ntomorrow\", \"help me schedule today's and tomorr...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"guesty_task_actions","category":"guesty","description":"Create or cancel the approved Historic Getaways cleaning task in Guesty.\n\nThis internal action is pinned to the production reservation-cleaning\nworkflow. It performs no write for any other workspace or workflow.","tags":["internal"],"internal":true,"sideEffect":"external_write","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":["guesty"],"requiredIntegrations":[],"actions":["create"]},{"name":"read_guesty_payouts","category":"guesty","description":"Read Guesty Pay payout reference, status, and processing date.\n\nUse this after ``read_reservations`` for internal accounting reports. Pass\nthe exact confirmation codes returned by the reservation read in batches of\nat most 25. Guesty exposes this reconciliation data only when...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":["guesty"],"requiredIntegrations":[],"actions":[]},{"name":"get_hostaway_finance_report","category":"hostaway","description":"Fetch Hostaway's authoritative finance report (POST /v1/finance/report/listingFinancials).\n\nThis is the ONLY source for accurate PM commission. Hostaway computes pmCommission\nfrom a per-account custom formula (typically `GrossRent * 0.2` with per-listing\nand per-reservation ov...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":["hostaway"],"requiredIntegrations":[],"actions":[]},{"name":"hostaway_actions","category":"hostaway","description":"Preview or write narrow Hostaway operational listing actions.\n\n`mark_listing_clean` updates Hostaway listing cleanliness status after a\nTrellis checkout cleaning task is completed. Live writes are allowed only\nfrom the approved Alternative Capital workflow runtime context.","tags":["internal"],"internal":true,"sideEffect":"external_write","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":["hostaway"],"requiredIntegrations":[],"actions":["mark_listing_clean"]},{"name":"hostaway_listing_copy_update","category":"hostaway","description":"Preview or write Hostaway listing copy fields for a Trellis property.\n\nDefaults to dry-run. Set dry_run=false and approved=true only after explicit\nhuman approval for the exact workspace, property/listing, provider, and\nfields being changed. A successful live call means Hostaw...","tags":[],"internal":false,"sideEffect":"external_write","workflowSafe":true,"requiresHumanApproval":true,"requiredContext":["workspace_id"],"requiredPms":["hostaway"],"requiredIntegrations":[],"actions":[]},{"name":"generate_image","category":"image_generation","description":"Generate an image from a text description using AI.\n\nCreates a photorealistic or artistic image based on the prompt.\nThe generated image is saved to the session files and can be\nreferenced or downloaded by the user.\n\nArgs:\n    prompt: A narrative, descriptive paragraph of the...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"conversation_actions","category":"inbox","description":"Add staff-only routing context to the current inbox conversation.\n\nIn ResponseFlow channel runs, omit conversation_id to use the bound current\nconversation; targeting a different conversation is rejected.\n- add_tag: provide an exact tag_id or authoritative tag_name.\n- add_note...","tags":[],"internal":false,"sideEffect":"internal_write","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[],"publicSummary":"Add staff-only notes and apply or remove tags on an inbox conversation without sending a message or assigning ownership.","publicActions":["add_note","add_tag","remove_tag"]},{"name":"inbox_actions","category":"inbox","description":"Send guest messages, update conversation state, manage contact records, and apply conversation tags.\nUse this for guest reply flows (WhatsApp / SMS / email / OTA inbox), conversation\nassignment and escalation routing, contact creation for new leads, internal note\nposting on a...","tags":[],"internal":false,"sideEffect":"external_send","workflowSafe":true,"requiresHumanApproval":true,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":["add_note","add_tag","assign_conversation","create_contact","remove_tag","send_message","update_contact","update_status"],"publicSummary":"Send guest messages, update inbox status, assign conversations, write notes, and apply conversation tags.","publicActions":["send_message","update_status","assign_conversation","add_note","add_tag","remove_tag"]},{"name":"read_inbox","category":"inbox","description":"Query the unified inbox (conversations + contacts) with flexible filtering, aggregation, related data.\n\nArgs:\n    filters (all optional):\n        id: conversation UUID or list (single → detail; list → batch).\n        contact_id: contact UUID or list (single → detail; list → ba...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"ask_human","category":"interactions","description":"Pause the agent and ask a human for open-ended input before continuing.\n\nUse this when the agent needs a human answer, judgment call, or missing\nbusiness context and should continue the same trace after that answer\narrives. This is not escalation: escalation is terminal, while...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"ask_user","category":"interactions","description":"Ask the user one or more clarifying questions in a single form.\n\nBundle EVERY clarification you need into ONE call. The user fills the\nwhole form once and submits all answers together — you cannot ask\nagain until the next reasoning step. Asking sequentially across turns\nis a k...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"activate_skill","category":"kb","description":"Load one or more skills' full content to follow as execution instructions.\n\nThe Available Skills section in your system prompt lists all slugs.\nCall this directly with the slug(s) — do NOT search first.\n\nPass a single slug for one skill, or a list of slugs to load multiple\nski...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"knowledge_actions","category":"kb","description":"Create / update / delete knowledge base (KB) documents, skills, and\nfolders, and share them with properties, agents, members, or inbox channels. Use this\nfor SOP authoring (check-in / check-out / cleaning policy / pet policy /\ncancellation rules), publishing operating procedur...","tags":[],"internal":false,"sideEffect":"internal_write","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"read_knowledge","category":"kb","description":"Query the workspace knowledge base for documents, SOPs, guidelines, and skills.\nUse this when workspace documentation, property guides, or policies can\nmaterially change the answer. For policy/SOP questions, one hybrid search\nis usually enough; if no matching document appears,...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"add_linear_comment","category":"linear","description":"Add a comment to an existing Linear issue.\n\nUse this to follow up on a ticket — share an update, link related context,\nor answer a question raised in the thread. Resolves the issue first to\nconfirm it exists; the resolved UUID is what's used to post the comment.\n\nArgs:\n    id_...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"assign_linear_issue","category":"linear","description":"Assign an existing Linear issue to a member or bot by name or UUID.\n\nUse `list_linear_members` first for ambiguous names.\n\nArgs:\n    id_or_identifier: Linear identifier (e.g. \"PROD-123\") or UUID.\n    assignee_name: Linear member/bot name, display name, or email.\n    assignee_i...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"create_linear_issue","category":"linear","description":"Create a Linear issue.\n\nThis tool only files the Linear ticket. It must not create a code task,\ndispatch a coding agent, or imply implementation has started.\n\nKEEP TICKETS SHORT. The developer's reading time is the budget.\n\nDefault ticket shape:\n- title: clear, ~10 words descr...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"create_linear_project","category":"linear","description":"Create a Linear project on the canonical Trellis owner team.\n\nUse this when the user explicitly asks to create/make/open a Linear\nproject, customer onboarding project, launch project, migration project, or\nmilestone container. This creates a Linear project only; it does not cr...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"get_linear_issue","category":"linear","description":"Fetch a single Linear issue (description + comments) by UUID or identifier.\n\nUse this after `list_linear_issues` when you need the full body of a ticket\n— description, current state, assignee, all comments — to answer a question\nor decide whether to comment.\n\nArgs:\n    id_or_i...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"list_linear_issues","category":"linear","description":"List Linear issues on the Trellis Product team, with flexible filters.\n\nUse this to answer questions like \"what bugs are open in the Inbox project?\",\n\"what tickets did we ship this week?\", or \"show me Lodo's open tickets\".\n\nAll filters are optional and combine with AND. By def...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"list_linear_members","category":"linear","description":"List Linear workspace members, including bot/app users.\n\nUse this when a user asks to assign a Linear issue to someone by name and you\nneed the Linear member UUID.\n\nArgs:\n    query: Optional case-insensitive match against name, display name, or email.\n    limit: Max members to...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"list_linear_projects","category":"linear","description":"List supported Product-area Linear projects, with their leads.\n\nUse this to choose the `project_id` for Trellis-owned Linear tickets.\nThe list is intentionally hardcoded to stable Product-area projects only:\ncustomer-specific projects are excluded. When `create_linear_issue` r...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"send_linear_customer_update","category":"linear","description":"Send an optional customer-facing completion update for a Linear issue.\n\nUse this only when the latest user explicitly asks you to notify the\ncustomer, send the customer update, or confirms that the customer-facing\nmessage should be sent. The Linear Done webhook no longer sends...","tags":[],"internal":false,"sideEffect":"external_send","workflowSafe":true,"requiresHumanApproval":true,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"send_linear_origin_update","category":"linear","description":"Send a follow-up to the Slack/WhatsApp origin thread for a Linear issue.\n\nUse this when the user asks to notify the original Slack or WhatsApp chat\nwhere a Linear issue was reported. The tool reads the issue's Trellis\nContext attachment, resolves the origin thread/chat, and se...","tags":[],"internal":false,"sideEffect":"external_send","workflowSafe":true,"requiresHumanApproval":true,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"manual_token_actions","category":"manual_tokens","description":"Create / manage Trellis house manual access tokens tied to a reservation.\nUse this only to issue a Trellis manual / house guide URL the guest can\nopen without logging in, scoped to a check-in / check-out window. The token\nexpires automatically based on stay dates plus configur...","tags":[],"internal":false,"sideEffect":"internal_write","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":["create_from_reservation","get_by_reservation"]},{"name":"maps","category":"maps","description":"Google Maps operations: search places, get place details, compute routes, geocode addresses.\n\nUSE THIS FOR location-aware tasks: nearest restaurants for a guest, ETA from\ncleaner's current location to a property, lat/lng for a new property address,\nreverse-geocoding a worker's...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"memory_actions","category":"memory","description":"Create / update / archive / restore / delete agent memory — both narrow episodic context and\nprocedural behavior rules. Use episodic memory only for durable human\npreferences, roles, naming conventions, or recurring coordination patterns.\nUse procedural_update for the always-o...","tags":[],"internal":false,"sideEffect":"internal_write","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":["archive","archive_memory","delete","delete_memory","list","list_memories","procedural_update","query","restore","restore_memory","search","search_memories","search_memory","upsert","upsert_memory"]},{"name":"patch_actions","category":"patches","description":"Preview or apply patch-style edits to supported Trellis resources.\n\nSupported targets:\n  - KB documents: trellis://knowledge/documents/<uuid>\n  - Agent skills: trellis://knowledge/skills/<uuid>\n  - Workflows: trellis://entity/workflow/<uuid>\n  - Current agent settings: trellis...","tags":[],"internal":false,"sideEffect":"internal_write","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":["apply","preview"]},{"name":"verify_photo","category":"photo_verification","description":"Verify uploaded photos against a reference (photo, text, or both).\n\nUse this to check whether photos match what was expected — e.g. comparing\na \"cleaning done\" photo against a reference photo, or checking that a\nphoto depicts what a checklist step description requires. The too...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"plan_actions","category":"plans","description":"Create / update / cancel multi-step execution plans for one-off operational\nwork that doesn't fit a saved workflow. Use this to draft a sequence of\nsteps the agent will execute and advance through, update a single step's\nstatus as it progresses, append new steps mid-session as...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"read_plans","category":"plans","description":"List plans or get status of a specific plan.\n\nArgs:\n    plan_id: Specific plan UUID to get detailed status (with all steps).\n             If omitted, lists all plans.\n    status: Filter by plan status when listing (e.g. \"active\", \"completed\")\n    filters: Optional aliases from...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"query_database","category":"platform_agent","description":"Execute a read-only SQL query against the Trellis database.\n\nUse this to inspect any data across all workspaces: agents, properties,\ntasks, conversations, reservations, ai_chat_sessions, ai_traces, etc.\n\nSchema facts (do not guess columns):\n- tasks: assignments live in task_as...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"search_context_graph","category":"platform_agent","description":"Search the platform context graph across companies, workspaces, people, and traces.\n\nUse this before raw SQL when looking for operational relationships:\norganizations, workspaces, members, agents, traces, tools, codebase learnings,\nsource chunks, facts, and entity relationship...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"read_axiom_logs","category":"platform_observability","description":"Search Axiom production logs for concrete bug evidence.\n\nUse this around a Sentry timestamp, trace timestamp, request/session ID, or\nworkspace slug to qualify what actually happened in production. Platform\nagent only.","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"read_sentry","category":"platform_observability","description":"Read Sentry exceptions for Trellis production debugging.\n\nUse this for stack traces, unresolved production issues, or verifying\nwhether a user-reported bug has a matching exception. Platform agent only.","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"pricing_actions","category":"pricing","description":"Mutate a pricing provider.\n\nArgs:\n    provider: Optional pricing provider. Use \"wheelhouse\" for Wheelhouse\n              custom rates, preferences, and tags.\n    action: PriceLabs set/delete/update/push actions or Wheelhouse custom\n            rates, preferences, and tag updat...","tags":[],"internal":false,"sideEffect":"external_write","workflowSafe":false,"requiresHumanApproval":true,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":["pricelabs","wheelhouse"],"actions":["delete_custom_rates","delete_listing","delete_overrides","preview_preferences","push","set_custom_rates","set_overrides","update_preferences","update_prices","update_tags","upsert_listing"]},{"name":"read_pricing","category":"pricing","description":"Read pricing provider data from PriceLabs or Wheelhouse.\n\nArgs:\n    provider: Optional pricing provider. Omit to use the connected provider.\n    target: What to read.\n        - \"listings\": portfolio listing snapshots.\n        - \"listing_prices\": daily recommended prices for on...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":["pricelabs","wheelhouse"],"actions":[],"publicSummary":"Read pricing, revenue posture, ADR, occupancy, gaps, and portfolio/listing rate data."},{"name":"property_actions","category":"properties","description":"List groups or update property details, custom fields, rooms, media, and assignees.\n\nUse action=\"list_groups\" for a read-only property-group lookup. Use\naction=\"create\" with a name for early onboarding records. Use\nproperty_id plus direct fields or an updates object for common...","tags":[],"internal":false,"sideEffect":"internal_write","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":["list_groups"],"publicSummary":"List property groups or update property details, custom fields, groups, rooms, elements/amenities, media, and department assignees.","publicActions":["list_groups","update","update_custom_fields","manage_elements","manage_rooms","manage_sections","create_group","update_group","manage_assignees","add_media"]},{"name":"read_properties","category":"properties","description":"Query properties with flexible filtering, aggregation, related data.\n\nDEFAULT: only ACTIVE properties are returned. KEEP THIS DEFAULT for any\ngeneric \"how many properties...\" / \"show me X by city/bedroom\" / portfolio\noverview / aggregation question. Most reporting questions ar...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"video_screenshot","category":"properties","description":"Extract a still frame (screenshot) from a video URL and optionally save it as property media.\n\nSupports YouTube, Vimeo, and direct video URLs (mp4, webm, etc.).\nFor YouTube/Vimeo, fetches the highest-resolution thumbnail available.\nFor direct video URLs, extracts the frame at...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"ramp_actions","category":"ramp","description":"Perform actions on Ramp: add memos/notes to transactions, sync transactions.\n\nArgs:\n    action: The action to perform:\n        - \"add_memo\" — Add a note/memo to a transaction\n        - \"get_transaction\" — Get full details of a specific transaction\n        - \"get_card\" — Get de...","tags":[],"internal":false,"sideEffect":"external_write","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":["add_memo","get_card","get_transaction","get_user"]},{"name":"read_ramp","category":"ramp","description":"Query Ramp corporate card data: transactions, cards, users, departments, bills, reimbursements, statements, receipts, spending limits, merchants, or business info.\n\nArgs:\n    resource: What to query. One of:\n        - \"transactions\" — List card transactions (filterable by date...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"read_relocation_options","category":"reservations","description":"Find ranked comparable properties for guest relocation.\n\nReturns available replacement options for the dates, guest count, required\namenities, and original property context. This tool is read-only and returns\nsafe property details only; it does not expose access codes, WiFi se...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[],"publicSummary":"Find available comparable replacement properties for guest relocation."},{"name":"read_reservations","category":"reservations","description":"Query reservations, availability, movements, financials, and reports.\n\nPass common lookup fields through `filters`, or use top-level aliases like\nguest, property, confirmation, and check_in_date. Detailed filter/report\nguidance lives in the reservation-operations skill.\n\nWhen...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[],"publicSummary":"Query reservations, stays, guest/date/property filters, availability, and deterministic reports."},{"name":"reservation_actions","category":"reservations","description":"Manage reservations only: create / update / cancel reservations and bookings, block or unblock\nthe property calendar, edit PMS-backed reservation custom fields, and tag\nreservations for ops segmentation. Do NOT use this to check, look up,\nsearch, read, or summarize reservation...","tags":[],"internal":false,"sideEffect":"external_write","workflowSafe":true,"requiresHumanApproval":true,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":["create","update","update_custom_fields"]},{"name":"reservation_inquiry_actions","category":"reservations","description":"Approve, pre-approve, or decline a reservation inquiry on a supported PMS.\n\nThis tool is exposed only when the workspace has an inquiry-decision-capable\nPMS connected. Use read_reservations first to resolve confirmation codes or\nOTA references to the Trellis reservation UUID....","tags":[],"internal":false,"sideEffect":"external_write","workflowSafe":true,"requiresHumanApproval":true,"requiredContext":["workspace_id"],"requiredPms":["guesty"],"requiredIntegrations":[],"actions":["decide"],"publicSummary":"Approve, pre-approve, or decline reservation inquiries on supported PMS connections.","publicActions":["decide"]},{"name":"read_reviews","category":"reviews","description":"Query guest reviews with flexible filtering, aggregation, and related data.\nReturns a bounded page of matching results. Use `offset` with the returned\npagination metadata to fetch additional pages.\n\nArgs:\n    filters: Filter criteria (all optional, combine as needed):...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"review_actions","category":"reviews","description":"Create / update / delete guest reviews and respond to them. Use this for\ndrafting and publishing host replies to Airbnb / Booking / Google / VRBO\nreviews, recording an offline / direct-booking guest review with overall\nand category ratings, updating local review metadata after...","tags":[],"internal":false,"sideEffect":"internal_write","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":["create","delete","draft_reply","publish_reply","update"],"publicSummary":"Create/update/delete review records, save host-response drafts, and publish review replies.","publicActions":["create","update","delete","draft_reply","publish_reply"]},{"name":"get_my_settings","category":"self_settings","description":"Read your own agent settings and prompt layers.\n\nUse this to see your current configuration before deciding what to change.\nReturns identity (`instructions`), behavior (`procedural_memory`), response\nguardrails, pulse settings, and per-scope delivery settings (autopilot,\nauto-...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"update_my_settings","category":"self_settings","description":"Edit your own agent settings using find-and-replace. Works like a surgical\ntext edit: finds `old_text` in the specified field and replaces it with `new_text`.\n\n**field**: Which setting to edit. One of:\n- \"instructions\" — your identity/personality: who you are and how you intro...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"meeting_ops_actions","category":"slack","description":"Send a meeting workflow message through the selected agent's Slack bot.\n\nUse ``phase='questions'`` for the root clarification message. The returned\nroot timestamp is persisted against the meeting so ordinary Slack replies\ncan resume the configured workflow with the full transc...","tags":["internal"],"internal":true,"sideEffect":"external_send","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":["slack"],"actions":["send_slack_message"]},{"name":"read_slack","category":"slack","description":"Query Slack: search, channels, users, messages, thread replies, member matching, file download.\n\nArgs:\n    query: free-text Slack search. In a live Slack event this uses Slack's\n        Real-time Search API (workspace-wide, permission-aware); otherwise it\n        falls back to...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"read_workspace_slack","category":"slack","description":"Read Slack channels, channel messages, or thread replies from the workspace install.\n\nUse this for workflow ACTION channel resolution and workspace notifications.\nIn Slack-source agent conversations, prefer read_slack/slack_actions.\n\nArgs:\n    filters:\n        channels_only: t...","tags":["internal"],"internal":true,"sideEffect":"read","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":["slack"],"actions":[]},{"name":"slack_actions","category":"slack","description":"Post Slack messages, open DMs, react to threads, and set assistant thread\nstatus. Use this to notify the ops channel of an urgent maintenance event\n(key loss, AC failure, after-hours emergency), reply inside an existing\nSlack thread to continue an escalation, broadcast a daily...","tags":[],"internal":false,"sideEffect":"external_send","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":["slack"],"actions":["list_channel_members","list_emoji","lookup_canvas_sections","search_emoji","send_message"]},{"name":"slack_workspace_actions","category":"slack","description":"Send messages or owner-reply review cards through Workspace Slack.\n\nThis tool is for Trellis workflows and workspace notifications. Normal\nmessages use the workspace Slack install; owner-review cards use the\nselected agent's Slack app so their interactive actions return throug...","tags":["internal"],"internal":true,"sideEffect":"external_send","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":["slack"],"actions":["send_message","send_owner_reply_review"]},{"name":"smart_device_actions","category":"smart_devices","description":"Control locks/thermostats and manage lock access codes via Seam.\n\nThese are external provider writes. A workflow must put an APPROVAL step\nimmediately before this action. Access-code values are accepted as input but\nare always redacted from the returned tool result.","tags":["internal"],"internal":true,"sideEffect":"external_write","workflowSafe":true,"requiresHumanApproval":true,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":["seam"],"actions":["create_access_code","delete_access_code","lock","set_thermostat","unlock","update_access_code"]},{"name":"daily_ops_plan_actions","category":"tasks","description":"Commit one approved Daily Ops task plan atomically and idempotently.\n\nThis tool is workflow-internal. It accepts only CREATE, UPDATE, and CANCEL\noperations. Every CREATE/UPDATE must contain exact property, department,\nnamed assignee, date, and time IDs. Every UPDATE/CANCEL mus...","tags":["internal"],"internal":true,"sideEffect":"internal_write","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workflow_id","workflow_run_id","workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":["commit_plan"]},{"name":"read_checkin_cleaning_audit","category":"tasks","description":"Read a deterministic same-day check-in cleaning readiness audit.\n\nUse this before same-day check-in cleaning safety workflows. It returns one\ncompact row per active property with an incoming reservation on the audit\ndate, including deterministic cleaning_progress, evidence, a...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[],"publicSummary":"Run a deterministic same-day check-in cleaning readiness audit."},{"name":"read_tasks","category":"tasks","description":"Query tasks with flexible filtering, aggregation, related data. Returns all matches (large results auto-saved to file).\n\nArgs:\n    filters (all optional; many accept single value OR list):\n        drafts_only: true → read only internal Trellis DRAFT tasks for review. Returns...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[],"publicSummary":"Query tasks, blockers, visits, turnover work, supply issues, and task state."},{"name":"read_visits","category":"tasks","description":"Query visits as first-class objects, separate from task reads.\n\nArgs:\n    filters:\n        id: visit UUID, display ID such as V-655476491621, short_id, or list.\n        short_id: visit short_id or display ID such as V-655476491621.\n        scheduled_date / scheduled_date_from...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"task_actions","category":"tasks","description":"Create, update, assign, resolve, complete, cancel, comment on, or attach files to tasks.\n\nBefore using this tool for a user-requested task creation, update, or\nassignment, check the Available Skills list in the system prompt. If a\nmatching SOP skill exists — for example `task-...","tags":[],"internal":false,"sideEffect":"internal_write","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":["add_blocker","create","create_supply_items","request_owner_approval","review_draft","update","update_supply_item"],"publicSummary":"Create, update, assign, complete, comment on, attach files, and create or update supply inventory catalog items.","publicActions":["create","update","assign","complete","reopen","add_comment","attach_file","link_supply","create_supply_order","create_supply_items","update_supply_item","review_draft","request_owner_approval"]},{"name":"read_telegram","category":"telegram","description":"Read delivered inbound messages from the current Telegram group/topic.\n\nReturns ten messages by default, in chronological order. Use\n``pagination.next_cursor`` to request an older page. The maximum page size\nis 50. History is limited to Telegram updates Trellis received and re...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"telegram_actions","category":"telegram","description":"Send Telegram messages or read Trellis-cached current group context.\n\n``read_recent_messages`` is restricted to the current Telegram group/topic.\nIt returns cursor-paginated sanitized inbound updates delivered to Trellis;\nprefer the dedicated read-only ``read_telegram`` tool w...","tags":[],"internal":false,"sideEffect":"external_send","workflowSafe":true,"requiresHumanApproval":true,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":["read_recent_messages","send_message"]},{"name":"read_templates","category":"templates","description":"Read task templates, template groups, or available property elements.\n\nArgs:\n    action: What to read:\n        - list: List templates with optional filters\n        - detail: Get full template detail including all checklist items\n        - groups: List template groups with thei...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"template_actions","category":"templates","description":"Create / update / delete reusable task templates that drive cleaning,\ninspection, and maintenance automation across properties. Use this to define\na checklist template (sections, items, photo / count / yes-no / condition\nelements), tune duration and assignee modes, group templ...","tags":[],"internal":false,"sideEffect":"internal_write","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":["set_default_costs","set_default_supplies","set_property_overrides"]},{"name":"read_sessions","category":"traces","description":"Episodic memory + self-debugging: read past chat sessions.\n\nActions:\n  - \"list\":   Browse sessions by metadata. Optional `agent_id` (defaults to your\n              own), `source` (SIDEBAR/CHANNEL/BACKGROUND/VOICE/SLACK/TEAMS/EMAIL),\n              `from_date`, `to_date` (ISO 86...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"read_traces","category":"traces","description":"Query AI execution traces for observability and debugging.\n\nfilters:\n  id: str - Get a single trace by ID (with all spans and input/output previews)\n  workspace_id: str - Platform agent only: narrow search to one workspace\n  trace_group: str - Exact route, e.g. responseflow, a...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"upsell_actions","category":"upsells","description":"Create upsell offers and return Stripe Checkout links.\n\nArgs:\n    action: Only \"create_offer\" is supported for the MVP.\n    upsell_product_id: Upsell product UUID from the Trellis catalog.\n    line_items: Optional list of services to include in one checkout. Each item...","tags":[],"internal":false,"sideEffect":"internal_write","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":["stripe_payments"],"actions":["create_offer"]},{"name":"read_users","category":"user_management","description":"Query workspace team members and invitations.\n\nArgs:\n    filters: Filter criteria (all optional, combine as needed):\n        - member_id: str | list[str] — specific member UUID(s) for batch lookup\n        - role: str | list[str] — ADMIN | MANAGER | MEMBER | VIEWER (single or l...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"user_actions","category":"user_management","description":"Invite / create / update / remove workspace users and team members. Use\nthis to invite a new team member by email, provision a user account\ndirectly with role and password, change a member's permission role\n(ADMIN / MANAGER / MEMBER / VIEWER), cancel a pending invite, deactiva...","tags":[],"internal":false,"sideEffect":"internal_write","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"generate_property_reel","category":"video_generation","description":"Build a vertical Instagram-Reel-style house-tour video from a property's REAL photos.\n\nAssembles, with on-screen text, in this order:\n  1. An opening title card showing `property_name` (and optional `title_subtitle`).\n  2. One segment per item in `segments`: a slow Ken Burns p...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"generate_video","category":"video_generation","description":"Generate a short video from a text description using AI.\n\nCreates a short cinematic video clip based on the prompt. The generated\nvideo is saved to the session files and can be referenced or downloaded\nby the user.\n\nArgs:\n    prompt: Detailed description of the video to genera...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"get_call_result","category":"voice","description":"Get the result of a voice call by its call_record_id.\n\nReturns the call status, transcript, summary, duration, and sentiment.\nIf the call is still in progress, returns the current status.\n\nArgs:\n    call_record_id: The call_record_id returned by initiate_voice_call.","tags":[],"internal":false,"sideEffect":"read","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"initiate_voice_call","category":"voice","description":"Start a PROACTIVE outbound AI voice call with a specific goal.\n\nThe voice agent will actively work to accomplish the call_objective during\nthe phone conversation. It has access to property management tools (search\nproperties, create tasks, check reservations, etc.) and will us...","tags":[],"internal":false,"sideEffect":"external_send","workflowSafe":false,"requiresHumanApproval":true,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"web","category":"web","description":"Web operations: search, scrape pages, parse Loom videos, or make HTTP requests.\n\nUSE THIS FOR anything not in KB or memory — current info, research, competitors,\nlocal recommendations, time-sensitive or external questions. Default tool for\nweb data; PREFERRED over `browser` fo...","tags":[],"internal":false,"sideEffect":"external_write","workflowSafe":true,"requiresHumanApproval":true,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":["http_request","parse_loom","scrape","search"]},{"name":"read_whatsapp","category":"whatsapp","description":"Read agent-owned WhatsApp context: list channels or read a channel's messages.\n\nUse this when the current WhatsApp turn needs context beyond the recent\nnative chat history injected into the prompt. Prefer small paged reads\n(20-50 messages) before paging older history with a cu...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"read_workflows","category":"workflows","description":"Read workflows, runs, and pending approvals. See ReadWorkflowsInput for\nper-action contracts. Examples:\n  read_workflows(action=\"audit\")                                  # fleet view\n  read_workflows(action=\"failure_digest\")                         # recurring failures\n  read_...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"workflow_actions","category":"workflows","description":"Manage workflow lifecycle: create, update, run, approve, configure fixtures.\nSee WorkflowActionsInput for per-action contracts.\n\nExamples:\n  workflow_actions(action=\"compile\", draft={...})            # preview, no DB write\n  workflow_actions(action=\"save\", name=\"...\", trigger_...","tags":[],"internal":false,"sideEffect":"internal_write","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":["compile","list_sample_fixtures","validate"]},{"name":"read_shifts","category":"workforce","description":"Query workforce shifts as first-class objects.\n\nSee also: read_workforce — use that for people (members, vendors),\nabsences, availability, and daily summaries; use read_shifts when the\nquestion is specifically about shift records and their filters.\n\nArgs:\n    filters:...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"read_workforce","category":"workforce","description":"Query workforce: team members, vendors, shifts, absences, availability, summaries.\n\nSee also: read_shifts — use that when the question is specifically about\nshift records (richer shift filters: id, worker_name, sort by start_time);\nuse read_workforce for people, absences, avai...","tags":[],"internal":false,"sideEffect":"read","workflowSafe":false,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]},{"name":"workforce_actions","category":"workforce","description":"Schedule worker shifts and approve absence requests. Use this to assign\ncleaners / inspectors / maintenance staff to a property on a given date,\ncorrect clock-in / clock-out timestamps, mark a shift completed or\ncancelled, file a sick / vacation / PTO absence on behalf of a te...","tags":[],"internal":false,"sideEffect":"internal_write","workflowSafe":true,"requiresHumanApproval":false,"requiredContext":["workspace_id"],"requiredPms":[],"requiredIntegrations":[],"actions":[]}]}}