{"openapi":"3.1.0","info":{"title":"Bluejay API","description":"Bluejay API","version":"0.1.0"},"paths":{"/health":{"get":{"summary":"Check Health","operationId":"check_health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[]}},"/health/deps":{"get":{"summary":"Check Health Deps","operationId":"check_health_deps_health_deps_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[]}},"/v1/send-text":{"post":{"summary":"Recieve Text Processor","description":"Process text input and return a response.","operationId":"recieve_text_processor_v1_send_text_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextProcessorRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}]}},"/v1/api-keys":{"post":{"summary":"Create Api Key","operationId":"create_api_key_v1_api_keys_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/api-keys/{key_id}":{"delete":{"summary":"Revoke Key","operationId":"revoke_key_v1_api_keys__key_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/generate-test-scenarios":{"post":{"summary":"Generate Test Scenarios","description":"Generates test scenarios for a given simulation.\n\nAccepts a SimulationRequest with the following structure:\n{\n    name: string;\n    agent: Agent;\n    promptId?: string;\n    knowledgeBaseId?: string;\n    scenarios: TestScenarioRequest[];\n    callAllocation: {\n        goalAdherence: { [key: string]: number };\n        systemIntegrity: { [key: string]: number };\n        customerPersonas: { [key: string]: number };\n        workflowAdherence: { [key: string]: number };\n        workflowAdherenceV2: { [key: string]: number };\n        expectedToolCalls: [{name: string, output: string}, {name: string, output: string}, ...];\n        customPrompt: {prompt: string, count: number};\n        transcriptGeneration: [{transcript: string, success_criteria?: string, use_specific_utterances?: boolean}, ...];\n            // For transcriptGeneration:\n            // - transcript: Required. The transcript text to analyze\n            // - success_criteria: Optional. If not provided, will be auto-generated from transcript\n            // - If use_specific_utterances is true (default): customer utterances extracted and stored as JSON string in scenario description\n            // - If use_specific_utterances is false: persona intent description generated in natural language\n        csvCallAllocation: [{intent: string, success_criteria: string, count: number}, ...];\n            // For csvCallAllocation:\n            // - intent: Required. The customer intent/description for the scenario\n            // - success_criteria: Required. The success criteria for the scenario\n            // - count: Required. Number of scenarios to generate with this intent and success criteria\n    };\n    selectedProperties: {\n        [category: string]: string[];\n    };\n    customerTraits?: [\n        {name: string, data_type: \"boolean\" | \"string\" | \"date\" | \"number\"}\n    ];\n}","operationId":"generate_test_scenarios_v1_generate_test_scenarios_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/move-regen-test-scenarios":{"post":{"summary":"Move Regen Test Scenarios Endpoint","description":"Regenerates test scenarios with a new goal while preserving scenario descriptions.\n\nAccepts a request with the following structure:\n{\n    agent: Agent;\n    promptId?: string;\n    knowledgeBaseId?: string;\n    scenarios: TestScenario[];\n    newGoal: string;\n}","operationId":"move_regen_test_scenarios_endpoint_v1_move_regen_test_scenarios_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/regen-test-scenarios":{"post":{"summary":"Regen Test Scenarios Endpoint","description":"Regenerates test scenarios based on custom instructions while preserving style and structure.\n\nAccepts a request with the following structure:\n{\n    agent: Agent;\n    promptId?: string;\n    knowledgeBaseId?: string;\n    scenarios: TestScenario[];\n    instructions: string;\n    persona?: CustomerPersona;\n}","operationId":"regen_test_scenarios_endpoint_v1_regen_test_scenarios_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/internal/run-scheduled-simulation":{"post":{"summary":"Run Scheduled Simulation","description":"Internal fire endpoint for the cron service (simulation-cron-service).\n\nAuth is the inbound counterpart to weekly_notifications' outbound X-Internal-Token.\nrun_simulation_now is fire-and-forget; we 202 on accept. A 404 it raises is a\npermanent failure (sim/test cases gone) — propagate it so the cron side stops retrying.","operationId":"run_scheduled_simulation_v1_internal_run_scheduled_simulation_post","parameters":[{"name":"x-internal-token","in":"header","required":false,"schema":{"type":"string","title":"X-Internal-Token"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunScheduledSimulationRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/internal/spend-allowed/{agent_id}":{"get":{"summary":"Internal Spend Allowed","description":"Tells whether new billable work for this agent is admitted by its workspace's usage limit.","operationId":"internal_spend_allowed_v1_internal_spend_allowed__agent_id__get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"x-internal-token","in":"header","required":false,"schema":{"type":"string","title":"X-Internal-Token"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/internal/run-autosync":{"post":{"summary":"Run Autosync","description":"Per-target autosync fire from simulation-cron-service. Fire-and-forget; 202 on accept.","operationId":"run_autosync_v1_internal_run_autosync_post","parameters":[{"name":"x-internal-token","in":"header","required":false,"schema":{"type":"string","title":"X-Internal-Token"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunAutosyncRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/internal/sweep-journeys":{"post":{"summary":"Sweep Journeys Tick","description":"Journey scheduler sweep tick from simulation-cron-service. Fire-and-forget;\n202 on accept — a lost result is retried by the next tick.","operationId":"sweep_journeys_tick_v1_internal_sweep_journeys_post","parameters":[{"name":"x-internal-token","in":"header","required":false,"schema":{"type":"string","title":"X-Internal-Token"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/create-schedule":{"post":{"summary":"Create Schedule","operationId":"create_schedule_v1_create_schedule_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCronJobRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCronJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/update-schedule/{schedule_id}":{"put":{"summary":"Update Schedule","operationId":"update_schedule_v1_update_schedule__schedule_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"string","title":"Schedule Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCronJobRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCronJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/delete-schedule/{schedule_id}":{"delete":{"summary":"Delete Schedule","operationId":"delete_schedule_v1_delete_schedule__schedule_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"string","title":"Schedule Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteCronJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/schedule/{schedule_id}":{"get":{"summary":"Get Schedule","operationId":"get_schedule_v1_schedule__schedule_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"string","title":"Schedule Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetCronJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/schedules":{"get":{"summary":"List Schedules","operationId":"list_schedules_v1_schedules_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCronJobsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/generate-translated-transcript/{test_result_id}":{"post":{"summary":"Generate Translated Transcript","description":"Generate a translated transcript for a given audio file.\n\nArgs:\n    test_result_id: the ID of the test result to generate a translated transcript for.\n\nReturns:\n    a dictionary with the status, message, and translated transcript url.","operationId":"generate_translated_transcript_v1_generate_translated_transcript__test_result_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"test_result_id","in":"path","required":true,"schema":{"type":"string","title":"Test Result Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/generate-customer-personas":{"post":{"summary":"Generate Customer Personas","description":"Generate custom personas for a given agent based on its description and knowledge base.","operationId":"generate_customer_personas_v1_generate_customer_personas_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateCustomPersonasRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ping":{"get":{"summary":"Pong","operationId":"pong_v1_ping_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}]}},"/v1/compare-experiment-runs":{"post":{"summary":"Compare Experiment Runs","description":"Compare multiple experiment runs and generate a summary of differences","operationId":"compare_experiment_runs_v1_compare_experiment_runs_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComparisonRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComparisonResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/end-conversations":{"post":{"summary":"End Conversations","description":"End multiple running conversations by marking them in Redis for the LiveKit agent to terminate.\n\nThis endpoint:\n1. Checks that each test result exists and is in RUNNING status\n2. Writes control objects to Redis for the LiveKit agent to pick up\n3. Schedules a 30-second fallback watchdog for each conversation\n4. Returns which conversations were successfully marked for ending and which failed\n\nThe fallback watchdog ensures that if LiveKit fails to respond, the conversation\nstatus will be updated after 30 seconds to prevent it from appearing stuck forever.","operationId":"end_conversations_v1_end_conversations_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndConversationsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndConversationsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/simulation-runs/{simulation_run_id}/cancel":{"post":{"summary":"Cancel Simulation Run","description":"Cancel an in-flight simulation run.\n\nCascades the cancel down to child test_results:\n\n1. Set simulation_run.status = COMPLETED (the only terminal state after\n   the SimulationRunStatus collapse). The fact that the user cancelled\n   the run is captured by child test_result rows transitioning to\n   CANCELLED, not by a distinct sim_run status.\n2. For each child test_result still in PRE_RUNNING_STATUSES, call\n   mark_cancelled_async() — guarded so it raises if a status snuck out\n   of pre-running between our read and write.\n3. Children that already started running (RUNNING / CONVERSATION_ENDED /\n   EVALUATING) are LEFT ALONE — they keep their natural terminal status\n   so dropped/completed calls still produce meaningful eval data.\n4. Bump simulation_run.tests_cancelled by the cascade count.\n\nThe endpoint is idempotent for already-terminal sim runs (returns success=False\nwith a message; doesn't try to re-cancel).","operationId":"cancel_simulation_run_v1_simulation_runs__simulation_run_id__cancel_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"simulation_run_id","in":"path","required":true,"schema":{"type":"integer","title":"Simulation Run Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelSimulationRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/regenerate-test-scenarios-from-community":{"post":{"tags":["Regeneration"],"summary":"Regenerate Test Scenarios From Community","operationId":"regenerate_test_scenarios_from_community_v1_regenerate_test_scenarios_from_community_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/add-agent":{"post":{"tags":["Agents"],"summary":"Add Agent","description":"Add a new agent to the system.","operationId":"add_agent_v1_add_agent_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/update-agent":{"post":{"tags":["Agents"],"summary":"Update Agent","description":"Update an existing agent in the system.","operationId":"update_agent_v1_update_agent_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentUpdateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/update-agent-by-external-id":{"put":{"tags":["Agents"],"summary":"Update Agent By External Id","description":"Update an existing agent in the system by external ID.","operationId":"update_agent_by_external_id_v1_update_agent_by_external_id_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentUpdateWithExternalIdRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentUpdateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}":{"get":{"tags":["Agents"],"summary":"Get Agent","description":"Get an agent by ID.","operationId":"get_agent_v1_agents__agent_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentPydantic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agent-by-external-id/{external_id}":{"get":{"tags":["Agents"],"summary":"Get Agent By External Id","description":"Get an agent by external ID.","operationId":"get_agent_by_external_id_v1_agent_by_external_id__external_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"external_id","in":"path","required":true,"schema":{"type":"string","title":"External Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentPydantic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/all-agents":{"get":{"tags":["Agents"],"summary":"Get All Agents","description":"Get all your agents.","operationId":"get_all_agents_v1_all_agents_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AgentPydantic"},"title":"Response Get All Agents V1 All Agents Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agent/{agent_id}":{"delete":{"tags":["Agents"],"summary":"Delete Agent","description":"Delete an agent by ID.","operationId":"delete_agent_v1_agent__agent_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/generate-http-webhook-key":{"post":{"tags":["Agents"],"summary":"Generate Http Webhook Key","description":"Generate a new signing key for an HTTP agent's webhook","operationId":"generate_http_webhook_key_v1_generate_http_webhook_key_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentWebhookKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentWebhookKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/get-http-webhook-key":{"post":{"tags":["Agents"],"summary":"Get Http Webhook Key","description":"Get the signing key for an HTTP agent's webhook","operationId":"get_http_webhook_key_v1_get_http_webhook_key_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentWebhookKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentWebhookKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/generate-kore-inbound-token":{"post":{"tags":["Agents"],"summary":"Generate Kore Inbound Token","description":"Generate (or rotate) the Bluejay-provisioned access token that Kore.ai pastes into\nits Webhook channel \"Access Token\" field. The plaintext is returned ONCE — store it\nencrypted at rest.","operationId":"generate_kore_inbound_token_v1_generate_kore_inbound_token_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentWebhookKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentWebhookKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/get-kore-inbound-token":{"post":{"tags":["Agents"],"summary":"Get Kore Inbound Token","description":"Get the Bluejay-provisioned Kore inbound access token for an agent.","operationId":"get_kore_inbound_token_v1_get_kore_inbound_token_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentWebhookKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentWebhookKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/issues":{"get":{"tags":["Issues"],"summary":"List Issues","description":"List the issues found on your calls, most recently seen first.","operationId":"list_issues_v1_issues_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"open, in_progress, resolved or ignored","title":"Status"},"description":"open, in_progress, resolved or ignored"},{"name":"priority","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"low, medium, high or urgent","title":"Priority"},"description":"low, medium, high or urgent"},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"non_deterministic or deterministic","title":"Type"},"description":"non_deterministic or deterministic"},{"name":"assignee_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Assignee Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Issue"},"title":"Response List Issues V1 Issues Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/issues/{issue_id}":{"get":{"tags":["Issues"],"summary":"Get Issue","description":"Get one issue.","operationId":"get_issue_v1_issues__issue_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"issue_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Issue Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Issue"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Issues"],"summary":"Update Issue","description":"Update an issue's status, priority, assignee or due date.\n\nAn issue's title and the calls attached to it are produced by Bluejay and cannot be edited.","operationId":"update_issue_v1_issues__issue_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"issue_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Issue Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateIssueBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Issue"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/create-folder":{"post":{"tags":["Folders"],"summary":"Create Folder","description":"Create a new folder for organizing agents.\n\nReturns the created folder details.","operationId":"create_folder_v1_create_folder_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/all-folders":{"get":{"tags":["Folders"],"summary":"Get All Folders","description":"Get all folders for the authenticated user's organization.\n\nReturns a list of all folders with their details.","operationId":"get_all_folders_v1_all_folders_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FolderResponse"},"title":"Response Get All Folders V1 All Folders Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/folder/{folder_id}":{"get":{"tags":["Folders"],"summary":"Get Folder","description":"Get a specific folder by ID.\n\nReturns the folder details if it exists and belongs to the user's organization.","operationId":"get_folder_v1_folder__folder_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Folder Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Folders"],"summary":"Delete Folder","description":"Delete a folder.\n\nNote: This will set the folder_id to NULL for all agents in this folder.\nReturns the deleted folder ID and status.","operationId":"delete_folder_v1_folder__folder_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Folder Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderDeleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/folders/move-agent":{"put":{"tags":["Folders"],"summary":"Move Agent To Folder","description":"Move an agent to a folder or disassociate it from any folder.\n\n- If folder_id is provided: Associates the agent with that folder\n- If folder_id is null: Disassociates the agent from any folder\n\nBoth the agent and folder (if provided) must belong to the user's organization.","operationId":"move_agent_to_folder_v1_folders_move_agent_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoveAgentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoveAgentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/update-folder/{folder_id}":{"put":{"tags":["Folders"],"summary":"Update Folder","description":"Update a folder's name.\n\nReturns the updated folder details.","operationId":"update_folder_v1_update_folder__folder_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Folder Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/get-agents-by-folder/{folder_id}":{"get":{"tags":["Folders"],"summary":"Get Agents By Folder","description":"Get all agents in a specific folder.\n\nReturns a list of agent IDs and names in the folder.","operationId":"get_agents_by_folder_v1_get_agents_by_folder__folder_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Folder Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AgentPydantic"},"title":"Response Get Agents By Folder V1 Get Agents By Folder  Folder Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/dashboards":{"get":{"tags":["Dashboards"],"summary":"List Dashboards","description":"List all dashboards in the organization, newest first.","operationId":"list_dashboards_v1_dashboards_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"data_type","in":"query","required":false,"schema":{"anyOf":[{"enum":["observability","simulation"],"type":"string"},{"type":"null"}],"title":"Data Type"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DashboardModel"},"title":"Response List Dashboards V1 Dashboards Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Dashboards"],"summary":"Create Dashboard","description":"Create an empty dashboard. Add widgets with POST /v1/widgets or POST /v1/dashboards/{id}/widgets/{widget_id}.","operationId":"create_dashboard_v1_dashboards_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDashboardBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/dashboards/{dashboard_id}":{"get":{"tags":["Dashboards"],"summary":"Get Dashboard","description":"Get a dashboard with its widgets (including each widget's metrics and layout), ordered by layout position.","operationId":"get_dashboard_v1_dashboards__dashboard_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","title":"Dashboard Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardWithWidgetsModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Dashboards"],"summary":"Update Dashboard","description":"Rename a dashboard or change its description (empty string clears it).","operationId":"update_dashboard_v1_dashboards__dashboard_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","title":"Dashboard Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDashboardBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Dashboards"],"summary":"Delete Dashboard","description":"Delete a dashboard. Widgets survive (only the links are removed via cascade).","operationId":"delete_dashboard_v1_dashboards__dashboard_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","title":"Dashboard Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/dashboards/{dashboard_id}/duplicate":{"post":{"tags":["Dashboards"],"summary":"Duplicate Dashboard","description":"Duplicate a dashboard: new dashboard named '<name> (Copy)' linking the same widgets with the same layout.","operationId":"duplicate_dashboard_v1_dashboards__dashboard_id__duplicate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","title":"Dashboard Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/dashboards/{dashboard_id}/layout":{"put":{"tags":["Dashboards"],"summary":"Update Dashboard Layout","description":"Set widget positions/sizes on a dashboard. Widgets not linked to the dashboard are ignored.","operationId":"update_dashboard_layout_v1_dashboards__dashboard_id__layout_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","title":"Dashboard Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLayoutBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/dashboards/{dashboard_id}/widgets/{widget_id}":{"post":{"tags":["Dashboards"],"summary":"Add Widget To Dashboard","description":"Link an existing widget to a dashboard. 409 if it is already on the dashboard.","operationId":"add_widget_to_dashboard_v1_dashboards__dashboard_id__widgets__widget_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","title":"Dashboard Id"}},{"name":"widget_id","in":"path","required":true,"schema":{"type":"string","title":"Widget Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Dashboards"],"summary":"Remove Widget From Dashboard","description":"Unlink a widget from a dashboard. The widget itself is kept; delete it via DELETE /v1/widgets/{widget_id}.","operationId":"remove_widget_from_dashboard_v1_dashboards__dashboard_id__widgets__widget_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","title":"Dashboard Id"}},{"name":"widget_id","in":"path","required":true,"schema":{"type":"string","title":"Widget Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/widgets":{"get":{"tags":["Widgets"],"summary":"List Widgets","description":"List all widgets in the organization (with their metrics), newest first.","operationId":"list_widgets_v1_widgets_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"data_type","in":"query","required":false,"schema":{"anyOf":[{"enum":["observability","simulation"],"type":"string"},{"type":"null"}],"title":"Data Type"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WidgetModel"},"title":"Response List Widgets V1 Widgets Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Widgets"],"summary":"Create Widget","description":"Create a widget with its metrics; optionally link it to a dashboard in the same call.","operationId":"create_widget_v1_widgets_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWidgetBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WidgetModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/widgets/{widget_id}":{"get":{"tags":["Widgets"],"summary":"Get Widget","description":"Get one widget with its metrics.","operationId":"get_widget_v1_widgets__widget_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"widget_id","in":"path","required":true,"schema":{"type":"string","title":"Widget Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WidgetModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Widgets"],"summary":"Update Widget","description":"Replace a widget's configuration and metrics (full replace; data_type cannot change).","operationId":"update_widget_v1_widgets__widget_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"widget_id","in":"path","required":true,"schema":{"type":"string","title":"Widget Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWidgetBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WidgetModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Widgets"],"summary":"Delete Widget","description":"Delete a widget everywhere: removed from all dashboards, metrics deleted via cascade.","operationId":"delete_widget_v1_widgets__widget_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"widget_id","in":"path","required":true,"schema":{"type":"string","title":"Widget Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/widgets/{widget_id}/duplicate":{"post":{"tags":["Widgets"],"summary":"Duplicate Widget","description":"Duplicate a widget ('Copy of <name>') with its metrics; optionally link the copy to a dashboard.","operationId":"duplicate_widget_v1_widgets__widget_id__duplicate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"widget_id","in":"path","required":true,"schema":{"type":"string","title":"Widget Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DuplicateWidgetBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WidgetModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/seed-bbb-agents":{"post":{"tags":["BBB"],"summary":"Seed Bbb Agents Endpoint","operationId":"seed_bbb_agents_endpoint_v1_seed_bbb_agents_post","parameters":[{"name":"x-internal-token","in":"header","required":false,"schema":{"type":"string","title":"X-Internal-Token"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeedBbbRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/bbb-livekit-token/{secret}":{"post":{"tags":["BBB"],"summary":"Bbb Livekit Token","description":"Mint a room token on the shared BBB LiveKit project, dispatching the BBB agent.\nAuthed by the shared path secret; only ever serves the known BBB agent names, and\nonly ever touches the BBB project, so the worst case for a leaked URL is reaching\nthe already-public challenges.","operationId":"bbb_livekit_token_v1_bbb_livekit_token__secret__post","parameters":[{"name":"secret","in":"path","required":true,"schema":{"type":"string","title":"Secret"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BbbTokenRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/simulation/{simulation_id}":{"delete":{"tags":["Simulations"],"summary":"Delete Simulation","description":"Delete a specific simulation by ID.","operationId":"delete_simulation_v1_simulation__simulation_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"simulation_id","in":"path","required":true,"schema":{"type":"integer","title":"Simulation Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteSimulationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Simulations"],"summary":"Update Simulation","description":"update a specific simulation by id.","operationId":"update_simulation_v1_simulation__simulation_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"simulation_id","in":"path","required":true,"schema":{"type":"integer","title":"Simulation Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__api__simulations__UpdateSimulationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationPydantic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Simulations"],"summary":"Get Simulation","description":"Get a specific simulation by ID.","operationId":"get_simulation_v1_simulation__simulation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"simulation_id","in":"path","required":true,"schema":{"type":"integer","title":"Simulation Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationPydantic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/simulation/{simulation_id}/add-digital-humans":{"post":{"tags":["Simulations"],"summary":"Add Digital Humans To Simulation","description":"add existing digital humans to a simulation without replacing existing associations.","operationId":"add_digital_humans_to_simulation_v1_simulation__simulation_id__add_digital_humans_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"simulation_id","in":"path","required":true,"schema":{"type":"integer","title":"Simulation Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddDigitalHumansToSimulationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddDigitalHumansToSimulationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/simulation/{simulation_id}/remove-digital-humans":{"post":{"tags":["Simulations"],"summary":"Remove Digital Humans From Simulation","description":"remove digital humans from a simulation (unlink only); idempotent for missing links.","operationId":"remove_digital_humans_from_simulation_v1_simulation__simulation_id__remove_digital_humans_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"simulation_id","in":"path","required":true,"schema":{"type":"integer","title":"Simulation Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveDigitalHumansFromSimulationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveDigitalHumansFromSimulationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/simulations/{simulation_id}/always-on":{"post":{"tags":["Simulations"],"summary":"Set Simulation Always On","description":"Set a simulation always-on and cascade the flag to all of its digital humans.","operationId":"set_simulation_always_on_v1_simulations__simulation_id__always_on_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"simulation_id","in":"path","required":true,"schema":{"type":"integer","title":"Simulation Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetSimulationAlwaysOnRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetSimulationAlwaysOnResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/create-simulation":{"post":{"tags":["Simulations"],"summary":"Create Simulation","description":"Create a new simulation with the provided details.\n\nReturns the simulation id and a status code.","operationId":"create_simulation_v1_create_simulation_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/get-all-simulations":{"get":{"tags":["Simulations"],"summary":"Get All Simulations","description":"Get all simulations for a user.","operationId":"get_all_simulations_v1_get_all_simulations_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSimulationsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/get-simulations-by-agent/{agent_id}":{"get":{"tags":["Simulations"],"summary":"Get Simulations By Agent","description":"Get all simulations for a specific agent.","operationId":"get_simulations_by_agent_v1_get_simulations_by_agent__agent_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSimulationsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/get-simulation-runs/{simulation_id}":{"get":{"tags":["Simulations"],"summary":"Get Simulation Runs","description":"Get all simulation runs for a specific simulation.","operationId":"get_simulation_runs_v1_get_simulation_runs__simulation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"simulation_id","in":"path","required":true,"schema":{"type":"string","title":"Simulation Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSimulationRunsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/simulation-result/{simulation_result_id}":{"delete":{"tags":["Simulation Runs"],"summary":"Delete Simulation Result","description":"Delete a single simulation result (one row in run details) by ID.","operationId":"delete_simulation_result_v1_simulation_result__simulation_result_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"simulation_result_id","in":"path","required":true,"schema":{"type":"integer","title":"Simulation Result Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteSimulationResultResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/simulation-run/{simulation_run_id}":{"delete":{"tags":["Simulation Runs"],"summary":"Delete Simulation Run","description":"Delete a single simulation run by ID. This will also delete all associated test results.","operationId":"delete_simulation_run_v1_simulation_run__simulation_run_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"simulation_run_id","in":"path","required":true,"schema":{"type":"integer","title":"Simulation Run Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteSimulationRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/create-custom-metric":{"post":{"tags":["Custom Metrics"],"summary":"Create Custom Metric","description":"Create a new custom metric.","operationId":"create_custom_metric_v1_create_custom_metric_post","deprecated":true,"security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMetricRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/create-metric":{"post":{"tags":["Custom Metrics"],"summary":"Create Custom Metric","description":"Create a new custom metric.","operationId":"create_custom_metric_v1_create_metric_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMetricRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/create-custom-metrics":{"post":{"tags":["Custom Metrics"],"summary":"Create Custom Metrics","description":"Create multiple custom metrics synchronously using a single bulk insert.","operationId":"create_custom_metrics_v1_create_custom_metrics_post","deprecated":true,"security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMetricsBulkRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMetricsBulkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/create-metrics":{"post":{"tags":["Custom Metrics"],"summary":"Create Custom Metrics","description":"Create multiple custom metrics synchronously using a single bulk insert.","operationId":"create_custom_metrics_v1_create_metrics_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMetricsBulkRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMetricsBulkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/custom-metric/{metric_id}":{"get":{"tags":["Custom Metrics"],"summary":"Get Custom Metric","description":"Get a specific custom metric by ID.","operationId":"get_custom_metric_v1_custom_metric__metric_id__get","deprecated":true,"security":[{"HTTPBearer":[]}],"parameters":[{"name":"metric_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Metric Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Custom Metrics"],"summary":"Delete Custom Metric","description":"Delete a specific custom metric by ID.","operationId":"delete_custom_metric_v1_custom_metric__metric_id__delete","deprecated":true,"security":[{"HTTPBearer":[]}],"parameters":[{"name":"metric_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Metric Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Metric"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/metric/{metric_id}":{"get":{"tags":["Custom Metrics"],"summary":"Get Custom Metric","description":"Get a specific custom metric by ID.","operationId":"get_custom_metric_v1_metric__metric_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"metric_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Metric Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Custom Metrics"],"summary":"Delete Custom Metric","description":"Delete a specific custom metric by ID.","operationId":"delete_custom_metric_v1_metric__metric_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"metric_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Metric Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Metric"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/custom-metrics":{"get":{"tags":["Custom Metrics"],"summary":"Get Custom Metrics","description":"Get all custom metrics, optionally filtered by agent, with pagination.","operationId":"get_custom_metrics_v1_custom_metrics_get","deprecated":true,"security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Page Size"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/metrics":{"get":{"tags":["Custom Metrics"],"summary":"Get Custom Metrics","description":"Get all custom metrics, optionally filtered by agent, with pagination.","operationId":"get_custom_metrics_v1_metrics_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Page Size"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/custom-metrics-by-agent/{agent_id}":{"get":{"tags":["Custom Metrics"],"summary":"Get Custom Metrics By Agent","description":"Get all custom metrics for an agent.","operationId":"get_custom_metrics_by_agent_v1_custom_metrics_by_agent__agent_id__get","deprecated":true,"security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/update-custom-metric/{metric_id}":{"put":{"tags":["Custom Metrics"],"summary":"Update Custom Metric","description":"Update a specific custom metric by ID.","operationId":"update_custom_metric_v1_update_custom_metric__metric_id__put","deprecated":true,"security":[{"HTTPBearer":[]}],"parameters":[{"name":"metric_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Metric Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMetricRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/update-metric/{metric_id}":{"put":{"tags":["Custom Metrics"],"summary":"Update Custom Metric","description":"Update a specific custom metric by ID.","operationId":"update_custom_metric_v1_update_metric__metric_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"metric_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Metric Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMetricRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/update-custom-metrics":{"put":{"tags":["Custom Metrics"],"summary":"Bulk Update Custom Metrics","description":"Bulk update custom metrics: apply the same patch to each metric in metric_ids.\nOnly keys present in updates are applied; each key's value (including null) is written.","operationId":"bulk_update_custom_metrics_v1_update_custom_metrics_put","deprecated":true,"security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUpdateMetricsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUpdateMetricsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/update-metrics":{"put":{"tags":["Custom Metrics"],"summary":"Bulk Update Custom Metrics","description":"Bulk update custom metrics: apply the same patch to each metric in metric_ids.\nOnly keys present in updates are applied; each key's value (including null) is written.","operationId":"bulk_update_custom_metrics_v1_update_metrics_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUpdateMetricsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUpdateMetricsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/delete-custom-metrics":{"post":{"tags":["Custom Metrics"],"summary":"Bulk Delete Custom Metrics","description":"Delete multiple custom metrics by ID.\nAll IDs must exist and belong to the caller's organization (same rules as single delete).","operationId":"bulk_delete_custom_metrics_v1_delete_custom_metrics_post","deprecated":true,"security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDeleteMetricsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDeleteMetricsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/delete-metrics":{"post":{"tags":["Custom Metrics"],"summary":"Bulk Delete Custom Metrics","description":"Delete multiple custom metrics by ID.\nAll IDs must exist and belong to the caller's organization (same rules as single delete).","operationId":"bulk_delete_custom_metrics_v1_delete_metrics_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDeleteMetricsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDeleteMetricsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/generate-custom-metrics":{"post":{"tags":["Custom Metrics"],"summary":"Generate Custom Metrics","description":"Generate custom metrics for a given agent based on its description and knowledge base.","operationId":"generate_custom_metrics_v1_generate_custom_metrics_post","deprecated":true,"security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateMetricsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/generate-metrics":{"post":{"tags":["Custom Metrics"],"summary":"Generate Custom Metrics","description":"Generate custom metrics for a given agent based on its description and knowledge base.","operationId":"generate_custom_metrics_v1_generate_metrics_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateMetricsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/metric-settings":{"get":{"tags":["Custom Metrics"],"summary":"Get Metric Settings","description":"Stored per-org metric enablement rows. Absent row = default (agent/user\nstandard metrics on, conversation_* whole-mix variants off) — resolved by readers.","operationId":"get_metric_settings_v1_metric_settings_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Custom Metrics"],"summary":"Update Metric Settings","description":"Bulk-upsert per-org metric enablement (one row per metric_id).\n\nOnly OPTIONAL standard metrics are toggleable (the library add/remove flow);\nalways-on standards (core/system/red-team) and custom metrics are rejected.\n\nOrg-admin only. metric_settings is deliberately organization-level: it is not one of\nthe stamped tables, so a change here rewrites how EVERY workspace's conversations are\ngraded, including the judge override prompts. Gated only by authentication, any member\nof any workspace, or a workspace-pinned API key, could silently change another team's\neval results. The same gate workspace budgets use.","operationId":"update_metric_settings_v1_metric_settings_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMetricSettingsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/custom-metric-templates":{"get":{"tags":["Custom Metric Templates"],"summary":"List Custom Metric Templates","description":"List Bluejay-authored metric templates in the global library.","operationId":"list_custom_metric_templates_v1_custom_metric_templates_get","deprecated":true,"security":[{"HTTPBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":24,"title":"Page Size"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"response_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Response Type"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/metric-templates":{"get":{"tags":["Custom Metric Templates"],"summary":"List Custom Metric Templates","description":"List Bluejay-authored metric templates in the global library.","operationId":"list_custom_metric_templates_v1_metric_templates_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":24,"title":"Page Size"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"response_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Response Type"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/custom-metric-template/{template_id}":{"get":{"tags":["Custom Metric Templates"],"summary":"Get Custom Metric Template","description":"Get a single metric template by ID.","operationId":"get_custom_metric_template_v1_custom_metric_template__template_id__get","deprecated":true,"security":[{"HTTPBearer":[]}],"parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/metric-template/{template_id}":{"get":{"tags":["Custom Metric Templates"],"summary":"Get Custom Metric Template","description":"Get a single metric template by ID.","operationId":"get_custom_metric_template_v1_metric_template__template_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/custom-metric-templates":{"post":{"tags":["Custom Metric Templates"],"summary":"Admin Create Bluejay Template","description":"Create a Bluejay-authored template (the library seeding mechanism).","operationId":"admin_create_bluejay_template_v1_admin_custom_metric_templates_post","deprecated":true,"parameters":[{"name":"X-Admin-Secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Secret"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminCreateTemplateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/metric-templates":{"post":{"tags":["Custom Metric Templates"],"summary":"Admin Create Bluejay Template","description":"Create a Bluejay-authored template (the library seeding mechanism).","operationId":"admin_create_bluejay_template_v1_admin_metric_templates_post","parameters":[{"name":"X-Admin-Secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Secret"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminCreateTemplateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/custom-metric-template/{template_id}":{"delete":{"tags":["Custom Metric Templates"],"summary":"Admin Delete Template","description":"Delete a template. FK pointers on metrics are set null by the DB.","operationId":"admin_delete_template_v1_admin_custom_metric_template__template_id__delete","deprecated":true,"parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"X-Admin-Secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Secret"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteTemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/metric-template/{template_id}":{"delete":{"tags":["Custom Metric Templates"],"summary":"Admin Delete Template","description":"Delete a template. FK pointers on metrics are set null by the DB.","operationId":"admin_delete_template_v1_admin_metric_template__template_id__delete","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"X-Admin-Secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Secret"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteTemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/observability/conversations":{"get":{"tags":["Observability Conversations"],"summary":"Query Observability Conversations","description":"Query production conversations for this organization.\n\nOmit `group_by` for rows, newest first. Set it for counts per group: by\nstatus, agent, label, day, interface, direction, ended_by, a `metadata_path`,\nor `metric_value` for how a metric came out. Filters apply either way, so one\nnarrowing answers both \"show me\" and \"how many\".","operationId":"query_observability_conversations_v1_observability_conversations_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"e.g. COMPLETED, SYSTEM_ERROR","title":"Status"},"description":"e.g. COMPLETED, SYSTEM_ERROR"},{"name":"agent_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"integer"}},{"type":"null"}],"title":"Agent Ids"}},{"name":"label_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Label Ids"}},{"name":"initiation_direction","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"inbound, outbound","title":"Initiation Direction"},"description":"inbound, outbound"},{"name":"caller_number","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"E.164","title":"Caller Number"},"description":"E.164"},{"name":"duration_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum duration in ms","title":"Duration Min"},"description":"Minimum duration in ms"},{"name":"duration_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum duration in ms","title":"Duration Max"},"description":"Maximum duration in ms"},{"name":"tags","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tags"}},{"name":"conversation_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Conversation Ids"}},{"name":"interface","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Interface"}},{"name":"label","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Label text, resolved to an id","title":"Label"},"description":"Label text, resolved to an id"},{"name":"metadata_path","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Metadata key, e.g. restaurant_code","title":"Metadata Path"},"description":"Metadata key, e.g. restaurant_code"},{"name":"metadata_value","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metadata Value"}},{"name":"metric_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required when group_by is metric_value","title":"Metric Name"},"description":"Required when group_by is metric_value"},{"name":"metric_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Metric Id"}},{"name":"metric_value","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Keep only conversations whose metric came out one of these values. Needs metric_name or metric_id. This is the filter, not the grouping.","title":"Metric Value"},"description":"Keep only conversations whose metric came out one of these values. Needs metric_name or metric_id. This is the filter, not the grouping."},{"name":"metric_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Numeric metrics: keep results at or above this","title":"Metric Min"},"description":"Numeric metrics: keep results at or above this"},{"name":"metric_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Numeric metrics: keep results at or below this","title":"Metric Max"},"description":"Numeric metrics: keep results at or below this"},{"name":"group_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["status","agent","label","day","interface","direction","ended_by","metadata","metric_value"],"type":"string"},{"type":"null"}],"description":"Omit for rows; set for counts","title":"Group By"},"description":"Omit for rows; set for counts"},{"name":"last","in":"query","required":false,"schema":{"enum":["1day","3days","7days","30days","90days","all"],"type":"string","default":"1day","title":"Last"}},{"name":"sort_order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"desc","title":"Sort Order"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Page Size"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/observability/conversations/{conversation_id}":{"get":{"tags":["Observability Conversations"],"summary":"Get Observability Conversation","description":"One conversation, with its transcript and how every metric scored it.\n\nThe metric results come back alongside, because the reason for opening a\nsingle conversation is almost always that a metric flagged it.","operationId":"get_observability_conversation_v1_observability_conversations__conversation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Conversation Id"}},{"name":"include_transcript","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Transcript"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/alerts/test-notification":{"post":{"tags":["Alerts"],"summary":"Send Test Notification","description":"Send a test notification through the alert's configured channels.","operationId":"send_test_notification_v1_alerts_test_notification_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestNotificationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestNotificationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/alerts":{"get":{"tags":["Alerts"],"summary":"Get Alerts","description":"Get all alerts for the organization, optionally filtered by source_scope","operationId":"get_alerts_v1_alerts_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source_scope","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/SourceScope"},{"type":"null"}],"description":"Filter alerts by source scope","title":"Source Scope"},"description":"Filter alerts by source scope"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AlertResponse"},"title":"Response Get Alerts V1 Alerts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/create-alert":{"post":{"tags":["Alerts"],"summary":"Create Alert","description":"Create a new alert with optional agent associations","operationId":"create_alert_v1_create_alert_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAlertRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/update-alert/{alert_id}":{"put":{"tags":["Alerts"],"summary":"Update Alert","description":"Update an existing alert","operationId":"update_alert_v1_update_alert__alert_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Alert Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAlertRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/alert/{alert_id}":{"delete":{"tags":["Alerts"],"summary":"Delete Alert","description":"Delete an alert and its agent associations","operationId":"delete_alert_v1_alert__alert_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Alert Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAlertResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/alerts/{alert_id}/results":{"get":{"tags":["Alerts"],"summary":"Get Alert Results","description":"Get an alert's fired results (events).\n\nConfig is read from the unified ``alerts`` table; events are read from\nClickHouse (observability_alert_events / simulation_alerts_history) by the\nalert's source_scope. Each result resolves to the entity that caused it: for\nsimulation, the experiment (simulation) + run; for observability, the call.\nNewest-first, page-paginated; pass ``source`` to restrict to one data source.","operationId":"get_alert_results_v1_alerts__alert_id__results_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Alert Id"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/AlertResultsSourceFilter"},{"type":"null"}],"description":"Filter results by source: 'simulation' or 'observability'","title":"Source"},"description":"Filter results by source: 'simulation' or 'observability'"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Max results per page","default":20,"title":"Page Size"},"description":"Max results per page"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number (1-based)","default":1,"title":"Page"},"description":"Page number (1-based)"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertResultsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/usage-alerts":{"post":{"tags":["Usage Alerts"],"summary":"Create Usage Alert Endpoint","operationId":"create_usage_alert_endpoint_v1_usage_alerts_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUsageAlertRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageAlertResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Usage Alerts"],"summary":"List Usage Alerts Endpoint","operationId":"list_usage_alerts_endpoint_v1_usage_alerts_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UsageAlertResponse"},"title":"Response List Usage Alerts Endpoint V1 Usage Alerts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/usage-alerts/{usage_alert_id}":{"put":{"tags":["Usage Alerts"],"summary":"Update Usage Alert Endpoint","operationId":"update_usage_alert_endpoint_v1_usage_alerts__usage_alert_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"usage_alert_id","in":"path","required":true,"schema":{"type":"string","title":"Usage Alert Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUsageAlertRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageAlertResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Usage Alerts"],"summary":"Delete Usage Alert Endpoint","operationId":"delete_usage_alert_endpoint_v1_usage_alerts__usage_alert_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"usage_alert_id","in":"path","required":true,"schema":{"type":"string","title":"Usage Alert Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Usage Alert Endpoint V1 Usage Alerts  Usage Alert Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/metronome/webhook":{"post":{"tags":["Metronome Webhook"],"summary":"Receive Metronome Webhook","description":"verify, then route: user usage alert -> notifications; entitlement event -> recompute + cache.","operationId":"receive_metronome_webhook_v1_metronome_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Receive Metronome Webhook V1 Metronome Webhook Post"}}}}},"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}]}},"/v1/slack/assistant/events":{"post":{"tags":["Slack Assistant"],"summary":"Slack Assistant Events","operationId":"slack_assistant_events_v1_slack_assistant_events_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}]}},"/v1/slack/assistant/interactions":{"post":{"tags":["Slack Assistant"],"summary":"Slack Assistant Interactions","description":"Approve/Cancel clicks. Ack fast; decide and execute in the background.","operationId":"slack_assistant_interactions_v1_slack_assistant_interactions_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}]}},"/v1/uptime/monitors":{"get":{"tags":["Uptime"],"summary":"List Uptime Monitors","operationId":"list_uptime_monitors_v1_uptime_monitors_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Uptime"],"summary":"Create Uptime Monitor","operationId":"create_uptime_monitor_v1_uptime_monitors_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUptimeMonitorRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/uptime/monitors/{monitor_id}":{"get":{"tags":["Uptime"],"summary":"Get Uptime Monitor","operationId":"get_uptime_monitor_v1_uptime_monitors__monitor_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"monitor_id","in":"path","required":true,"schema":{"type":"string","title":"Monitor Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Uptime"],"summary":"Update Uptime Monitor","operationId":"update_uptime_monitor_v1_uptime_monitors__monitor_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"monitor_id","in":"path","required":true,"schema":{"type":"string","title":"Monitor Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUptimeMonitorRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Uptime"],"summary":"Delete Uptime Monitor","operationId":"delete_uptime_monitor_v1_uptime_monitors__monitor_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"monitor_id","in":"path","required":true,"schema":{"type":"string","title":"Monitor Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/uptime/monitors/{monitor_id}/series":{"get":{"tags":["Uptime"],"summary":"Get Uptime Monitor Series","description":"Uptime % series (UP / (UP+DOWN)) for the 'Uptime over time' chart, over the last `days`.\n\nAggregated in SQL so long windows don't pull every check row: daily buckets by default, or\nhourly (`bucket=hour`) for the sub-day (24h) window.","operationId":"get_uptime_monitor_series_v1_uptime_monitors__monitor_id__series_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"monitor_id","in":"path","required":true,"schema":{"type":"string","title":"Monitor Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"description":"Lookback window in days.","default":7,"title":"Days"},"description":"Lookback window in days."},{"name":"bucket","in":"query","required":false,"schema":{"type":"string","pattern":"^(hour|day)$","description":"Aggregation granularity.","default":"day","title":"Bucket"},"description":"Aggregation granularity."},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/uptime/monitors/{monitor_id}/incidents/resolve":{"post":{"tags":["Uptime"],"summary":"Resolve Uptime Incidents","description":"Clear a monitor's outstanding incidents by resolving its unresolved DOWN checks.","operationId":"resolve_uptime_incidents_v1_uptime_monitors__monitor_id__incidents_resolve_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"monitor_id","in":"path","required":true,"schema":{"type":"string","title":"Monitor Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/uptime/monitors/{monitor_id}/checks/{check_id}/resolve":{"post":{"tags":["Uptime"],"summary":"Resolve Uptime Check","description":"Resolve a single incident (one unresolved DOWN check) without clearing the rest.","operationId":"resolve_uptime_check_v1_uptime_monitors__monitor_id__checks__check_id__resolve_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"monitor_id","in":"path","required":true,"schema":{"type":"string","title":"Monitor Id"}},{"name":"check_id","in":"path","required":true,"schema":{"type":"string","title":"Check Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/uptime/monitors/{monitor_id}/checks/{check_id}/unresolve":{"post":{"tags":["Uptime"],"summary":"Unresolve Uptime Check","description":"Reopen a resolved incident (undo a mistaken resolve) — the check counts as an incident again.","operationId":"unresolve_uptime_check_v1_uptime_monitors__monitor_id__checks__check_id__unresolve_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"monitor_id","in":"path","required":true,"schema":{"type":"string","title":"Monitor Id"}},{"name":"check_id","in":"path","required":true,"schema":{"type":"string","title":"Check Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/uptime/monitors/{monitor_id}/checks/{check_id}/transcript":{"get":{"tags":["Uptime"],"summary":"Get Uptime Check Transcript","description":"The call transcript for one check run — fetched lazily when a run's sidebar opens.\n\nNever streams transcript bytes through the middleware (same as the eval/log transcript flow):\n- primary runs: return a short-lived signed URL to the backing test_result's storage object,\n  which the browser downloads directly.\n- fallback runs: the turns already live inline on the check row (small JSONB, no storage\n  object to sign), so return them normalized to the frontend TranscriptSegment shape.\nExactly one of `transcript_url` / `transcript` is populated; both null when there's nothing.","operationId":"get_uptime_check_transcript_v1_uptime_monitors__monitor_id__checks__check_id__transcript_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"monitor_id","in":"path","required":true,"schema":{"type":"string","title":"Monitor Id"}},{"name":"check_id","in":"path","required":true,"schema":{"type":"string","title":"Check Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/weekly-notifications":{"post":{"tags":["Weekly notifications"],"summary":"Post Weekly Notifications","description":"Upsert weekly digest notification targets (and optionally UTC weekly schedule) for the current org.","operationId":"post_weekly_notifications_v1_weekly_notifications_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WeeklyNotificationsBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WeeklyNotificationsPostResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/create-customer-persona":{"post":{"tags":["Customer Personas"],"summary":"Create Customer Persona","description":"Create a new customer persona.","operationId":"create_customer_persona_v1_create_customer_persona_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCustomerPersonaRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerPersonaPydantic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/customer-personas-by-agent/{agent_id}":{"get":{"tags":["Customer Personas"],"summary":"Get Customer Personas By Agent","description":"Get all customer personas for an agent.","operationId":"get_customer_personas_by_agent_v1_customer_personas_by_agent__agent_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CustomerPersonaPydantic"},"title":"Response Get Customer Personas By Agent V1 Customer Personas By Agent  Agent Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/customer-persona/{persona_id}":{"get":{"tags":["Customer Personas"],"summary":"Get Customer Persona","description":"Get a specific customer persona by ID.","operationId":"get_customer_persona_v1_customer_persona__persona_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"persona_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Persona Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerPersonaPydantic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Customer Personas"],"summary":"Delete Customer Persona","description":"Delete a specific customer persona by ID.","operationId":"delete_customer_persona_v1_customer_persona__persona_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"persona_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Persona Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerPersonaPydantic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/update-customer-persona/{persona_id}":{"put":{"tags":["Customer Personas"],"summary":"Update Customer Persona","description":"Update a specific customer persona by ID.","operationId":"update_customer_persona_v1_update_customer_persona__persona_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"persona_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Persona Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCustomerPersonaRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerPersonaPydantic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/metrics-lab/evaluate-conversation":{"post":{"tags":["Metrics Lab"],"summary":"Evaluate Conversation","description":"Queue a conversation (call or test_result) for evaluation in the metrics lab.","operationId":"evaluate_conversation_v1_metrics_lab_evaluate_conversation_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluateConversationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluateConversationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/metrics-lab/lab":{"post":{"tags":["Metrics Lab"],"summary":"Create Lab","description":"Create a new lab.","operationId":"create_lab_v1_metrics_lab_lab_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLabRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/metrics-lab/lab/{lab_id}":{"put":{"tags":["Metrics Lab"],"summary":"Update Lab","description":"Update a specific lab by ID.","operationId":"update_lab_v1_metrics_lab_lab__lab_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"lab_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Lab Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLabRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Metrics Lab"],"summary":"Delete Lab","description":"Delete a specific lab by ID.","operationId":"delete_lab_v1_metrics_lab_lab__lab_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"lab_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Lab Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteLabResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Metrics Lab"],"summary":"Get Lab Detail","description":"Get a lab's full state: conversations, metrics, AI annotations, human labels,\nand metric revisions with their AI evaluations.\n\nThis is the read side of the iterate loop: poll it after queueing evaluations to\nobserve results (each evaluation carries a ``status`` of QUEUED/EVALUATING/COMPLETED/…)\nand to compare a revision's results against the base metric and human labels.","operationId":"get_lab_detail_v1_metrics_lab_lab__lab_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"lab_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Lab Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/metrics-lab/lab/{lab_id}/metrics":{"post":{"tags":["Metrics Lab"],"summary":"Add Metrics To Lab","description":"Add metrics to an existing lab.","operationId":"add_metrics_to_lab_v1_metrics_lab_lab__lab_id__metrics_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"lab_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Lab Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddMetricsToLabRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddMetricsToLabResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/metrics-lab/lab/{lab_id}/conversations":{"post":{"tags":["Metrics Lab"],"summary":"Add Conversations To Lab","description":"Add conversations to an existing lab.","operationId":"add_conversations_to_lab_v1_metrics_lab_lab__lab_id__conversations_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"lab_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Lab Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddConversationsToLabRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddConversationsToLabResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Metrics Lab"],"summary":"Remove Conversations From Lab","description":"Remove one or more conversations from an existing lab.","operationId":"remove_conversations_from_lab_v1_metrics_lab_lab__lab_id__conversations_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"lab_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Lab Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveConversationsFromLabRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/metrics-lab/lab/{lab_id}/human-evaluation":{"put":{"tags":["Metrics Lab"],"summary":"Create Or Update Human Evaluation","description":"Create or update a human evaluation for a lab metric result.","operationId":"create_or_update_human_evaluation_v1_metrics_lab_lab__lab_id__human_evaluation_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"lab_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Lab Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrUpdateHumanEvaluationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HumanEvaluationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/metrics-lab/lab/{lab_id}/metric-revisions":{"post":{"tags":["Metrics Lab"],"summary":"Create Metric Revision","description":"Create a new metric revision for a lab. Revision number is auto-incremented by DB trigger.","operationId":"create_metric_revision_v1_metrics_lab_lab__lab_id__metric_revisions_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"lab_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Lab Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMetricRevisionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricRevisionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/metrics-lab/lab/{lab_id}/settings":{"put":{"tags":["Metrics Lab"],"summary":"Update Lab Settings","description":"Update lab settings, merging with existing settings to avoid overwriting other settings.","operationId":"update_lab_settings_v1_metrics_lab_lab__lab_id__settings_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"lab_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Lab Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLabSettingsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLabSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/metrics-lab/labs":{"get":{"tags":["Metrics Lab"],"summary":"List Labs","description":"List the organization's labs, newest first, with conversation/metric/revision counts.","operationId":"list_labs_v1_metrics_lab_labs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Max labs per page","default":20,"title":"Page Size"},"description":"Max labs per page"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number (1-based)","default":1,"title":"Page"},"description":"Page number (1-based)"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/generate-goals":{"post":{"tags":["Goals"],"summary":"Generate Goals Endpoint","description":"Generate high-level goals for a given agent based on its description and knowledge base.","operationId":"generate_goals_endpoint_v1_generate_goals_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateGoalsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/generate-journey-steps":{"post":{"tags":["Journey Steps"],"summary":"Generate Journey Steps Endpoint","description":"Generate a draft of journey steps for an agent from a plain-language description.","operationId":"generate_journey_steps_endpoint_v1_generate_journey_steps_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateJourneyStepsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/traces/{trace_id}":{"post":{"tags":["Traces"],"summary":"Get Trace","operationId":"get_trace_v1_traces__trace_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"trace_id","in":"path","required":true,"schema":{"type":"string","title":"Trace Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/spans/{trace_id}/{span_id}":{"post":{"tags":["Traces"],"summary":"Get Span","operationId":"get_span_v1_spans__trace_id___span_id__post","security":[{"HTTPBearer":[]}],"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":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/traces":{"get":{"tags":["Traces"],"summary":"Get All Traces","operationId":"get_all_traces_v1_traces_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of traces to return","default":50,"title":"Limit"},"description":"Number of traces to return"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/phone-numbers":{"get":{"tags":["Phone Numbers"],"summary":"Get Phone Numbers","description":"Return phone number under an org","operationId":"get_phone_numbers_v1_phone_numbers_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PhoneNumberResponse"},"title":"Response Get Phone Numbers V1 Phone Numbers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/phone-numbers/add":{"post":{"tags":["Phone Number Management"],"summary":"Add Phone Number","operationId":"add_phone_number_v1_phone_numbers_add_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddPhoneNumberRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddPhoneNumbersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/phone-numbers/sms-enabled":{"get":{"tags":["Phone Number Management"],"summary":"Get Sms Enabled Phone Numbers","description":"Which of the org's numbers can send and receive text messages, by Twilio line type.","operationId":"get_sms_enabled_phone_numbers_v1_phone_numbers_sms_enabled_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmsEnabledPhoneNumbersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/phone-numbers/{phone_number}/release":{"delete":{"tags":["Phone Number Management"],"summary":"Release Phone Number","operationId":"release_phone_number_v1_phone_numbers__phone_number__release_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"phone_number","in":"path","required":true,"schema":{"type":"string","title":"Phone Number"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleasePhoneNumberResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/retell":{"post":{"tags":["retell"],"summary":"Handle Webhook","description":"Handle Retell webhook events. Signature verification runs before any\nbusiness logic (including the call_analysis wait path) so unauthenticated\nclients cannot elicit 200s.","operationId":"handle_webhook_v1_integrations_retell_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}]}},"/v1/integrations/retell/sync-agent":{"post":{"tags":["retell"],"summary":"Sync Single Agent From Retell","description":"Trigger an async sync of a single Retell agent's name + prompt.","operationId":"sync_single_agent_from_retell_v1_integrations_retell_sync_agent_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncSingleAgentFromRetellRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/retell/sync":{"post":{"tags":["retell"],"summary":"Sync Retell Agents","description":"Trigger an async sync of all Retell agents into Bluejay agents.","operationId":"sync_retell_agents_v1_integrations_retell_sync_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncRetellAgentsRequest","default":{"dry_run":true}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/bland/voice-session":{"post":{"tags":["bland"],"summary":"Create Bland Voice Session","description":"Mint a single-use Bland Persona session and return the websocket URL to speak to it.\n\nThe token is short-lived and single-use, so it can't be stored on the agent — the LiveKit\nbridge asks for one per call. Minting stays here because it needs the org's API key, which\nnever leaves the backend.","operationId":"create_bland_voice_session_v1_integrations_bland_voice_session_post","parameters":[{"name":"X-Webhook-Secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Webhook-Secret"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlandVoiceSessionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Bland Voice Session V1 Integrations Bland Voice Session Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/bland/sync":{"post":{"tags":["bland"],"summary":"Sync Bland Agents","description":"Trigger an async sync of all Bland pathways into Bluejay agents.","operationId":"sync_bland_agents_v1_integrations_bland_sync_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncBlandAgentsRequest","default":{"dry_run":true}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/bland":{"post":{"tags":["bland"],"summary":"Handle Webhook","operationId":"handle_webhook_v1_integrations_bland_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}]}},"/v1/integrations/bland/pathways":{"get":{"tags":["bland"],"summary":"List Bland Pathways","description":"List Bland pathways for the org's stored API key. Powers the pathway picker on Add Agent.","operationId":"list_bland_pathways_v1_integrations_bland_pathways_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Bland Pathways V1 Integrations Bland Pathways Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/vapi":{"post":{"tags":["vapi"],"summary":"Handle Webhook","description":"Handle VAPI webhook events.","operationId":"handle_webhook_v1_integrations_vapi_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}]}},"/v1/integrations/vapi/squad":{"post":{"tags":["vapi"],"summary":"Create Vapi Squad","operationId":"create_vapi_squad_v1_integrations_vapi_squad_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateVapiSquadRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Vapi Squad V1 Integrations Vapi Squad Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/vapi/sync":{"post":{"tags":["vapi"],"summary":"Sync Vapi Agents","description":"Trigger an async sync of all Vapi assistants into Bluejay agents.\n\nAdmins may pass organization_id to sync any org.\nNon-admins are restricted to their own org.","operationId":"sync_vapi_agents_v1_integrations_vapi_sync_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncVapiAgentsRequest","default":{"dry_run":true}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/vapi/sync-agent":{"post":{"tags":["vapi"],"summary":"Sync Single Agent From Vapi","description":"Trigger an async sync of a single Vapi agent's name and prompt from Vapi.","operationId":"sync_single_agent_from_vapi_v1_integrations_vapi_sync_agent_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncSingleAgentFromVapiRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/vapi/tools":{"get":{"tags":["vapi"],"summary":"List Vapi Tools","operationId":"list_vapi_tools_v1_integrations_vapi_tools_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Vapi Tools V1 Integrations Vapi Tools Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/vapi/agents/{agent_id}/tools":{"get":{"tags":["vapi"],"summary":"List Vapi Assistant Tools","operationId":"list_vapi_assistant_tools_v1_integrations_vapi_agents__agent_id__tools_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Vapi Assistant Tools V1 Integrations Vapi Agents  Agent Id  Tools Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["vapi"],"summary":"Add Vapi Assistant Tool","operationId":"add_vapi_assistant_tool_v1_integrations_vapi_agents__agent_id__tools_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachVapiToolRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Add Vapi Assistant Tool V1 Integrations Vapi Agents  Agent Id  Tools Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/vapi/agents/{agent_id}/tools/{tool_id}":{"delete":{"tags":["vapi"],"summary":"Remove Vapi Assistant Tool","operationId":"remove_vapi_assistant_tool_v1_integrations_vapi_agents__agent_id__tools__tool_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"tool_id","in":"path","required":true,"schema":{"type":"string","title":"Tool Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Remove Vapi Assistant Tool V1 Integrations Vapi Agents  Agent Id  Tools  Tool Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/livekit/{token}":{"post":{"tags":["livekit"],"summary":"Handle Webhook","operationId":"handle_webhook_v1_integrations_livekit__token__post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/google-ces/mint-token":{"post":{"tags":["google_ces"],"summary":"Mint Token","operationId":"mint_token_v1_integrations_google_ces_mint_token_post","parameters":[{"name":"X-Webhook-Secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Webhook-Secret"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MintTokenRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__api__integrations__google_ces__google_ces__MintTokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/google-ces/resolve-tool-response":{"post":{"tags":["google_ces"],"summary":"Resolve Tool Response Endpoint","operationId":"resolve_tool_response_endpoint_v1_integrations_google_ces_resolve_tool_response_post","parameters":[{"name":"X-Webhook-Secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Webhook-Secret"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveToolResponseRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveToolResponseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/google-dfcx/mint-token":{"post":{"tags":["google_dfcx"],"summary":"Mint Token","operationId":"mint_token_v1_integrations_google_dfcx_mint_token_post","parameters":[{"name":"X-Webhook-Secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Webhook-Secret"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MintTokenRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__api__integrations__google_dfcx__google_dfcx__MintTokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/google-agents/available":{"get":{"tags":["google_agents"],"summary":"List Available Google Agents","description":"List Google CES + DFCX agents visible via the org WIF, without persisting.","operationId":"list_available_google_agents_v1_integrations_google_agents_available_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Available Google Agents V1 Integrations Google Agents Available Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/google-agents/test-connection":{"post":{"tags":["google_agents"],"summary":"Verify Google Connection","description":"Prove the keyless Google Cloud connection works and report exactly what\nBluejay can reach. Mints a federated + impersonated token, then probes each\nconfigured service with a cheap read. Returns per-service reachable/denied so\nthe customer sees their granted access instead of guessing at IAM.\n\nNamed `verify_*` rather than `test_*` so it isn't mistaken for (or collected\nas) a test; the customer-facing route stays `/test-connection`.","operationId":"verify_google_connection_v1_integrations_google_agents_test_connection_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Verify Google Connection V1 Integrations Google Agents Test Connection Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/google-agents/sync":{"post":{"tags":["google_agents"],"summary":"Sync Google Agents","description":"Trigger a synchronous sync of all Google CES + DFCX agents for the org.\n\nReturns a result dict with counts of created/updated/removed agents per provider\nand any per-location errors encountered during the sync.\n\nAccepts an optional JSON body. When ``sync_all`` is explicitly ``false`` and\n``dfcx_agent_ids`` / ``ces_keys`` are provided, only those agents are synced\nand mark-removed is skipped. Any other body (or no body) triggers a full sync.","operationId":"sync_google_agents_v1_integrations_google_agents_sync_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Sync Google Agents V1 Integrations Google Agents Sync Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/queue-sms-simulation-run":{"post":{"tags":["Text Simulations"],"summary":"Queue Sms Simulation Run","operationId":"queue_sms_simulation_run_v1_queue_sms_simulation_run_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__text_agents__sms_text_agent_api__SimulationRunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__text_agents__sms_text_agent_api__SimulationRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/receive-text-message":{"post":{"tags":["Text Simulations"],"summary":"Receive Text Message","operationId":"receive_text_message_v1_receive_text_message_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}]}},"/v1/queue-http-text-simulation-run":{"post":{"tags":["HTTP Text Agent"],"summary":"Queue Http Simulation Run","description":"Queue a new simulation run and test results for HTTP text agent.\nTakes simulation_id, optional prompt_id, knowledge_base_id, and digital_human_ids.\nIf digital_human_ids is not provided, uses all digital humans for the simulation.\nReturns simulation_run_id (experiment_run_id) and simulation_result_ids (array of test result IDs).","operationId":"queue_http_simulation_run_v1_queue_http_text_simulation_run_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpSimulationRunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpSimulationRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/kore-webhook/{agent_id}":{"post":{"tags":["HTTP Text Agent"],"summary":"Kore Webhook","description":"Inbound webhook endpoint for Kore.ai bots.\n\nThe customer pastes this URL into Kore's Webhook Channel Post URL field along with\nthe Bluejay-provisioned access token. The token authenticates Kore→Bluejay calls;\n`to` carries the simulation_result_id (round-tripped from `from.id` on the way out).","operationId":"kore_webhook_v1_kore_webhook__agent_id__post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpTextMessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/send-http-text-message":{"post":{"tags":["HTTP Text Agent"],"summary":"Send Http Text Message","description":"Receive a text message via HTTP, process it through the lambda, and send response to webhook.\nUses simulation_result_id (sim_conversation_id) for Redis operations and evaluations.","operationId":"send_http_text_message_v1_send_http_text_message_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendHttpTextMessageRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpTextMessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}]}},"/v1/call-webhook":{"post":{"tags":["Twilio SIP Webhook"],"summary":"Handle Call Webhook","description":"Handle call webhook events\n\nWebhook is triggered when a call is made via Twilio Programmable SIP domain.","operationId":"handle_call_webhook_v1_call_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}]}},"/v1/generate-signing-key":{"post":{"tags":["Webhook Management"],"summary":"Generate Signing Key","description":"Generate a new signing key for a webhook","operationId":"generate_signing_key_v1_generate_signing_key_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/get-signing-key":{"post":{"tags":["Webhook Management"],"summary":"Get Signing Key","description":"Get the signing key for a webhook","operationId":"get_signing_key_v1_get_signing_key_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks/reducto":{"post":{"tags":["Webhook Management"],"summary":"Reducto Webhook","operationId":"reducto_webhook_v1_webhooks_reducto_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}]}},"/v1/webhooks/firecrawl":{"post":{"tags":["Webhook Management"],"summary":"Firecrawl Webhook","operationId":"firecrawl_webhook_v1_webhooks_firecrawl_post","parameters":[{"name":"x-firecrawl-signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Firecrawl-Signature"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/document/get-upload-url":{"post":{"tags":["Documents"],"summary":"Get Upload Url","description":"Mint a presigned PUT URL. No DB write — document_id is only allocated.","operationId":"get_upload_url_v1_document_get_upload_url_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUploadUrlRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUploadUrlResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/document":{"post":{"tags":["Documents"],"summary":"Create Document","description":"Create the document row and start ingestion. File flow requires a prior PUT to S3.","operationId":"create_document_v1_document_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/FileDocumentRequest"},{"$ref":"#/components/schemas/UrlDocumentRequest"},{"$ref":"#/components/schemas/TextDocumentRequest"}],"title":"Body"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentUploadResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/document/{document_id}":{"get":{"tags":["Documents"],"summary":"Get Document","operationId":"get_document_v1_document__document_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Documents"],"summary":"Delete Document","operationId":"delete_document_v1_document__document_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/document/{document_id}/content":{"get":{"tags":["Documents"],"summary":"Get Document Content","description":"Return the parsed markdown for a document. Used by the FE preview/edit modal.","operationId":"get_document_content_v1_document__document_id__content_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Documents"],"summary":"Update Document Content","description":"Overwrite the parsed content for a typed-text document and re-trigger ingestion.\n\nOnly TEXT documents can be edited inline — PDF/URL must be deleted and re-uploaded\nbecause their canonical source lives outside Bluejay.","operationId":"update_document_content_v1_document__document_id__content_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDocumentContentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentUploadResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/workflow-extraction/uploads":{"post":{"tags":["Workflow Extraction"],"summary":"Presign Upload","operationId":"presign_upload_v1_workflow_extraction_uploads_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresignUploadRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/workflow-extraction/uploads/download-url":{"post":{"tags":["Workflow Extraction"],"summary":"Presign Download","description":"Presign read access to a chat upload so the frontend can process it\nserver-side (e.g. checklist test-plan ingestion) without holding S3\ncredentials for the documents bucket — mirrors the org guard used by\nsubmit_extraction_job.","operationId":"presign_download_v1_workflow_extraction_uploads_download_url_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresignDownloadRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/workflow-extraction/jobs":{"post":{"tags":["Workflow Extraction"],"summary":"Submit Extraction Job","operationId":"submit_extraction_job_v1_workflow_extraction_jobs_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitExtractionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/workflow-extraction/jobs/{provider_job_id}":{"get":{"tags":["Workflow Extraction"],"summary":"Get Extraction Job","operationId":"get_extraction_job_v1_workflow_extraction_jobs__provider_job_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"provider_job_id","in":"path","required":true,"schema":{"type":"string","title":"Provider Job Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Extraction Job V1 Workflow Extraction Jobs  Provider Job Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/knowledge-base":{"post":{"tags":["Knowledge Bases"],"summary":"Create Knowledge Base","operationId":"create_knowledge_base_v1_knowledge_base_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKnowledgeBaseRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeBaseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Knowledge Bases"],"summary":"List Knowledge Bases","operationId":"list_knowledge_bases_v1_knowledge_base_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseListItem"},"title":"Response List Knowledge Bases V1 Knowledge Base Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/knowledge-base/{knowledge_base_id}":{"get":{"tags":["Knowledge Bases"],"summary":"Get Knowledge Base","operationId":"get_knowledge_base_v1_knowledge_base__knowledge_base_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"knowledge_base_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Knowledge Base Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeBaseDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Knowledge Bases"],"summary":"Update Knowledge Base","operationId":"update_knowledge_base_v1_knowledge_base__knowledge_base_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"knowledge_base_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Knowledge Base Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateKnowledgeBaseRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeBaseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Knowledge Bases"],"summary":"Delete Knowledge Base","operationId":"delete_knowledge_base_v1_knowledge_base__knowledge_base_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"knowledge_base_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Knowledge Base Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/knowledge-base/{knowledge_base_id}/agents/{agent_id}":{"post":{"tags":["Knowledge Bases"],"summary":"Attach Agent To Knowledge Base","operationId":"attach_agent_to_knowledge_base_v1_knowledge_base__knowledge_base_id__agents__agent_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"knowledge_base_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Knowledge Base Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachAgentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Knowledge Bases"],"summary":"Detach Agent From Knowledge Base","operationId":"detach_agent_from_knowledge_base_v1_knowledge_base__knowledge_base_id__agents__agent_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"knowledge_base_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Knowledge Base Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations":{"get":{"tags":["Integration Keys"],"summary":"Get Integrations","description":"Return integration metadata for the authenticated org.\nSecret fields are returned as null with companion _set booleans.","operationId":"get_integrations_v1_integrations_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace whose integrations to read; defaults to the org's default workspace","title":"Workspace Id"},"description":"Workspace whose integrations to read; defaults to the org's default workspace"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Integration Keys"],"summary":"Patch Integrations","description":"Update integration fields. Secret fields are encrypted before storage.\nSend null to clear a field. Only include fields that changed.\nPrefer POST /update-integrations for a typed, agent-style contract.\n\nWhen `ces_wif_config_json` is included in the payload, a background Google\nAgents sync (CES + DFCX) is kicked off fire-and-forget so the credential\nsave is never blocked by a potentially slow sync.","operationId":"patch_integrations_v1_integrations_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/get-integration-key":{"post":{"tags":["Integration Keys"],"summary":"Get Integration Key","description":"Decrypt and return a single integration secret field.","operationId":"get_integration_key_v1_get_integration_key_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/update-integrations":{"post":{"tags":["Integration Keys"],"summary":"Update Integrations","description":"Update integration fields for the authenticated org (middleware encrypts secrets before DB write).\nSame semantics as PATCH /integrations: only send fields to change; null clears a field.","operationId":"update_integrations_v1_update_integrations_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationsUpdateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/regenerate-livekit-webhook-token":{"post":{"tags":["Integration Keys"],"summary":"Regenerate Livekit Webhook Token","description":"Mint a fresh LiveKit webhook token (part of URL) for one workspace, rotating any existing one.","operationId":"regenerate_livekit_webhook_token_v1_regenerate_livekit_webhook_token_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace whose LiveKit webhook token to rotate; defaults to the org's default workspace","title":"Workspace Id"},"description":"Workspace whose LiveKit webhook token to rotate; defaults to the org's default workspace"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegenerateLiveKitTokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/create-digital-human":{"post":{"tags":["Digital Humans"],"summary":"Create Digital Human","description":"Create a new digital human.","operationId":"create_digital_human_v1_create_digital_human_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDigitalHumanRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__models__digital_humans__digital_human_response__DigitalHumanResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/create-digital-humans":{"post":{"tags":["Digital Humans"],"summary":"Bulk Create Digital Humans","description":"Bulk create digital humans.\n\nAll database operations are batched to O(1) round-trips regardless of input size.\nItems that fail validation are reported in `errors`; the rest proceed to creation.","operationId":"bulk_create_digital_humans_v1_create_digital_humans_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkCreateDigitalHumansRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkCreateDigitalHumansResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/digital-human/{digital_human_id}":{"get":{"tags":["Digital Humans"],"summary":"Get Digital Human","description":"Get a digital human by ID.","operationId":"get_digital_human_v1_digital_human__digital_human_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"digital_human_id","in":"path","required":true,"schema":{"type":"integer","title":"Digital Human Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__models__digital_humans__digital_human_response__DigitalHumanResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Digital Humans"],"summary":"Delete Digital Human","description":"Delete a digital human by ID.","operationId":"delete_digital_human_v1_digital_human__digital_human_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"digital_human_id","in":"path","required":true,"schema":{"type":"integer","title":"Digital Human Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DigitalHumanResponseData"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/digital-human-by-test-name/{test_name}":{"get":{"tags":["Digital Humans"],"summary":"Get Digital Human By Test Name","description":"Get a digital human by test_name (returns first match within the org).","operationId":"get_digital_human_by_test_name_v1_digital_human_by_test_name__test_name__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"test_name","in":"path","required":true,"schema":{"type":"string","title":"Test Name"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__models__digital_humans__digital_human_response__DigitalHumanResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/digital-humans-by-simulation/{simulation_id}":{"get":{"tags":["Digital Humans"],"summary":"Get Digital Humans By Simulation","description":"Get digital humans by simulation ID.","operationId":"get_digital_humans_by_simulation_v1_digital_humans_by_simulation__simulation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"simulation_id","in":"path","required":true,"schema":{"type":"integer","title":"Simulation Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DigitalHumansListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/digital-humans":{"get":{"tags":["Digital Humans"],"summary":"Get All Digital Humans","description":"Get all of your digital humans.","operationId":"get_all_digital_humans_v1_digital_humans_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Max digital humans per page","default":20,"title":"Page Size"},"description":"Max digital humans per page"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number (1-based)","default":1,"title":"Page"},"description":"Page number (1-based)"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedDigitalHumansResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/update-digital-human/{digital_human_id}":{"put":{"tags":["Digital Humans"],"summary":"Update Digital Human","description":"Update a digital human by ID.","operationId":"update_digital_human_v1_update_digital_human__digital_human_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"digital_human_id","in":"path","required":true,"schema":{"type":"integer","title":"Digital Human Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDigitalHumanRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__models__digital_humans__digital_human_response__DigitalHumanResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/update-digital-humans":{"put":{"tags":["Digital Humans"],"summary":"Bulk Update Digital Humans","operationId":"bulk_update_digital_humans_v1_update_digital_humans_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUpdateDigitalHumansRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUpdateDigitalHumansResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/digital-human/{digital_human_id}/duplicate":{"post":{"tags":["Digital Humans"],"summary":"Duplicate Digital Human","description":"Duplicate a digital human at the database level.\n\nCopies every column of the source row (cloned voice, custom background noise,\ninterruption/speaks-first configs, transcripts, audio quirks) plus its traits,\nscripted responses and expected tool calls — without re-validating stored\nvalues, so copies of voice-ambience or custom-noise digital humans always\nsucceed. The copy starts without a phone number and always-on inactive.","operationId":"duplicate_digital_human_v1_digital_human__digital_human_id__duplicate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"digital_human_id","in":"path","required":true,"schema":{"type":"integer","title":"Digital Human Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/DuplicateDigitalHumanRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__models__digital_humans__digital_human_response__DigitalHumanResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/delete-digital-humans":{"delete":{"tags":["Digital Humans"],"summary":"Bulk Delete Digital Humans","description":"Bulk delete digital humans by ID.\n\nAll database operations are batched to O(1) round-trips regardless of input size:\n1. Batch fetch test cases with traits and scripted responses (single joined select)\n2. Batch delete experiment_test_cases\n3. Batch delete test_cases","operationId":"bulk_delete_digital_humans_v1_delete_digital_humans_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"digital_human_ids","in":"query","required":true,"schema":{"type":"string","description":"Comma-separated list of digital human IDs to delete. Maximum 100 IDs. Example: 1,2,3","title":"Digital Human Ids"},"description":"Comma-separated list of digital human IDs to delete. Maximum 100 IDs. Example: 1,2,3"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDeleteDigitalHumansResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/custom-background-noises":{"get":{"tags":["Digital Humans"],"summary":"List Custom Background Noises","description":"List the caller org's custom background noises, oldest first.\n\nEach row carries usage_count (referencing digital humans) so the UI can warn\nbefore delete; the DELETE endpoint stays the authoritative guard.","operationId":"list_custom_background_noises_v1_custom_background_noises_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CustomBackgroundNoise"},"title":"Response List Custom Background Noises V1 Custom Background Noises Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Digital Humans"],"summary":"Create Custom Background Noise","description":"Register an already-uploaded noise. The path must live under the caller\norg's upload prefix; the org is capped at MAX_CUSTOM_BACKGROUND_NOISES.","operationId":"create_custom_background_noise_v1_custom_background_noises_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCustomBackgroundNoiseRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomBackgroundNoise"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/custom-background-noises/upload-url":{"post":{"tags":["Digital Humans"],"summary":"Create Custom Background Noise Upload Url","description":"Mint a one-time signed PUT URL for uploading a noise file directly to the\nskywatch bucket (org-scoped path). Upload the raw bytes to upload_url with\nHTTP PUT, then register storage_path via POST /custom-background-noises.","operationId":"create_custom_background_noise_upload_url_v1_custom_background_noises_upload_url_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUploadUrlRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Custom Background Noise Upload Url V1 Custom Background Noises Upload Url Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/custom-background-noises/{noise_id}":{"patch":{"tags":["Digital Humans"],"summary":"Update Custom Background Noise","description":"Rename a noise. The storage_path is immutable (re-upload = new row).","operationId":"update_custom_background_noise_v1_custom_background_noises__noise_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"noise_id","in":"path","required":true,"schema":{"type":"string","title":"Noise Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCustomBackgroundNoiseRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomBackgroundNoise"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Digital Humans"],"summary":"Delete Custom Background Noise","description":"Remove a noise from the library. Blocked (409) while any digital human\nstill references its storage_path. Never deletes the storage object.","operationId":"delete_custom_background_noise_v1_custom_background_noises__noise_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"noise_id","in":"path","required":true,"schema":{"type":"string","title":"Noise Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Custom Background Noise V1 Custom Background Noises  Noise Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/generate-objectives":{"post":{"tags":["Digital Humans"],"summary":"Generate Objectives Endpoint","description":"Generate objectives for a test case from its intent.","operationId":"generate_objectives_endpoint_v1_generate_objectives_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateObjectivesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateObjectivesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/generate-intent-summary":{"post":{"tags":["Digital Humans"],"summary":"Generate Intent Summary Endpoint","description":"Generate intent summary for a test case (only if intent exceeds character limit).","operationId":"generate_intent_summary_endpoint_v1_generate_intent_summary_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateIntentSummaryRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateIntentSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/generate-prompt-summary":{"post":{"tags":["Digital Humans"],"summary":"Generate Prompt Summary Endpoint","description":"Generate prompt summary for a prompt (only if prompt exceeds character limit).","operationId":"generate_prompt_summary_endpoint_v1_generate_prompt_summary_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneratePromptSummaryRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneratePromptSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/generate-formatted-transcript":{"post":{"tags":["Digital Humans"],"summary":"Generate Formatted Transcript Endpoint","description":"Take a raw transcript and return the structured transcript, derived utterances, and speaks_first.","operationId":"generate_formatted_transcript_endpoint_v1_generate_formatted_transcript_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateFormattedTranscriptRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateFormattedTranscriptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/generate-digital-humans":{"post":{"tags":["Digital Humans"],"summary":"Generate Digital Humans","description":"Given an agent this endpoint generates digital humans to test that agent based on varying simulation types.","operationId":"generate_digital_humans_v1_generate_digital_humans_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DigitalHumanRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__models__digital_humans__generate_digital_human_request__DigitalHumanResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/create-customer-trait":{"post":{"tags":["Customer Traits"],"summary":"Create Customer Trait","description":"Create a new customer trait definition for an agent.\n\nArgs:\n    trait_request: The trait creation request data\n    request: FastAPI request object\n    auth: Authentication credentials\n\nReturns:\n    CustomerTraitResponse with the created trait details","operationId":"create_customer_trait_v1_create_customer_trait_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCustomerTraitRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerTraitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/customer-trait/{trait_id}":{"get":{"tags":["Customer Traits"],"summary":"Get Customer Trait","description":"Get a specific customer trait by ID.\n\nArgs:\n    trait_id: UUID of the customer trait\n    request: FastAPI request object\n    auth: Authentication credentials\n\nReturns:\n    CustomerTraitResponse with the trait details","operationId":"get_customer_trait_v1_customer_trait__trait_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"trait_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Trait Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerTraitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Customer Traits"],"summary":"Delete Customer Trait","description":"Delete a customer trait definition.\n\nArgs:\n    trait_id: UUID of the customer trait to delete\n    request: FastAPI request object\n    auth: Authentication credentials\n\nReturns:\n    DeleteCustomerTraitResponse confirming the deletion","operationId":"delete_customer_trait_v1_customer_trait__trait_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"trait_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Trait Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteCustomerTraitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/customer-traits":{"get":{"tags":["Customer Traits"],"summary":"Get Customer Traits","description":"Get all customer traits, optionally filtered by agent_id.\n\nArgs:\n    request: FastAPI request object\n    agent_id: Optional agent ID to filter traits by\n    auth: Authentication credentials\n\nReturns:\n    CustomerTraitsListResponse with list of traits and total count","operationId":"get_customer_traits_v1_customer_traits_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerTraitsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/update-customer-trait/{trait_id}":{"put":{"tags":["Customer Traits"],"summary":"Update Customer Trait","description":"Update a customer trait definition.\n\nArgs:\n    trait_id: UUID of the customer trait to update\n    trait_request: The trait update request data\n    request: FastAPI request object\n    auth: Authentication credentials\n\nReturns:\n    CustomerTraitResponse with the updated trait details","operationId":"update_customer_trait_v1_update_customer_trait__trait_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"trait_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Trait Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCustomerTraitRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerTraitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/generate-trait-values":{"post":{"tags":["Customer Traits"],"summary":"Generate Trait Values Endpoint","description":"Generate trait values for each scenario for a single trait.\n\nRequest:\n    - scenarios: list of scenario descriptions (intents), one per scenario\n    - traits: exactly one trait (name + data_type)\n\nResponse:\n    - dict mapping scenario index -> list of trait dicts\n    - each trait dict has:\n        {\n            \"name\": <trait_name>,       # same as the input trait name\n            \"data_type\": <data_type>,   # normalized data type string\n            \"value\": <generated_value>, # value for that scenario + trait\n        }\n\nFrontend mapping:\n    - for scenario index i:\n        const traitsForScenario = res[i]; // array of trait dicts\n        const value = traitsForScenario.find(t => t.name === traitName)?.value;","operationId":"generate_trait_values_endpoint_v1_generate_trait_values_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateTraitValuesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","additionalProperties":true}},"title":"Response Generate Trait Values Endpoint V1 Generate Trait Values Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/create-community":{"post":{"tags":["Communities"],"summary":"Create Community","description":"Create a new community.","operationId":"create_community_v1_create_community_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCommunityRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/community/{community_id}":{"get":{"tags":["Communities"],"summary":"Get Community","description":"Get a specific community by ID.","operationId":"get_community_v1_community__community_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Community Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Communities"],"summary":"Delete Community","description":"Delete a specific community by ID.","operationId":"delete_community_v1_community__community_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Community Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/communities":{"get":{"tags":["Communities"],"summary":"Get Communities","description":"Get all communities, optionally filtered by digital human (test case).","operationId":"get_communities_v1_communities_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"digital_human_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Digital Human Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunitiesListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/update-community/{community_id}":{"put":{"tags":["Communities"],"summary":"Update Community","description":"Update a specific community by ID.","operationId":"update_community_v1_update_community__community_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Community Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCommunityRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/add-to-community/{community_id}":{"put":{"tags":["Communities"],"summary":"Add Digital Humans To Community","description":"Add digital humans to an existing community without replacing the current list.","operationId":"add_digital_humans_to_community_v1_add_to_community__community_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Community Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddToCommunityRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/remove-from-community/{community_id}":{"put":{"tags":["Communities"],"summary":"Remove Digital Humans From Community","description":"Remove digital humans from a community without deleting them globally.","operationId":"remove_digital_humans_from_community_v1_remove_from_community__community_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Community Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddToCommunityRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/workspaces":{"get":{"tags":["Workspaces"],"summary":"Get Workspaces","description":"The workspaces this caller can act in.\n\nMembership-scoped: this populates the workspace switcher, and a member has no business\nknowing that workspaces they were never added to exist. An org admin belongs to every\nworkspace in the organization, and a user with no membership rows anywhere belongs to\nthe default one.","operationId":"get_workspaces_v1_workspaces_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspacesListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Workspaces"],"summary":"Create Workspace","operationId":"create_workspace_v1_workspaces_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWorkspaceRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/workspaces/budget":{"get":{"tags":["Workspaces"],"summary":"Get Workspace Budget","description":"The org's credit ceiling, what workspaces reserve, and what is left. Billing data\nis member-visible; changing any limit stays admin-gated on the write paths.","operationId":"get_workspace_budget_v1_workspaces_budget_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/workspaces/spend":{"get":{"tags":["Workspaces"],"summary":"Get Workspace Spend","description":"Allocation versus actual, for the workspaces this caller can see.\n\nThe sibling above answers \"how much of the plan is still unclaimed\", which is what the\nworkspace form needs. This one answers the customer's question: for a workspace I belong\nto, how much was set aside, how much has actually been spent this billing period, how\nmuch is left, and which agents are spending it.\n\nVisibility is exactly the visibility every list endpoint uses, so it follows the access\nmodel rather than restating it: a member sees the workspaces they belong to, and an org\nadmin sees all of them. The organization roll-up is included only for a caller who can\nalready see every workspace, since it would otherwise describe spending in workspaces\nthey are not on.","operationId":"get_workspace_spend_v1_workspaces_spend_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceSpendResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/workspaces/{workspace_id}/integration":{"post":{"tags":["Workspaces"],"summary":"File Integration Into Workspace","description":"Point the organization's provider integration at this workspace.\n\nEverything a provider sync creates from here on files into this workspace instead of the\norganization default, so a team's newly synced agents land in the team's workspace.\n\nExisting agents are NOT relocated: an agent already synced keeps the workspace it is in,\nwhich is the same rule sync_workspace_id follows when it re-syncs one. Resources are only\never created into a workspace, never moved between them.\n\nOrg admin only. Passing the default workspace restores the previous behaviour.","operationId":"file_integration_into_workspace_v1_workspaces__workspace_id__integration_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/workspaces/{workspace_id}/select":{"post":{"tags":["Workspaces"],"summary":"Select Workspace","description":"Record which workspace this user is acting in.\n\nTheir selection is stored on their row, so every later request resolves it from the\ncredential instead of from a header the caller has to remember to send on each hop.\nAny member may select a workspace they belong to; this grants nothing, it only records\nwhich of their existing workspaces new resources should land in.\n\nMembership is still re-checked on every request that uses it, so a stored selection\ncannot outlive the access it was based on.","operationId":"select_workspace_v1_workspaces__workspace_id__select_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/workspaces/{workspace_id}":{"patch":{"tags":["Workspaces"],"summary":"Update Workspace","operationId":"update_workspace_v1_workspaces__workspace_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWorkspaceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Workspaces"],"summary":"Delete Workspace","operationId":"delete_workspace_v1_workspaces__workspace_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/workspaces/{workspace_id}/members":{"get":{"tags":["Workspaces"],"summary":"Get Workspace Members","operationId":"get_workspace_members_v1_workspaces__workspace_id__members_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMembersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Workspaces"],"summary":"Add Workspace Member","operationId":"add_workspace_member_v1_workspaces__workspace_id__members_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddWorkspaceMemberRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMemberOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/workspaces/{workspace_id}/members/{user_id}":{"delete":{"tags":["Workspaces"],"summary":"Remove Workspace Member","operationId":"remove_workspace_member_v1_workspaces__workspace_id__members__user_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/subscription/signup":{"post":{"tags":["Subscription"],"summary":"Signup","description":"Create subscription: Stripe customer + Metronome customer + contract.","operationId":"signup_v1_subscription_signup_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/subscription/start-contract":{"post":{"tags":["Subscription"],"summary":"Start Contract","description":"Collect the customer's card and start the custom plan staff loaded for their org.","operationId":"start_contract_v1_subscription_start_contract_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartContractRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/subscription/start-trial":{"post":{"tags":["Subscription"],"summary":"Start Trial","description":"Start a 7-day free trial only. Call this when a new account is created.","operationId":"start_trial_v1_subscription_start_trial_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartTrialRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/subscription/active-package":{"get":{"tags":["Subscription"],"summary":"Get Active Package","description":"Get the user's active package ID from their Metronome contract.","operationId":"get_active_package_v1_subscription_active_package_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivePackageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/subscription/cancel":{"post":{"tags":["Subscription"],"summary":"Cancel Subscription","description":"Cancel subscription self-serve by ending the active Metronome contract\nat the end of the current billing period (updateEndDate).","operationId":"cancel_subscription_v1_subscription_cancel_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/subscription/buy-credits":{"post":{"tags":["Subscription"],"summary":"Buy Credits","description":"Add a prepaid credit commit to the org's active pay-as-you-go contract.","operationId":"buy_credits_v1_subscription_buy_credits_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BuyCreditsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BuyCreditsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/subscription/update-autoreload":{"put":{"tags":["Subscription"],"summary":"Update Autoreload","description":"Save the org's auto-reload settings and (un)set native auto-recharge on its current contract.","operationId":"update_autoreload_v1_subscription_update_autoreload_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoreloadRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoreloadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/subscription/redeem-code":{"post":{"tags":["Subscription"],"summary":"Redeem Code","description":"Redeem a credit code: reserve the slot in the DB, then grant the credits.","operationId":"redeem_code_v1_subscription_redeem_code_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeemCodeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeemCodeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/subscription/apply-retention-discount":{"post":{"tags":["Subscription"],"summary":"Apply Retention Discount","description":"Grant the org a retention credit instead of cancelling.","operationId":"apply_retention_discount_v1_subscription_apply_retention_discount_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyRetentionDiscountResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/subscription/provision-metering":{"post":{"tags":["Subscription"],"summary":"Provision Metering","description":"Provision the caller's org onto PAYG metering; safe to call repeatedly.","operationId":"provision_metering_v1_subscription_provision_metering_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProvisionMeteringResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sms-testing/status":{"get":{"tags":["SMS Testing"],"summary":"Get Sms Testing Status","operationId":"get_sms_testing_status_v1_sms_testing_status_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmsTestingStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sms-testing/request":{"post":{"tags":["SMS Testing"],"summary":"Create Sms Testing Request","operationId":"create_sms_testing_request_v1_sms_testing_request_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmsTestingRequestBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmsTestingRequestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sms-testing/requests/{request_id}/review":{"post":{"tags":["SMS Testing"],"summary":"Review Sms Testing Request","operationId":"review_sms_testing_request_v1_sms_testing_requests__request_id__review_post","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","title":"Request Id"}},{"name":"x-internal-token","in":"header","required":false,"schema":{"type":"string","title":"X-Internal-Token"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmsTestingReviewBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmsTestingRequestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sms-testing/slack-interactivity":{"post":{"tags":["SMS Testing"],"summary":"Sms Testing Slack Interactivity","description":"Slack sends button clicks as x-www-form-urlencoded with a single `payload` JSON field.\nStaff in #kalebs-korner approve/reject here; we verify Slack's signature and apply the review\ninline (fast), but push the requester email and Slack message edit to background tasks so the\nack isn't held up by SQS/Slack round-trips.","operationId":"sms_testing_slack_interactivity_v1_sms_testing_slack_interactivity_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Sms Testing Slack Interactivity V1 Sms Testing Slack Interactivity Post"}}}}},"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}]}},"/v1/evaluate-call":{"post":{"tags":["Evaluate"],"summary":"Evaluate","description":"Submit a call or chat for evaluation.","operationId":"evaluate_v1_evaluate_call_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CallRequestUsingAgentId"},{"$ref":"#/components/schemas/CallRequestUsingExternalAgentId"}],"title":"Call Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluateCallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/evaluate":{"post":{"tags":["Evaluate"],"summary":"Evaluate","description":"Submit a call or chat for evaluation.","operationId":"evaluate_v1_evaluate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CallRequestUsingAgentId"},{"$ref":"#/components/schemas/CallRequestUsingExternalAgentId"}],"title":"Call Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluateCallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/amelia/domains":{"get":{"tags":["Amelia"],"summary":"List Amelia Domains","description":"Domains the credentials can see. Amelia shows a domain's name but its code is what\nidentifies it, and the code is not in the UI, so the picker maps one to the other.","operationId":"list_amelia_domains_v1_integrations_amelia_domains_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"base_url","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Overrides the org's stored Amelia URL","title":"Base Url"},"description":"Overrides the org's stored Amelia URL"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Amelia Domains V1 Integrations Amelia Domains Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/amelia/flows":{"get":{"tags":["Amelia"],"summary":"List Amelia Flows","description":"Flow names in one domain. Powers the flow picker on the Amelia connection form.","operationId":"list_amelia_flows_v1_integrations_amelia_flows_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"domain_code","in":"query","required":true,"schema":{"type":"string","description":"Amelia domain code the agent points at","title":"Domain Code"},"description":"Amelia domain code the agent points at"},{"name":"base_url","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Overrides the org's stored Amelia URL","title":"Base Url"},"description":"Overrides the org's stored Amelia URL"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Amelia Flows V1 Integrations Amelia Flows Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/amelia/agents":{"get":{"tags":["Amelia"],"summary":"List Amelia Agents","description":"Cognitive agent names in one domain, for the picker on the Amelia connection form.\n\n`status` is the latest revision's, and is reported only so the form can show it: on a live\ntenant almost every agent reads UNDEPLOYED while still serving traffic, so it must not be\nused to filter the list.","operationId":"list_amelia_agents_v1_integrations_amelia_agents_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"domain_code","in":"query","required":true,"schema":{"type":"string","description":"Amelia domain code the agent points at","title":"Domain Code"},"description":"Amelia domain code the agent points at"},{"name":"base_url","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Overrides the org's stored Amelia URL","title":"Base Url"},"description":"Overrides the org's stored Amelia URL"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Amelia Agents V1 Integrations Amelia Agents Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/amelia/sync":{"post":{"tags":["Amelia"],"summary":"Sync Amelia Agents","description":"Import the org's Amelia cognitive agents, then re-pull what Bluejay already tracks.\n\nEvery cognitive agent the credentials can see becomes a Bluejay agent, deduped on the Amelia\nagent's uuid. Flows are not a roster: a domain's flows are components of one bot, so a flow is\nonly ever refreshed on an agent that already names one. Agents missing a domain code, or naming\nneither a flow nor a cognitive agent, are skipped rather than failed, so one unconfigured agent\ncan't block the rest.","operationId":"sync_amelia_agents_v1_integrations_amelia_sync_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Sync Amelia Agents V1 Integrations Amelia Sync Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/ElevenLabs":{"post":{"tags":["ElevenLabs"],"summary":"Handle Webhook","description":"Accepts ElevenLabs' own deliveries (HMAC over the raw body) and relays from a\ncustomer's service (Bluejay API key). A relay that reshapes or redacts the payload\ninvalidates ElevenLabs' signature, so the key is the only auth left to it.","operationId":"handle_webhook_v1_integrations_ElevenLabs_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/elevenlabs/agents":{"get":{"tags":["ElevenLabs"],"summary":"List Elevenlabs Agents","description":"List Convai agents for the org's stored API key. Used by Add Agent → ElevenLabs.","operationId":"list_elevenlabs_agents_v1_integrations_elevenlabs_agents_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Elevenlabs Agents V1 Integrations Elevenlabs Agents Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/elevenlabs/agents/{bluejay_agent_id}/branches":{"get":{"tags":["ElevenLabs"],"summary":"List Elevenlabs Branches","description":"List branches for the agent (Main + drafts + custom). Powers the Workflow tab branch picker.","operationId":"list_elevenlabs_branches_v1_integrations_elevenlabs_agents__bluejay_agent_id__branches_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"bluejay_agent_id","in":"path","required":true,"schema":{"type":"string","title":"Bluejay Agent Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Elevenlabs Branches V1 Integrations Elevenlabs Agents  Bluejay Agent Id  Branches Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/elevenlabs/agents/{bluejay_agent_id}/merge":{"post":{"tags":["ElevenLabs"],"summary":"Merge Elevenlabs Branches","description":"Merge ``source_branch_id`` into ``target_branch_id``. Typical: merge an Experiment branch into Main.","operationId":"merge_elevenlabs_branches_v1_integrations_elevenlabs_agents__bluejay_agent_id__merge_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"bluejay_agent_id","in":"path","required":true,"schema":{"type":"string","title":"Bluejay Agent Id"}},{"name":"source_branch_id","in":"query","required":true,"schema":{"type":"string","title":"Source Branch Id"}},{"name":"target_branch_id","in":"query","required":true,"schema":{"type":"string","title":"Target Branch Id"}},{"name":"archive_source","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Archive Source"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Force"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Merge Elevenlabs Branches V1 Integrations Elevenlabs Agents  Bluejay Agent Id  Merge Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/eleven-labs/sync":{"post":{"tags":["ElevenLabs"],"summary":"Sync Eleven Labs Agents","description":"Trigger an async sync of all ElevenLabs Convai agents into Bluejay agents.","operationId":"sync_eleven_labs_agents_v1_integrations_eleven_labs_sync_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncElevenLabsAgentsRequest","default":{"dry_run":true}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/eleven-labs/sync-agent":{"post":{"tags":["ElevenLabs"],"summary":"Sync Single Agent From Eleven Labs","description":"Trigger an async sync of a single ElevenLabs agent's name + prompt + workflow.","operationId":"sync_single_agent_from_eleven_labs_v1_integrations_eleven_labs_sync_agent_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncSingleAgentFromElevenLabsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/voice-clones":{"post":{"tags":["Voice Clones"],"summary":"Create Voice Clone","description":"Clone a voice from one or more audio clips via ElevenLabs Instant Voice Cloning.","operationId":"create_voice_clone_v1_voice_clones_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_voice_clone_v1_voice_clones_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Voice Clone V1 Voice Clones Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Voice Clones"],"summary":"List Voice Clones","description":"List the cloned voices owned by the caller's organization.","operationId":"list_voice_clones_v1_voice_clones_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Voice Clones V1 Voice Clones Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/voice-clones/{voice_id}/preview":{"post":{"tags":["Voice Clones"],"summary":"Preview Voice Clone","description":"Render a TTS preview; mixes bundled ambience for generated voices.","operationId":"preview_voice_clone_v1_voice_clones__voice_id__preview_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"voice_id","in":"path","required":true,"schema":{"type":"string","title":"Voice Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/voice-clones/{voice_id}":{"delete":{"tags":["Voice Clones"],"summary":"Delete Voice Clone","description":"Delete a cloned voice from ElevenLabs — only if it belongs to the caller's org.","operationId":"delete_voice_clone_v1_voice_clones__voice_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"voice_id","in":"path","required":true,"schema":{"type":"string","title":"Voice Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Voice Clone V1 Voice Clones  Voice Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/voice-generation":{"post":{"tags":["Voice Generation"],"summary":"Generate Voice","description":"Generate one reusable voice from a description, bundling a matching ambience\nwhen the description mentions an environment.","operationId":"generate_voice_v1_voice_generation_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateVoiceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneratedVoice"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}/workflow":{"put":{"tags":["Agent Workflow"],"summary":"Save Agent Workflow","description":"Attach an imported workflow to an agent and mark the agent's provider CUSTOM.\n\nThis is the persistence step for document-ingested workflows (e.g. an IVR\ndiagram parsed in Bluejay AI): the reviewed graph becomes the agent's stored\nworkflow with no external source behind it.\n\nOnly agents with no workflow provider (or already CUSTOM) accept an import —\nan agent synced from ElevenLabs/VAPI/Retell/DFCX is refused with 409 so an\nimport can never clobber a provider-managed workflow.","operationId":"save_agent_workflow_v1_agents__agent_id__workflow_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaveWorkflowRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Save Agent Workflow V1 Agents  Agent Id  Workflow Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}/workflow/summary":{"get":{"tags":["Agent Workflow"],"summary":"Get Workflow Summary","description":"Flatten the stored workflow into a compact ``{nodes, edges}`` view for inspection.","operationId":"get_workflow_summary_v1_agents__agent_id__workflow_summary_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Workflow Summary V1 Agents  Agent Id  Workflow Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}/workflow/nodes/{node_id}":{"patch":{"tags":["Agent Workflow"],"summary":"Patch Workflow Node","description":"Update a single node inside the agent's stored workflow.\n\nUniversal fields only: ``prompt``, ``name``, ``description``. Provider-specific fields\n(ElevenLabs voice/llm/eagerness, etc.) live on provider-named endpoints.","operationId":"patch_workflow_node_v1_agents__agent_id__workflow_nodes__node_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"node_id","in":"path","required":true,"schema":{"type":"string","title":"Node Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NodePatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Patch Workflow Node V1 Agents  Agent Id  Workflow Nodes  Node Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Agent Workflow"],"summary":"Delete Workflow Node","description":"Remove a node and cascade-delete every edge that touches it.\n\nThe Start node is protected — every workflow needs an entry point.","operationId":"delete_workflow_node_v1_agents__agent_id__workflow_nodes__node_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"node_id","in":"path","required":true,"schema":{"type":"string","title":"Node Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Workflow Node V1 Agents  Agent Id  Workflow Nodes  Node Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}/workflow/nodes":{"post":{"tags":["Agent Workflow"],"summary":"Add Workflow Node","description":"Add a node to the agent's stored workflow. The node has no edges yet — call\n``POST .../workflow/edges`` to connect it. Returns ``{node_id}``.","operationId":"add_workflow_node_v1_agents__agent_id__workflow_nodes_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NodeCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Add Workflow Node V1 Agents  Agent Id  Workflow Nodes Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}/workflow/edges":{"post":{"tags":["Agent Workflow"],"summary":"Add Workflow Edge","description":"Add a directed edge between two existing nodes. Returns ``{edge_id}``.","operationId":"add_workflow_edge_v1_agents__agent_id__workflow_edges_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EdgeCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Add Workflow Edge V1 Agents  Agent Id  Workflow Edges Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}/workflow/edges/{edge_id}":{"delete":{"tags":["Agent Workflow"],"summary":"Delete Workflow Edge","description":"Remove an edge by id.","operationId":"delete_workflow_edge_v1_agents__agent_id__workflow_edges__edge_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"edge_id","in":"path","required":true,"schema":{"type":"string","title":"Edge Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Workflow Edge V1 Agents  Agent Id  Workflow Edges  Edge Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}/workflow/sync":{"post":{"tags":["Agent Workflow"],"summary":"Sync Agent Workflow","description":"Pull the latest workflow from the agent's source provider into Bluejay.\n\n``branch_id`` is opaque metadata — adapters that don't support branching ignore it.","operationId":"sync_agent_workflow_v1_agents__agent_id__workflow_sync_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"branch_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Sync Agent Workflow V1 Agents  Agent Id  Workflow Sync Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}/workflow/push":{"post":{"tags":["Agent Workflow"],"summary":"Push Agent Workflow","description":"Push Bluejay's stored workflow back to the agent's source provider.\n\n``force=true`` bypasses DFCX conflict detection (use when you want to\noverwrite remote drift).  Non-DFCX providers ignore the flag.\n\n``create_version=true`` (DFCX only) snapshots the flows/playbooks the push\nactually changed into new immutable versions, recording them in the version\nledger. Snapshotting only-changed resources keeps version counts down and is\nwhy it rides on push: the remote draft only reflects Bluejay's edits *after*\na successful push.\n\nReturns 409 with ``{conflicts}`` when remote has drifted and force is False.\nReturns 207 with ``{results}`` when some DFCX SDK calls succeed and some fail.","operationId":"push_agent_workflow_v1_agents__agent_id__workflow_push_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"branch_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Id"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Force"}},{"name":"create_version","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Create Version"}},{"name":"version_description","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Description"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}/workflow/versions":{"get":{"tags":["Agent Workflow"],"summary":"List Workflow Versions","description":"List version snapshots for the agent's definition (DFCX flows/playbooks, Bland pathways).","operationId":"list_workflow_versions_v1_agents__agent_id__workflow_versions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Workflow Versions V1 Agents  Agent Id  Workflow Versions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}/workflow/environments":{"get":{"tags":["Agent Workflow"],"summary":"List Workflow Environments","description":"List deployment environments and what each currently pins (DFCX, Bland).","operationId":"list_workflow_environments_v1_agents__agent_id__workflow_environments_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Workflow Environments V1 Agents  Agent Id  Workflow Environments Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}/workflow/promote":{"post":{"tags":["Agent Workflow"],"summary":"Promote Workflow","description":"Promote versions into a higher environment (DFCX, Bland).\n\nGated behind :func:`require_promote_permission`. On DFCX this deploys flow versions only (there\nis no deploy-playbook primitive); on Bland it publishes one pathway version to staging or\nproduction. Both providers record the deployment upstream; we log the Bluejay actor for audit.","operationId":"promote_workflow_v1_agents__agent_id__workflow_promote_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromoteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Promote Workflow V1 Agents  Agent Id  Workflow Promote Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}/workflow/sync-preview":{"post":{"tags":["Agent Workflow"],"summary":"Preview Sync","description":"Return what WOULD change in our DB if we pulled fresh from DFCX right now.\n\nPure: no Supabase writes, no DFCX writes. DFCX-only endpoint.\nReturns a PushPlan-shaped dict describing the pull diff.","operationId":"preview_sync_v1_agents__agent_id__workflow_sync_preview_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Preview Sync V1 Agents  Agent Id  Workflow Sync Preview Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}/workflow/push-preview":{"post":{"tags":["Agent Workflow"],"summary":"Preview Push Endpoint","description":"Return what WOULD be pushed to DFCX right now. No SDK writes.\n\nMirrors push()'s diff phase but skips dispatch. DFCX-only endpoint.\n``force=true`` promotes conflicts into to_update / to_delete (same as push).","operationId":"preview_push_endpoint_v1_agents__agent_id__workflow_push_preview_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Force"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Preview Push Endpoint V1 Agents  Agent Id  Workflow Push Preview Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}/workflow/paths":{"get":{"tags":["Agent Workflow"],"summary":"List Workflow Paths","description":"Enumerate every distinct path through the workflow (Generate-From-Workflow input).","operationId":"list_workflow_paths_v1_agents__agent_id__workflow_paths_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Workflow Paths V1 Agents  Agent Id  Workflow Paths Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}/prompts":{"get":{"tags":["Prompts"],"summary":"Get Prompt By Label Agent Scoped","description":"retrieve a single prompt by label under /agents/{agent_id}/prompts?label=... .\n\n- if label is missing -> 400\n- if label resolves to 0 -> 404; >1 -> 400 ambiguous (except latest which should be unique)","operationId":"get_prompt_by_label_agent_scoped_v1_agents__agent_id__prompts_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"label","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}/prompts/versions":{"post":{"tags":["Prompts"],"summary":"Create Prompt Version Agent Scoped","description":"create a new prompt version under /agents/{agent_id}/prompts/versions.","operationId":"create_prompt_version_agent_scoped_v1_agents__agent_id__prompts_versions_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptVersionBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Prompts"],"summary":"List Prompt Versions","description":"list prompt versions with optional filters (label, version).","operationId":"list_prompt_versions_v1_agents__agent_id__prompts_versions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"label","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},{"name":"version","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Version"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PromptResponse"},"title":"Response List Prompt Versions V1 Agents  Agent Id  Prompts Versions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Prompts"],"summary":"Delete Prompt Version By Label Agent Scoped","description":"delete a prompt version by label.\n\n- if label is production -> 400 (must move production first)\n- if label resolves to 0 -> 404; >1 -> 400 ambiguous (except latest which should be unique)\n- if deleting latest, reassign latest to highest remaining version\n- cannot delete if it is the only version","operationId":"delete_prompt_version_by_label_agent_scoped_v1_agents__agent_id__prompts_versions_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"label","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}/prompts/promote":{"post":{"tags":["Prompts"],"summary":"Promote Production Label Agent Scoped","description":"Move the production label to the latest prompt version, or to the version identified by prompt_id.","operationId":"promote_production_label_agent_scoped_v1_agents__agent_id__prompts_promote_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"prompt_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"If set, attach the production label to this prompt version; otherwise attach to the latest version.","title":"Prompt Id"},"description":"If set, attach the production label to this prompt version; otherwise attach to the latest version."},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}/prompts/versions/{version}":{"get":{"tags":["Prompts"],"summary":"Get Prompt Version Agent Scoped","operationId":"get_prompt_version_agent_scoped_v1_agents__agent_id__prompts_versions__version__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"version","in":"path","required":true,"schema":{"type":"integer","title":"Version"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Prompts"],"summary":"Delete Prompt Version Agent Scoped","description":"delete a specific prompt version; cannot delete production; cannot delete only version.\n\nif deleting latest, reassign latest to highest remaining version.\nreturns metadata about the deletion.","operationId":"delete_prompt_version_agent_scoped_v1_agents__agent_id__prompts_versions__version__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"version","in":"path","required":true,"schema":{"type":"integer","title":"Version"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}/prompts/{prompt_id}":{"get":{"tags":["Prompts"],"summary":"Get Prompt By Id","operationId":"get_prompt_by_id_v1_agents__agent_id__prompts__prompt_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"prompt_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Prompt Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Prompts"],"summary":"Delete Prompt By Id Agent Scoped","operationId":"delete_prompt_by_id_agent_scoped_v1_agents__agent_id__prompts__prompt_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"prompt_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Prompt Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}/prompts/versions/{version}/labels":{"get":{"tags":["Prompts"],"summary":"List Prompt Version Labels Agent Scoped","operationId":"list_prompt_version_labels_agent_scoped_v1_agents__agent_id__prompts_versions__version__labels_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"version","in":"path","required":true,"schema":{"type":"integer","title":"Version"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabelListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Prompts"],"summary":"Add Prompt Version Labels Agent Scoped","operationId":"add_prompt_version_labels_agent_scoped_v1_agents__agent_id__prompts_versions__version__labels_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"version","in":"path","required":true,"schema":{"type":"integer","title":"Version"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabelDeltaRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabelListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Prompts"],"summary":"Remove Prompt Version Labels Agent Scoped","operationId":"remove_prompt_version_labels_agent_scoped_v1_agents__agent_id__prompts_versions__version__labels_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"version","in":"path","required":true,"schema":{"type":"integer","title":"Version"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabelDeltaRequest","default":{"labels":[],"override_label":false}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabelListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}/preview-chat":{"post":{"tags":["Preview Chat"],"summary":"Preview Chat","description":"Send one turn to the DFCX agent's draft and return its reply (multi-turn via session_id).","operationId":"preview_chat_v1_agents__agent_id__preview_chat_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewChatBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Preview Chat V1 Agents  Agent Id  Preview Chat Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}/labels":{"post":{"tags":["Labels"],"summary":"Create Label","description":"create a free-standing label for an agent (not attached to any prompt or knowledge base).","operationId":"create_label_v1_agents__agent_id__labels_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLabelBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabelPydantic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Labels"],"summary":"List Labels","description":"list all free-standing labels for an agent; filter by substring with q.","operationId":"list_labels_v1_agents__agent_id__labels_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LabelPydantic"},"title":"Response List Labels V1 Agents  Agent Id  Labels Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}/labels/{label_id}":{"get":{"tags":["Labels"],"summary":"Get Label By Id","operationId":"get_label_by_id_v1_agents__agent_id__labels__label_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"label_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Label Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabelPydantic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Labels"],"summary":"Update Label","description":"rename a free-standing label; reserved labels are not allowed as targets.","operationId":"update_label_v1_agents__agent_id__labels__label_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"label_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Label Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLabelBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabelPydantic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Labels"],"summary":"Delete Label","description":"delete a free-standing label; cannot delete reserved labels; cannot delete if associated.","operationId":"delete_label_v1_agents__agent_id__labels__label_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"label_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Label Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scenario":{"post":{"tags":["Scenario Builder"],"summary":"Create Workflow V2","description":"Create a workflows_v2 row with a React Flow graph definition.","operationId":"create_workflow_v2_v1_scenario_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWorkflowV2Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowV2Response"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Scenario Builder"],"summary":"List Workflows V2","description":"List all workflows_v2 for the authenticated user's organization.","operationId":"list_workflows_v2_v1_scenario_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"If set, only workflows linked to this agent (agent must be in your org).","title":"Agent Id"},"description":"If set, only workflows linked to this agent (agent must be in your org)."},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowsV2ListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scenario/validate-definition":{"post":{"tags":["Scenario Builder"],"summary":"Validate Workflow Definition","description":"Validate a workflow definition from JSON without persisting.","operationId":"validate_workflow_definition_v1_scenario_validate_definition_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowValidateDefinitionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowValidateDefinitionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scenario/generate-from-prompt":{"post":{"tags":["Scenario Builder"],"summary":"Generate Workflow From Prompt","description":"Generate a validated React Flow graph from natural language (not persisted). Use ``POST /v1/scenario`` to save.","operationId":"generate_workflow_from_prompt_v1_scenario_generate_from_prompt_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateWorkflowFromPromptRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateWorkflowFromPromptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scenario/generate-definition":{"post":{"tags":["Scenario Builder"],"summary":"Generate Workflow Definition","description":"Deprecated placeholder; use ``POST /v1/scenario/generate-from-prompt`` or ``/validate-definition``.","operationId":"generate_workflow_definition_v1_scenario_generate_definition_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scenario/{workflow_id}/duplicate":{"post":{"tags":["Scenario Builder"],"summary":"Duplicate Workflow V2","description":"Create a new workflows_v2 row copying definition, description, and agent links from the source.","operationId":"duplicate_workflow_v2_v1_scenario__workflow_id__duplicate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workflow Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DuplicateWorkflowV2Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowV2Response"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scenario/{workflow_id}":{"get":{"tags":["Scenario Builder"],"summary":"Get Workflow V2","description":"Get one workflows_v2 by ID (organization must match).","operationId":"get_workflow_v2_v1_scenario__workflow_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workflow Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowV2Response"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Scenario Builder"],"summary":"Update Workflow V2","description":"Update name, description, agent links, and/or definition (React Flow graph).","operationId":"update_workflow_v2_v1_scenario__workflow_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workflow Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWorkflowV2Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowV2Response"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Scenario Builder"],"summary":"Delete Workflow V2","description":"Delete a workflows_v2 row.","operationId":"delete_workflow_v2_v1_scenario__workflow_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workflow Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteWorkflowV2Response"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/call-log-access/{call_log_id}":{"post":{"tags":["Call Logs"],"summary":"Record Call Log Click","description":"Record that the authenticated user opened (clicked into) a specific call log.\n\nThe frontend hits this from its row-click handler so every UI access shows\nup in ``call_log_access_audit``, even though the click itself doesn't\nre-fetch the log. Org membership is verified before the audit row is\nwritten so the audit table cannot be polluted with cross-org IDs.","operationId":"record_call_log_click_v1_call_log_access__call_log_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"call_log_id","in":"path","required":true,"schema":{"type":"string","title":"Call Log Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/retrieve-call-logs":{"get":{"tags":["Call Logs"],"summary":"Retrieve Call Logs Index","operationId":"retrieve_call_logs_index_v1_retrieve_call_logs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}]}},"/v1/retrieve-call-logs/{agent_id}":{"get":{"tags":["Call Logs"],"summary":"Deprecated: use GET /v1/observability/conversations","description":"Deprecated. Use GET /v1/observability/conversations, which takes the same filters plus metric and metadata filters and grouped counts.","operationId":"retrieve_call_logs_v1_retrieve_call_logs__agent_id__get","deprecated":true,"security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"label","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Label of the agent to filter by","title":"Label"},"description":"Label of the agent to filter by"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Max calls per page","default":20,"title":"Page Size"},"description":"Max calls per page"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number (1-based)","default":1,"title":"Page"},"description":"Page number (1-based)"},{"name":"last","in":"query","required":false,"schema":{"enum":["1day","3days","7days","30days","90days","all"],"type":"string","description":"Last X days to filter by","default":"1day","title":"Last"},"description":"Last X days to filter by"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetrieveCallLogsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/retrieve-call-log":{"get":{"tags":["Call Logs"],"summary":"Retrieve Call Log Index","operationId":"retrieve_call_log_index_v1_retrieve_call_log_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}]}},"/v1/retrieve-call-log/{call_id}":{"get":{"tags":["Call Logs"],"summary":"Retrieve Call Log","description":"Retrieve call logs for a specific agent given the agent ID.\nReturns a list of call objects, each with an additional \"evaluations\" field\ncontaining a list of evaluations joined via call_id.","operationId":"retrieve_call_log_v1_retrieve_call_log__call_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"call_id","in":"path","required":true,"schema":{"type":"string","title":"Call Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetrieveCallLogResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/call-log":{"delete":{"tags":["Call Logs"],"summary":"Delete Call Log Index","operationId":"delete_call_log_index_v1_call_log_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}]}},"/v1/call-log/{call_id}":{"delete":{"tags":["Call Logs"],"summary":"Delete Call Log","description":"Delete a specific call log given its ID.\nValidates that the user has access to the call log by checking organization membership.\n\nArgs:\n    call_id: The ID of the call to delete\n    recording_only: If True, only delete the recording file and clear recording fields.\n                   If False (default), delete the entire call log.","operationId":"delete_call_log_v1_call_log__call_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"call_id","in":"path","required":true,"schema":{"type":"string","title":"Call Id"}},{"name":"recording_only","in":"query","required":false,"schema":{"type":"boolean","description":"If true, only delete the recording file and clear recording fields. If false, delete the entire call log including all data.","default":false,"title":"Recording Only"},"description":"If true, only delete the recording file and clear recording fields. If false, delete the entire call log including all data."},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteCallLogResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/log/{call_id}":{"delete":{"tags":["Call Logs"],"summary":"Delete Call Log","description":"Delete a specific call log given its ID.\nValidates that the user has access to the call log by checking organization membership.\n\nArgs:\n    call_id: The ID of the call to delete\n    recording_only: If True, only delete the recording file and clear recording fields.\n                   If False (default), delete the entire call log.","operationId":"delete_call_log_v1_log__call_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"call_id","in":"path","required":true,"schema":{"type":"string","title":"Call Id"}},{"name":"recording_only","in":"query","required":false,"schema":{"type":"boolean","description":"If true, only delete the recording file and clear recording fields. If false, delete the entire call log including all data.","default":false,"title":"Recording Only"},"description":"If true, only delete the recording file and clear recording fields. If false, delete the entire call log including all data."},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteCallLogResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/call-logs":{"delete":{"tags":["Call Logs"],"summary":"Bulk Delete Call Logs","description":"Delete multiple call logs given their IDs.\nValidates that the user has access to all call logs by checking organization membership.\n\nArgs:\n    body: Request body containing a list of call IDs to delete","operationId":"bulk_delete_call_logs_v1_call_logs_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDeleteCallLogsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDeleteCallLogsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/update-simulation-result":{"post":{"tags":["Simulation Results"],"summary":"Update Simulation Result","operationId":"update_simulation_result_v1_update_simulation_result_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__api__update_simulation_result__UpdateSimulationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSimulationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/evaluation/{evaluation_id}/custom-metric/{custom_metric_id}":{"patch":{"tags":["Human Edits"],"summary":"Override Custom Metric Result","description":"Override a custom metric result on its metric_results row. ``custom_metric_id`` is the\nmetric_results.metric_id; the string response_value is coerced by the row's metric_type.","operationId":"override_custom_metric_result_v1_evaluation__evaluation_id__custom_metric__custom_metric_id__patch","deprecated":true,"security":[{"HTTPBearer":[]}],"parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","title":"Evaluation Id"}},{"name":"custom_metric_id","in":"path","required":true,"schema":{"type":"string","title":"Custom Metric Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OverrideCustomMetricRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HumanEditResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/evaluation/{evaluation_id}/metric/{custom_metric_id}":{"patch":{"tags":["Human Edits"],"summary":"Override Custom Metric Result","description":"Override a custom metric result on its metric_results row. ``custom_metric_id`` is the\nmetric_results.metric_id; the string response_value is coerced by the row's metric_type.","operationId":"override_custom_metric_result_v1_evaluation__evaluation_id__metric__custom_metric_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","title":"Evaluation Id"}},{"name":"custom_metric_id","in":"path","required":true,"schema":{"type":"string","title":"Custom Metric Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OverrideCustomMetricRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HumanEditResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/evaluation/{evaluation_id}/goal":{"patch":{"tags":["Human Edits"],"summary":"Override Goal Result","description":"Override goal_success + reasoning on the `success` metric_results row.","operationId":"override_goal_result_v1_evaluation__evaluation_id__goal_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","title":"Evaluation Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OverrideGoalRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HumanEditResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/evaluation/{evaluation_id}/hallucination":{"patch":{"tags":["Human Edits"],"summary":"Override Hallucination Result","description":"Override the hallucination verdict + reasoning on the `hallucination` metric_results row.","operationId":"override_hallucination_result_v1_evaluation__evaluation_id__hallucination_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","title":"Evaluation Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OverrideHallucinationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HumanEditResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/evaluation/{evaluation_id}/redundancy":{"patch":{"tags":["Human Edits"],"summary":"Override Redundancy Result","description":"Override the redundancy verdict + reasoning on the `redundancy` metric_results row.","operationId":"override_redundancy_result_v1_evaluation__evaluation_id__redundancy_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","title":"Evaluation Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OverrideRedundancyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HumanEditResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/evaluation/{evaluation_id}/pronunciation":{"patch":{"tags":["Human Edits"],"summary":"Override Pronunciation Result","description":"Override the pronunciation score + reasoning on the `pronunciation` metric_results row.\n\n404s until evals materializes a pronunciation metric_results row for the conversation.","operationId":"override_pronunciation_result_v1_evaluation__evaluation_id__pronunciation_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","title":"Evaluation Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OverridePronunciationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HumanEditResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/evaluation/{evaluation_id}/custom-metric/{custom_metric_id}/override":{"delete":{"tags":["Human Edits"],"summary":"Revert Custom Metric Override","description":"Revert a custom metric override by restoring its human_* columns to sentinels.","operationId":"revert_custom_metric_override_v1_evaluation__evaluation_id__custom_metric__custom_metric_id__override_delete","deprecated":true,"security":[{"HTTPBearer":[]}],"parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","title":"Evaluation Id"}},{"name":"custom_metric_id","in":"path","required":true,"schema":{"type":"string","title":"Custom Metric Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HumanEditResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/evaluation/{evaluation_id}/metric/{custom_metric_id}/override":{"delete":{"tags":["Human Edits"],"summary":"Revert Custom Metric Override","description":"Revert a custom metric override by restoring its human_* columns to sentinels.","operationId":"revert_custom_metric_override_v1_evaluation__evaluation_id__metric__custom_metric_id__override_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","title":"Evaluation Id"}},{"name":"custom_metric_id","in":"path","required":true,"schema":{"type":"string","title":"Custom Metric Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HumanEditResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/evaluation/{evaluation_id}/goal-override":{"delete":{"tags":["Human Edits"],"summary":"Revert Goal Override","description":"Revert a goal override on the `success` metric_results row.","operationId":"revert_goal_override_v1_evaluation__evaluation_id__goal_override_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","title":"Evaluation Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HumanEditResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/evaluation/{evaluation_id}/hallucination-override":{"delete":{"tags":["Human Edits"],"summary":"Revert Hallucination Override","description":"Revert a hallucination override on the `hallucination` metric_results row.","operationId":"revert_hallucination_override_v1_evaluation__evaluation_id__hallucination_override_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","title":"Evaluation Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HumanEditResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/evaluation/{evaluation_id}/redundancy-override":{"delete":{"tags":["Human Edits"],"summary":"Revert Redundancy Override","description":"Revert a redundancy override on the `redundancy` metric_results row.","operationId":"revert_redundancy_override_v1_evaluation__evaluation_id__redundancy_override_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","title":"Evaluation Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HumanEditResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/evaluation/{evaluation_id}/pronunciation-override":{"delete":{"tags":["Human Edits"],"summary":"Revert Pronunciation Override","description":"Revert a pronunciation override on the `pronunciation` metric_results row.","operationId":"revert_pronunciation_override_v1_evaluation__evaluation_id__pronunciation_override_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","title":"Evaluation Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HumanEditResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/re-evaluate/{conversation_id}":{"post":{"tags":["Re-evaluate"],"summary":"Re Evaluate","description":"Re-evaluate a call.","operationId":"re_evaluate_v1_re_evaluate__conversation_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Conversation Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReEvaluateCallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/re-evaluate-simulation-result/{simulation_result_id}":{"post":{"tags":["Re-evaluate"],"summary":"Re Evaluate Simulation Result","description":"Re-evaluate a simulation result.","operationId":"re_evaluate_simulation_result_v1_re_evaluate_simulation_result__simulation_result_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"simulation_result_id","in":"path","required":true,"schema":{"type":"integer","title":"Simulation Result Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReEvaluateSimulationResultResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/rerun-simulation-results":{"post":{"tags":["Rerun Simulation Results"],"summary":"Rerun Simulation Results","description":"Rerun an explicit list of test_results in their existing simulation run.\n\nResolves the run from the provided test_result_ids (which must all share one\nsimulation and one run), then defers to create_same_run_reruns for eligibility,\nthe retry cap, idempotency, and the org rerun settings.\n\nAuth: standard API key / JWT, or X-Webhook-Secret (LiveKit agent / eval). When\nusing webhook secret, the org is derived from the simulation itself.","operationId":"rerun_simulation_results_v1_rerun_simulation_results_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-Webhook-Secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Webhook-Secret"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RerunSimulationResultsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RerunSimulationResultsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/retrieve-simulation-results/{simulation_run_id}":{"get":{"tags":["Retrieve Simulation Results"],"summary":"Retrieve Simulation Results","description":"Retrieve the results of a simulation run.\n\nReturns the simulation run details and associated test cases.","operationId":"retrieve_simulation_results_v1_retrieve_simulation_results__simulation_run_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"simulation_run_id","in":"path","required":true,"schema":{"type":"string","title":"Simulation Run Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationResultsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/retrieve-simulation-result/{test_result_id}":{"get":{"tags":["Retrieve Simulation Results"],"summary":"Retrieve Simulation Result","description":"Retrieve a single test result and its associated custom metrics.\n\nArgs:\n    test_result_id: the ID of the test result to retrieve.\n\nReturns:\n    the test result along with its custom metric results.","operationId":"retrieve_simulation_result_v1_retrieve_simulation_result__test_result_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"test_result_id","in":"path","required":true,"schema":{"type":"string","title":"Test Result Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SingleSimulationResultResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/queue-simulation-run":{"post":{"tags":["Queue Simulation Run"],"summary":"Queue Simulation Run Endpoint","description":"Queue a simulation run for processing.","operationId":"queue_simulation_run_endpoint_v1_queue_simulation_run_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/SimulationRunRequestUsingBACId"},{"$ref":"#/components/schemas/src__api__queue_simulation_run__SimulationRunRequest"}],"title":"Sim Run Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__api__queue_simulation_run__SimulationRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/recalculate-aligned-diff/{sim_conversation_id}":{"post":{"tags":["Aligned Diff"],"summary":"Recalculate Aligned Diff","description":"Trigger aligned-diff recomputation for a simulation conversation that has both\ntranscript paths set but is missing aligned_diff (e.g. due to a race condition\nduring ingestion).\n\nReturns 200 if already computed, 202 if queued.","operationId":"recalculate_aligned_diff_v1_recalculate_aligned_diff__sim_conversation_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sim_conversation_id","in":"path","required":true,"schema":{"type":"integer","title":"Sim Conversation Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecalculateAlignedDiffResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/live-transcript/{test_result_id}/history":{"get":{"tags":["Live Transcripts"],"summary":"Get Live Transcript History","description":"Return the buffered transcript for a conversation over plain HTTP.\n\nThe WebSocket is best-effort/live-only; this lets the client fetch the same\nRedis-buffered transcript regardless of socket state (initial load, poll,\nor fallback when the socket can't hold).","operationId":"get_live_transcript_history_v1_live_transcript__test_result_id__history_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"test_result_id","in":"path","required":true,"schema":{"type":"integer","title":"Test Result Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"description":"Max number of most recent messages to return","default":1000,"title":"Limit"},"description":"Max number of most recent messages to return"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/translate-transcript":{"post":{"tags":["Translation"],"summary":"Translate a call transcript","description":"Translates all utterances in a simulation or production conversation transcript to the specified target language using Google Translate API.","operationId":"translate_transcript_v1_translate_transcript_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/TranslateSimulationTranscriptRequest"},{"$ref":"#/components/schemas/TranslateObservabilityTranscriptRequest"}],"title":"Translate Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslateTranscriptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/optimize/metric-prompt":{"post":{"tags":["Optimize"],"summary":"Optimize Metric Prompt","description":"Accept a custom metric prompt and return an optimized version using an LLM.\nThe optimized prompt is clearer, more precise, and easier for evaluators to apply consistently.","operationId":"optimize_metric_prompt_v1_optimize_metric_prompt_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OptimizeMetricPromptRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OptimizeMetricPromptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/optimize/metric-prompt-with-diff":{"post":{"tags":["Optimize"],"summary":"Optimize Metric Prompt With Diff","description":"Optimize a metric prompt using human vs AI evaluation comparisons.\nevaluation_diffs is required and must not be empty.","operationId":"optimize_metric_prompt_with_diff_v1_optimize_metric_prompt_with_diff_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OptimizeMetricPromptWithDiffRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OptimizeMetricPromptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/self-improve/runs":{"post":{"tags":["Self-Improve"],"summary":"Start Run","description":"Start a self-improve run. Confirm-gated: call once to preview, then again with confirmed=true.","operationId":"start_run_v1_self_improve_runs_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartSelfImproveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Self-Improve"],"summary":"List Runs","operationId":"list_runs_v1_self_improve_runs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/self-improve/runs/{run_id}":{"get":{"tags":["Self-Improve"],"summary":"Get Run","operationId":"get_run_v1_self_improve_runs__run_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"integer","title":"Run Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/self-improve/runs/{run_id}/stop":{"post":{"tags":["Self-Improve"],"summary":"Stop Run","operationId":"stop_run_v1_self_improve_runs__run_id__stop_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"integer","title":"Run Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/red-team-simulations":{"post":{"tags":["Red-Team Simulations"],"summary":"Start Simulation","description":"Start a red-team test. Confirm-gated: call once to preview, then again with confirmed=true.","operationId":"start_simulation_v1_red_team_simulations_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartSimulationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Red-Team Simulations"],"summary":"List Simulations","operationId":"list_simulations_v1_red_team_simulations_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/red-team-simulations/{test_id}":{"get":{"tags":["Red-Team Simulations"],"summary":"Get Simulation","operationId":"get_simulation_v1_red_team_simulations__test_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"test_id","in":"path","required":true,"schema":{"type":"integer","title":"Test Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/red-team-simulations/{test_id}/stop":{"post":{"tags":["Red-Team Simulations"],"summary":"Stop Simulation","operationId":"stop_simulation_v1_red_team_simulations__test_id__stop_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"test_id","in":"path","required":true,"schema":{"type":"integer","title":"Test Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/bluejay-as-code/{root_type}/{root_id}":{"get":{"tags":["Bluejay as Code"],"summary":"Pull Bluejay As Code","operationId":"pull_bluejay_as_code_v1_bluejay_as_code__root_type___root_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"root_type","in":"path","required":true,"schema":{"enum":["simulation","agent","digital-human","custom-metric"],"type":"string","title":"Root Type"}},{"name":"root_id","in":"path","required":true,"schema":{"type":"string","title":"Root Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BluejayAsCodePayload"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/bluejay-as-code":{"post":{"tags":["Bluejay as Code"],"summary":"Push Bluejay As Code","operationId":"push_bluejay_as_code_v1_bluejay_as_code_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BluejayAsCodePayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/bluejay-ai/search-references":{"get":{"tags":["BluejayAI References"],"summary":"Search References","description":"Substring-search (or full list when `q` is empty) across the four referenceable types within the caller's org. Empty `q` is intentional: the frontend's Browse-card click scopes to a type without typing, and we want to show the recent N entries for that type rather than 422.","operationId":"search_references_v1_bluejay_ai_search_references_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"types","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Types"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":25,"minimum":1,"default":10,"title":"Limit"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchReferencesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/bluejay-ai/resolve-references":{"post":{"tags":["BluejayAI References"],"summary":"Resolve References","description":"Fetch full row data for each {type, id} mention in the caller's org. Permissive: never fails the whole request.","operationId":"resolve_references_v1_bluejay_ai_resolve_references_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveReferencesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveReferencesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/.well-known/openid-configuration":{"get":{"tags":["oidc"],"summary":"Openid Configuration","operationId":"openid_configuration__well_known_openid_configuration_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Openid Configuration  Well Known Openid Configuration Get"}}}}},"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}]}},"/.well-known/jwks.json":{"get":{"tags":["oidc"],"summary":"Jwks","operationId":"jwks__well_known_jwks_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Jwks  Well Known Jwks Json Get"}}}}},"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"API key required to authenticate requests."}]}}},"components":{"schemas":{"AccentType":{"type":"string","enum":["multilingual","american","american2","mature","southern","italian","indian","british","australian","scottish","irish","welsh","mexican","spanish","portuguese","french","turkish","japanese","hindi","arabic","egyptian","levantine","hebrew","russian","chinese","german","korean","urdu","telugu","tamil","malayalam","kannada","marathi","gujarati","vietnamese","cantonese","tagalog","autodetect","watson","watsonbritish","watsonaustralian","watsoncanadian"],"title":"AccentType","description":"Enum for accent options."},"ActivePackageResponse":{"properties":{"package_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Package Id","description":"Active package ID if available"},"has_active_contract":{"type":"boolean","title":"Has Active Contract","description":"Whether the user has an active contract"},"access_ends_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Ends At","description":"ISO 8601 timestamp when access ends, from Metronome contract ending_before (e.g. cancel at period end or trial end). Null if open-ended or not returned."}},"type":"object","required":["has_active_contract"],"title":"ActivePackageResponse"},"ActiveWindow":{"properties":{"days":{"items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"type":"array","title":"Days","description":"Days to run on; empty means every day"},"start_time":{"anyOf":[{"type":"string","pattern":"^\\d{2}:\\d{2}$"},{"type":"null"}],"title":"Start Time","description":"HH:MM start of the daily window"},"end_time":{"anyOf":[{"type":"string","pattern":"^\\d{2}:\\d{2}$"},{"type":"null"}],"title":"End Time","description":"HH:MM end of the daily window"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone the cron expression is read in. Null means UTC."}},"type":"object","title":"ActiveWindow","description":"Uptime monitor's active_window: same days/HH:MM shape as ScheduleWindow plus a timezone,\nbut interpreted directly rather than folded into cron — so a wrapping window with days is\nlegal here (unlike ScheduleWindow, which can't represent it in one cron expression)."},"ActualToolCallDetail":{"properties":{"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"Parameters passed to the tool"},"output":{"anyOf":[{},{"type":"null"}],"title":"Output","description":"Output returned by the tool"},"start_offset_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Offset Ms","description":"When the tool was called relative to conversation start, in milliseconds"}},"type":"object","title":"ActualToolCallDetail"},"AddConversationsToLabRequest":{"properties":{"lab_id":{"type":"string","title":"Lab Id","description":"Lab ID (UUID as string)"},"conversations":{"items":{"$ref":"#/components/schemas/ConversationItem"},"type":"array","minItems":1,"title":"Conversations","description":"List of conversations to add to the lab"}},"type":"object","required":["lab_id","conversations"],"title":"AddConversationsToLabRequest","description":"Request model for adding conversations to an existing lab"},"AddConversationsToLabResponse":{"properties":{"added_count":{"type":"integer","title":"Added Count","description":"Number of conversations successfully added"},"skipped_count":{"type":"integer","title":"Skipped Count","description":"Number of conversations that were skipped (already existed)"},"added_conversation_ids":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Added Conversation Ids","description":"List of conversation identifiers that were added"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","description":"Human-readable message about the operation"}},"type":"object","required":["added_count","skipped_count","added_conversation_ids"],"title":"AddConversationsToLabResponse","description":"Response model for adding conversations to a lab"},"AddDigitalHumansToSimulationRequest":{"properties":{"digital_human_ids":{"items":{"type":"integer"},"type":"array","title":"Digital Human Ids","description":"array of existing digital human IDs to add to the simulation"}},"type":"object","required":["digital_human_ids"],"title":"AddDigitalHumansToSimulationRequest","description":"request body for adding existing digital humans to a simulation."},"AddDigitalHumansToSimulationResponse":{"properties":{"message":{"type":"string","title":"Message","description":"success or partial_success message"},"failed_sip_reconcile_ids":{"items":{"type":"integer"},"type":"array","title":"Failed Sip Reconcile Ids","description":"digital human ids linked to the simulation but whose always-on SIP reconcile failed; they are active but currently unroutable"}},"type":"object","required":["message"],"title":"AddDigitalHumansToSimulationResponse","description":"response body for adding digital humans to a simulation."},"AddMetricsToLabRequest":{"properties":{"lab_id":{"type":"string","title":"Lab Id","description":"Lab ID (UUID as string)"},"metric_ids":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Metric Ids","description":"List of custom metric IDs (UUIDs as strings) to add to the lab"},"evaluate_conversations":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Evaluate Conversations","description":"Whether to evaluate conversations in the lab with the newly added metrics (copies existing evaluations where found, queues new evaluations only for metrics without results)","default":false}},"type":"object","required":["lab_id","metric_ids"],"title":"AddMetricsToLabRequest","description":"Request model for adding metrics to an existing lab"},"AddMetricsToLabResponse":{"properties":{"added_count":{"type":"integer","title":"Added Count","description":"Number of metrics successfully added"},"skipped_count":{"type":"integer","title":"Skipped Count","description":"Number of metrics that were skipped (already existed)"},"added_metric_ids":{"items":{"type":"string"},"type":"array","title":"Added Metric Ids","description":"List of metric IDs that were added"},"evaluation_triggered":{"type":"boolean","title":"Evaluation Triggered","description":"Whether evaluations were triggered for existing conversations","default":false},"evaluation_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Evaluation Count","description":"Number of conversations that were evaluated (if evaluation_triggered is true)"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","description":"Human-readable message about the operation"}},"type":"object","required":["added_count","skipped_count","added_metric_ids"],"title":"AddMetricsToLabResponse","description":"Response model for adding metrics to a lab"},"AddPhoneNumberRequest":{"properties":{"area_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Area Code","description":"Optional US area code to bias phone number search (e.g. 415)"},"quantity":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Quantity","description":"How many numbers to buy in one batch (org cap still enforced)","default":1}},"type":"object","title":"AddPhoneNumberRequest","description":"Request schema for auto-purchasing Twilio number(s) for an organization."},"AddPhoneNumberResponse":{"properties":{"phone_number":{"type":"string","title":"Phone Number","description":"Purchased E.164 phone number"},"twilio_sid":{"type":"string","title":"Twilio Sid","description":"Twilio IncomingPhoneNumber SID"},"organization_id":{"type":"string","format":"uuid","title":"Organization Id","description":"Organization ID"},"purchase_date":{"type":"string","format":"date","title":"Purchase Date","description":"Date when purchased"},"price":{"type":"integer","title":"Price","description":"Stored price in cents"}},"type":"object","required":["phone_number","twilio_sid","organization_id","purchase_date","price"],"title":"AddPhoneNumberResponse","description":"Response schema after auto-purchasing and storing a phone number."},"AddPhoneNumbersResponse":{"properties":{"numbers":{"items":{"$ref":"#/components/schemas/AddPhoneNumberResponse"},"type":"array","title":"Numbers","description":"Purchased numbers"},"total_price_cents":{"type":"integer","title":"Total Price Cents","description":"Combined monthly price for the batch, in cents"}},"type":"object","required":["numbers","total_price_cents"],"title":"AddPhoneNumbersResponse","description":"Response schema after auto-purchasing a batch of phone numbers."},"AddToCommunityRequest":{"properties":{"digital_human_ids":{"items":{"type":"integer"},"type":"array","title":"Digital Human Ids","description":"List of digital human (test case) IDs to add to this community"}},"type":"object","required":["digital_human_ids"],"title":"AddToCommunityRequest"},"AddWorkspaceMemberRequest":{"properties":{"user_id":{"type":"string","title":"User Id"}},"additionalProperties":false,"type":"object","required":["user_id"],"title":"AddWorkspaceMemberRequest"},"AdminCreateTemplateRequest":{"properties":{"bluejay_as_code_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Bluejay As Code Id","description":"Stable code-addressable identifier"},"agent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Id","description":"ID of the agent this metric belongs to (deprecated, use agent_ids instead)","deprecated":true},"agent_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Agent Ids","description":"List of agent IDs to associate this metric with"},"name":{"type":"string","title":"Name","description":"Name of the custom metric"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","description":"LLM-judge system prompt (required for llm_judge; null for other types)"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary","description":"Short plain-English description of the metric (LLM-generated)"},"metric_type":{"type":"string","title":"Metric Type","description":"Specific metric kind (llm_judge, tool_call, audio_*, vocal_fry); legacy alias: type","default":"llm_judge"},"settings":{"additionalProperties":true,"type":"object","title":"Settings","description":"Type-specific config (e.g. tool_call: {tool_names: [...]})"},"eval_segment":{"type":"string","enum":["agent","user","all"],"title":"Eval Segment","description":"Which side of the conversation is evaluated","default":"all"},"scope":{"type":"string","enum":["observability","simulations","all"],"title":"Scope","description":"Which pipeline runs this metric","default":"all"},"response_type":{"$ref":"#/components/schemas/src__models__metric__ResponseType","description":"Type of response expected"},"min_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Value","description":"Minimum value for quantitative metrics"},"max_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Value","description":"Maximum value for quantitative metrics"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","description":"Category for organizing metrics"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Tags for categorizing the metric"},"scoring_guidance":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scoring Guidance","description":"Guidance on how to score this metric"},"eval_modality":{"anyOf":[{"$ref":"#/components/schemas/EvalRoute"},{"type":"null"}],"description":"Evaluation modality AUTO/TEXT/AUDIO; legacy alias: eval_route","default":"AUTO"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model to use for text evaluation of the metric"},"audio_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Model","description":"Model to use for audio evaluation of the metric"},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature for evaluating the metric"},"enum_options":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enum Options","description":"Options for enum metrics"},"tool_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tool Names","description":"Expected tool names for tool_call metrics"},"json_schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Json Schema","description":"JSON Schema describing the object the judge must return (required for json metrics)"},"allow_not_applicable":{"type":"boolean","title":"Allow Not Applicable","description":"Whether this metric allows 'not applicable' responses.","default":false},"template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Id","description":"Library template this metric was created from"}},"type":"object","required":["name","response_type"],"title":"AdminCreateTemplateRequest","description":"Bluejay-authored template creation; agent/template fields are ignored."},"AgentMode":{"type":"string","enum":["VOICE","TEXT"],"title":"AgentMode","description":"Enum representing the mode of agent"},"AgentPydantic":{"properties":{"id":{"anyOf":[{"type":"integer"},{"type":"string"},{"type":"null"}],"title":"Id"},"bluejay_as_code_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Bluejay As Code Id"},"name":{"type":"string","title":"Name"},"agent_description":{"type":"string","title":"Agent Description"},"organization_id":{"type":"string","title":"Organization Id"},"workspace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Id"},"goals":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Goals"},"mode":{"$ref":"#/components/schemas/AgentMode"},"type":{"anyOf":[{"$ref":"#/components/schemas/AgentType"},{"type":"null"}]},"connection_type":{"anyOf":[{"$ref":"#/components/schemas/ConnectionType"},{"type":"null"}]},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number"},"follow_up_sms_sender_numbers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Follow Up Sms Sender Numbers"},"websocket_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Websocket Url"},"redact_pii":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Redact Pii"},"folder_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Folder Id"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"updated_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Updated By"},"created_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By"},"keyterms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Keyterms"},"voice_provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Provider"},"provider_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Id"},"websocket_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Websocket Username"},"websocket_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Websocket Password"},"external_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Agent Id"},"sip_uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sip Uri"},"custom_sip_headers":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Custom Sip Headers"},"sip_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sip Username"},"sip_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sip Password"},"simulation_notifications":{"additionalProperties":true,"type":"object","title":"Simulation Notifications"},"livekit_agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Livekit Agent Name"},"livekit_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Livekit Metadata"},"livekit_customer_tool_topic":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Livekit Customer Tool Topic"},"livekit_token_webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Livekit Token Webhook Url"},"livekit_token_webhook_auth":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Livekit Token Webhook Auth"},"pipecat_agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pipecat Agent Name"},"pipecat_agent_configuration":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pipecat Agent Configuration"},"pipecat_room_properties":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pipecat Room Properties"},"http_webhook":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Http Webhook"},"http_webhook_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Http Webhook Key"},"dynamic_sip_webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dynamic Sip Webhook Url"},"outbound_trigger_webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outbound Trigger Webhook Url"},"outbound_trigger_payload_template":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Outbound Trigger Payload Template"},"eleven_labs_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eleven Labs Agent Id"},"retell_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retell Agent Id"},"vapi_assistant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vapi Assistant Id"},"ces_app_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ces App Id"},"ces_deployment_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ces Deployment Id"},"dfcx_project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dfcx Project Id"},"dfcx_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dfcx Location"},"dfcx_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dfcx Agent Id"},"amelia_base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amelia Base Url"},"amelia_domain_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amelia Domain Code"},"amelia_flow_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amelia Flow Name"},"amelia_agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amelia Agent Name"},"bland_pathway_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bland Pathway Id"},"bland_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bland Agent Id"},"bland_persona_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bland Persona Id"},"kore_host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kore Host"},"kore_bot_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kore Bot Id"},"kore_client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kore Client Id"},"kore_client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kore Client Secret"},"kore_inbound_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kore Inbound Token"},"enable_outbound_call_auto_start":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Outbound Call Auto Start"},"simulations_disabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Simulations Disabled","default":false},"workflow":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Workflow"},"provider":{"anyOf":[{"$ref":"#/components/schemas/Provider"},{"type":"null"}]},"red_team_profile":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Red Team Profile"}},"type":"object","required":["name","agent_description","organization_id","mode"],"title":"AgentPydantic"},"AgentRequest":{"properties":{"bluejay_as_code_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Bluejay As Code Id","description":"Stable code-addressable identifier"},"name":{"type":"string","title":"Name","description":"Name of the agent"},"system_prompt":{"type":"string","title":"System Prompt","description":"System prompt for the agent"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number","description":"Phone number associated with the agent"},"goals":{"items":{"type":"string"},"type":"array","title":"Goals","description":"List of goals for the agent"},"type":{"anyOf":[{"$ref":"#/components/schemas/AgentType"},{"type":"null"}],"description":"INBOUND: Agent receives incoming calls from customers\nOUTBOUND: Agent makes outgoing calls to customers","default":"INBOUND"},"connection_type":{"anyOf":[{"$ref":"#/components/schemas/ConnectionType"},{"type":"null"}],"description":"Connection type of the agent (Livekit, Websocket, etc.)"},"mode":{"anyOf":[{"$ref":"#/components/schemas/AgentMode"},{"type":"null"}],"description":"Modality of the agent","default":"VOICE"},"keyterms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Keyterms","description":"List of keyterms for the agent"},"follow_up_sms_sender_numbers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Follow Up Sms Sender Numbers","description":"E.164 campaign numbers authorized to send this agent's follow-up SMS"},"external_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Agent Id","description":"External agent ID for the agent"},"folder":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder","description":"Name of the folder to put the agent in"},"websocket_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Websocket Url","description":"WebSocket URL for real-time communication"},"websocket_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Websocket Username","description":"Username for WebSocket authentication"},"websocket_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Websocket Password","description":"Password for WebSocket authentication"},"sip_uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sip Uri","description":"SIP URI for VoIP calls"},"sip_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sip Username","description":"Username for SIP authentication"},"sip_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sip Password","description":"Password for SIP authentication"},"custom_sip_headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Custom Sip Headers","description":"Custom headers for SIP requests (Do not include `X-` prefix for the headers, these get added automatically)"},"dynamic_sip_webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dynamic Sip Webhook Url","description":"Per-call SIP endpoint webhook. When set (SIP connection), each call fetches its destination SIP URI from this URL at dial time."},"outbound_trigger_webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outbound Trigger Webhook Url","description":"Customer-dialed sims: Bluejay POSTs a rendered payload to this URL at dispatch so the customer's own flow dials their agent into the receiving digital human."},"outbound_trigger_payload_template":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Outbound Trigger Payload Template","description":"JSON template for the outbound trigger webhook body; {{tokens}} like {{digital_human.phone_number}} are filled per call."},"redact_pii":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Redact Pii","description":"Enable/disable PII redaction","default":false},"livekit_agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Livekit Agent Name","description":"LiveKit agent name"},"livekit_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Livekit Metadata","description":"LiveKit metadata"},"livekit_customer_tool_topic":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Livekit Customer Tool Topic","description":"LiveKit customer tool topic"},"livekit_token_webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Livekit Token Webhook Url","description":"Webhook URL Bluejay calls per simulated call to fetch a LiveKit room token; alternative to storing the org's LiveKit API key/secret. Empty string clears the field."},"livekit_token_webhook_auth":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Livekit Token Webhook Auth","description":"Value of the Authorization header Bluejay sends on the token-webhook POST (e.g. 'Bearer <token>'). Stored encrypted. Empty string clears the field."},"pipecat_agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pipecat Agent Name","description":"Pipecat agent name"},"pipecat_agent_configuration":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pipecat Agent Configuration","description":"Pipecat agent configuration"},"pipecat_room_properties":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pipecat Room Properties","description":"Pipecat room properties"},"http_webhook":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Http Webhook","description":"HTTP webhook URL for text agent communication"},"voice_provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Provider","description":"Voice provider for the agent"},"provider_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Id","description":"Provider ID for the agent"},"eleven_labs_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eleven Labs Agent Id","description":"ElevenLabs Convai agent_id (for ELEVEN_LABS connection type; the xi-api-key lives in the org's integrations row)"},"retell_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retell Agent Id","description":"Retell agent_id (for RETELL connection type; the retell_key lives in the org's integrations row)"},"vapi_assistant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vapi Assistant Id","description":"Vapi assistant_id (for VAPI connection type; the vapi_private_key lives in the org's integrations row)"},"ces_app_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ces App Id","description":"Google CES app id (for GOOGLE_CES_VOICE / GOOGLE_CES_CHAT; the WIF JSON lives in the org's integrations row)"},"ces_deployment_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ces Deployment Id","description":"Google CES deployment id (deployment is bound to a specific app version)"},"dfcx_project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dfcx Project Id","description":"Google Dialogflow CX GCP project ID (for GOOGLE_DFCX_VOICE / GOOGLE_DFCX_CHAT; the WIF JSON lives in the org's integrations row)"},"dfcx_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dfcx Location","description":"Google Dialogflow CX location (e.g. us-central1, global)"},"dfcx_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dfcx Agent Id","description":"Google Dialogflow CX agent UUID (from the DFCX agent resource)"},"amelia_base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amelia Base Url","description":"Amelia deployment base URL including context root (e.g. https://tenant.amelia.com/Amelia)"},"amelia_domain_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amelia Domain Code","description":"Amelia domain code the conversation opens against (from /api/init -> domains[].code)"},"amelia_flow_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amelia Flow Name","description":"Which conversation flow in the Amelia domain this agent tracks (required for workflow sync)"},"amelia_agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amelia Agent Name","description":"Which cognitive agent in the Amelia domain this agent tracks (takes precedence over amelia_flow_name for workflow sync)"},"kore_host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kore Host","description":"Kore.ai platform host (e.g. https://kb.est.k8s.qa.kore.aws.spctrm.net)"},"kore_bot_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kore Bot Id","description":"Kore.ai bot ID (e.g. st-d536681d-...)"},"kore_client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kore Client Id","description":"Kore.ai webhook app Client ID (cs-...)"},"kore_client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kore Client Secret","description":"Kore.ai webhook app Client Secret (HS256); stored encrypted"},"bland_pathway_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bland Pathway Id","description":"Bland pathway id the agent runs (for BLAND_VOICE / BLAND_CHAT; the bland_api_key lives in the org's integrations row)"},"bland_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bland Agent Id","description":"Bland web agent id bound to the pathway (required for BLAND_VOICE: a pathway itself cannot be dialled)"},"enable_outbound_call_auto_start":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Outbound Call Auto Start","description":"Automatically initiate an outbound call when a test result reaches READY state"},"simulations_disabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Simulations Disabled","description":"Enable/disable simulations for this agent","default":false},"workflow":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Workflow","description":"Provider-specific workflow definition (e.g. full ElevenLabs Get Agent response). Parsing depends on `provider`."},"provider":{"anyOf":[{"$ref":"#/components/schemas/Provider"},{"type":"null"}],"description":"Source platform the agent's definition comes from. Defaults to ELEVENLABS for ELEVEN_LABS connection_type, otherwise CUSTOM."}},"type":"object","required":["name","system_prompt","goals"],"title":"AgentRequest"},"AgentResponse":{"properties":{"agent_id":{"type":"integer","title":"Agent Id","description":"ID of the created agent"},"status":{"type":"string","title":"Status","description":"Status of the response","default":"200"},"http_webhook_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Http Webhook Key","description":"Signing key for HTTP webhook (only provided if http_webhook was set)"}},"type":"object","required":["agent_id"],"title":"AgentResponse"},"AgentSpendOut":{"properties":{"agent_id":{"type":"string","title":"Agent Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"minutes":{"type":"number","title":"Minutes","default":0.0},"spent_credits":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spent Credits"},"simulation_credits":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Simulation Credits"},"observability_credits":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Observability Credits"}},"type":"object","required":["agent_id"],"title":"AgentSpendOut"},"AgentType":{"type":"string","enum":["INBOUND","OUTBOUND"],"title":"AgentType","description":"Enum representing the type of agent"},"AgentUpdateRequest":{"properties":{"bluejay_as_code_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Bluejay As Code Id","description":"Stable code-addressable identifier"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id","description":"ID of the agent to be updated"},"external_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Agent Id","description":"External agent ID for the agent"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Name of the agent"},"system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt","description":"System prompt for the agent"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number","description":"Phone number associated with the agent"},"goals":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Goals","description":"List of goals for the agent"},"type":{"anyOf":[{"$ref":"#/components/schemas/AgentType"},{"type":"null"}],"description":"INBOUND: Agent receives incoming calls from customers\nOUTBOUND: Agent makes outgoing calls to customers"},"connection_type":{"anyOf":[{"$ref":"#/components/schemas/ConnectionType"},{"type":"null"}],"description":"Connection type of the agent (Livekit, Websocket, etc.)"},"mode":{"anyOf":[{"$ref":"#/components/schemas/AgentMode"},{"type":"null"}],"description":"Modality of the agent"},"keyterms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Keyterms","description":"List of keyterms for the agent"},"follow_up_sms_sender_numbers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Follow Up Sms Sender Numbers","description":"E.164 campaign numbers authorized to send this agent's follow-up SMS"},"folder":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder","description":"Name of the folder to put the agent in"},"websocket_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Websocket Url","description":"WebSocket URL for real-time communication"},"websocket_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Websocket Username","description":"Username for WebSocket authentication"},"websocket_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Websocket Password","description":"Password for WebSocket authentication"},"sip_uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sip Uri","description":"SIP URI for VoIP calls"},"sip_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sip Username","description":"Username for SIP authentication"},"sip_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sip Password","description":"Password for SIP authentication"},"custom_sip_headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Custom Sip Headers","description":"Custom headers for SIP requests (Do not include `X-` prefix for the headers, these get added automatically)"},"dynamic_sip_webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dynamic Sip Webhook Url","description":"Per-call SIP endpoint webhook. When set (SIP connection), each call fetches its destination SIP URI from this URL at dial time."},"outbound_trigger_webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outbound Trigger Webhook Url","description":"Customer-dialed sims: Bluejay POSTs a rendered payload to this URL at dispatch so the customer's own flow dials their agent into the receiving digital human."},"outbound_trigger_payload_template":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Outbound Trigger Payload Template","description":"JSON template for the outbound trigger webhook body; {{tokens}} like {{digital_human.phone_number}} are filled per call."},"redact_pii":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Redact Pii","description":"Enable/disable PII redaction"},"livekit_agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Livekit Agent Name","description":"LiveKit agent name"},"livekit_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Livekit Metadata","description":"LiveKit metadata"},"livekit_customer_tool_topic":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Livekit Customer Tool Topic","description":"LiveKit customer tool topic"},"livekit_token_webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Livekit Token Webhook Url","description":"Webhook URL Bluejay calls per simulated call to fetch a LiveKit room token; alternative to storing the org's LiveKit API key/secret. Empty string clears the field."},"livekit_token_webhook_auth":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Livekit Token Webhook Auth","description":"Value of the Authorization header Bluejay sends on the token-webhook POST (e.g. 'Bearer <token>'). Stored encrypted. Empty string clears the field."},"pipecat_agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pipecat Agent Name","description":"Pipecat agent name"},"pipecat_agent_configuration":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pipecat Agent Configuration","description":"Pipecat agent configuration"},"pipecat_room_properties":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pipecat Room Properties","description":"Pipecat room properties"},"http_webhook":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Http Webhook","description":"HTTP webhook URL for text agent communication"},"voice_provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Provider","description":"Voice provider for the agent"},"provider_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Id","description":"Provider ID for the agent"},"eleven_labs_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eleven Labs Agent Id","description":"ElevenLabs Convai agent_id (for ELEVEN_LABS connection type; the xi-api-key lives in the org's integrations row)"},"retell_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retell Agent Id","description":"Retell agent_id (for RETELL connection type; the retell_key lives in the org's integrations row)"},"vapi_assistant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vapi Assistant Id","description":"Vapi assistant_id (for VAPI connection type; the vapi_private_key lives in the org's integrations row)"},"ces_app_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ces App Id","description":"Google CES app id (for GOOGLE_CES_VOICE / GOOGLE_CES_CHAT; the WIF JSON lives in the org's integrations row)"},"ces_deployment_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ces Deployment Id","description":"Google CES deployment id (deployment is bound to a specific app version)"},"dfcx_project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dfcx Project Id","description":"Google Dialogflow CX GCP project ID (for GOOGLE_DFCX_VOICE / GOOGLE_DFCX_CHAT; the WIF JSON lives in the org's integrations row)"},"dfcx_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dfcx Location","description":"Google Dialogflow CX location (e.g. us-central1, global)"},"dfcx_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dfcx Agent Id","description":"Google Dialogflow CX agent UUID (from the DFCX agent resource)"},"amelia_base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amelia Base Url","description":"Amelia deployment base URL including context root (e.g. https://tenant.amelia.com/Amelia)"},"amelia_domain_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amelia Domain Code","description":"Amelia domain code the conversation opens against (from /api/init -> domains[].code)"},"amelia_flow_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amelia Flow Name","description":"Which conversation flow in the Amelia domain this agent tracks (required for workflow sync)"},"amelia_agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amelia Agent Name","description":"Which cognitive agent in the Amelia domain this agent tracks (takes precedence over amelia_flow_name for workflow sync)"},"kore_host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kore Host","description":"Kore.ai platform host (e.g. https://kb.est.k8s.qa.kore.aws.spctrm.net)"},"kore_bot_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kore Bot Id","description":"Kore.ai bot ID (e.g. st-d536681d-...)"},"kore_client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kore Client Id","description":"Kore.ai webhook app Client ID (cs-...)"},"kore_client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kore Client Secret","description":"Kore.ai webhook app Client Secret (HS256); stored encrypted"},"bland_pathway_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bland Pathway Id","description":"Bland pathway id the agent runs (for BLAND_VOICE / BLAND_CHAT; the bland_api_key lives in the org's integrations row)"},"bland_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bland Agent Id","description":"Bland web agent id bound to the pathway (required for BLAND_VOICE: a pathway itself cannot be dialled)"},"enable_outbound_call_auto_start":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Outbound Call Auto Start","description":"Automatically initiate an outbound call when a test result reaches READY state"},"simulations_disabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Simulations Disabled","description":"Enable/disable simulations for this agent"},"workflow":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Workflow","description":"Provider-specific workflow definition (e.g. full ElevenLabs Get Agent response). Parsing depends on `provider`."},"provider":{"anyOf":[{"$ref":"#/components/schemas/Provider"},{"type":"null"}],"description":"Source platform the agent's definition comes from."}},"type":"object","required":["agent_id"],"title":"AgentUpdateRequest"},"AgentUpdateResponse":{"properties":{"agent":{"$ref":"#/components/schemas/AgentUpdateRequest","description":"Updated agent details"},"status":{"type":"string","title":"Status","description":"Status of the response","default":"200"},"http_webhook_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Http Webhook Key","description":"Signing key for HTTP webhook (only provided if http_webhook was set)"}},"type":"object","required":["agent"],"title":"AgentUpdateResponse"},"AgentUpdateWithExternalIdRequest":{"properties":{"external_agent_id":{"type":"string","title":"External Agent Id","description":"External agent ID for the agent"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Name of the agent"},"system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt","description":"System prompt for the agent"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number","description":"Phone number associated with the agent"},"goals":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Goals","description":"List of goals for the agent"},"type":{"anyOf":[{"$ref":"#/components/schemas/AgentType"},{"type":"null"}],"description":"INBOUND: Agent receives incoming calls from customers\nOUTBOUND: Agent makes outgoing calls to customers"},"connection_type":{"anyOf":[{"$ref":"#/components/schemas/ConnectionType"},{"type":"null"}],"description":"Connection type of the agent (Livekit, Websocket, etc.)"},"mode":{"anyOf":[{"$ref":"#/components/schemas/AgentMode"},{"type":"null"}],"description":"Modality of the agent"},"keyterms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Keyterms","description":"List of keyterms for the agent"},"follow_up_sms_sender_numbers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Follow Up Sms Sender Numbers","description":"E.164 campaign numbers authorized to send this agent's follow-up SMS"},"folder":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder","description":"Name of the folder to put the agent in"},"websocket_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Websocket Url","description":"WebSocket URL for real-time communication"},"websocket_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Websocket Username","description":"Username for WebSocket authentication"},"websocket_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Websocket Password","description":"Password for WebSocket authentication"},"sip_uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sip Uri","description":"SIP URI for VoIP calls"},"sip_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sip Username","description":"Username for SIP authentication"},"sip_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sip Password","description":"Password for SIP authentication"},"custom_sip_headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Custom Sip Headers","description":"Custom headers for SIP requests"},"dynamic_sip_webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dynamic Sip Webhook Url","description":"Per-call SIP endpoint webhook. When set (SIP connection), each call fetches its destination SIP URI from this URL at dial time."},"outbound_trigger_webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outbound Trigger Webhook Url","description":"Customer-dialed sims: Bluejay POSTs a rendered payload to this URL at dispatch so the customer's own flow dials their agent into the receiving digital human."},"outbound_trigger_payload_template":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Outbound Trigger Payload Template","description":"JSON template for the outbound trigger webhook body; {{tokens}} like {{digital_human.phone_number}} are filled per call."},"redact_pii":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Redact Pii","description":"Enable/disable PII redaction"},"livekit_agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Livekit Agent Name","description":"LiveKit agent name"},"livekit_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Livekit Metadata","description":"LiveKit metadata"},"livekit_customer_tool_topic":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Livekit Customer Tool Topic","description":"LiveKit customer tool topic"},"livekit_token_webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Livekit Token Webhook Url","description":"Webhook URL Bluejay calls per simulated call to fetch a LiveKit room token; alternative to storing the org's LiveKit API key/secret. Empty string clears the field."},"livekit_token_webhook_auth":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Livekit Token Webhook Auth","description":"Value of the Authorization header Bluejay sends on the token-webhook POST (e.g. 'Bearer <token>'). Stored encrypted. Empty string clears the field."},"pipecat_agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pipecat Agent Name","description":"Pipecat agent name"},"pipecat_agent_configuration":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pipecat Agent Configuration","description":"Pipecat agent configuration"},"pipecat_room_properties":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pipecat Room Properties","description":"Pipecat room properties"},"http_webhook":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Http Webhook","description":"HTTP webhook URL for text agent communication"},"voice_provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Provider","description":"Voice provider for the agent"},"provider_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Id","description":"Provider ID for the agent"},"eleven_labs_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eleven Labs Agent Id","description":"ElevenLabs Convai agent_id (for ELEVEN_LABS connection type; the xi-api-key lives in the org's integrations row)"},"retell_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retell Agent Id","description":"Retell agent_id (for RETELL connection type; the retell_key lives in the org's integrations row)"},"vapi_assistant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vapi Assistant Id","description":"Vapi assistant_id (for VAPI connection type; the vapi_private_key lives in the org's integrations row)"},"ces_app_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ces App Id","description":"Google CES app id (for GOOGLE_CES_VOICE / GOOGLE_CES_CHAT; the WIF JSON lives in the org's integrations row)"},"ces_deployment_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ces Deployment Id","description":"Google CES deployment id (deployment is bound to a specific app version)"},"dfcx_project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dfcx Project Id","description":"Google Dialogflow CX GCP project ID (for GOOGLE_DFCX_VOICE / GOOGLE_DFCX_CHAT; the WIF JSON lives in the org's integrations row)"},"dfcx_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dfcx Location","description":"Google Dialogflow CX location (e.g. us-central1, global)"},"dfcx_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dfcx Agent Id","description":"Google Dialogflow CX agent UUID (from the DFCX agent resource)"},"amelia_base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amelia Base Url","description":"Amelia deployment base URL including context root (e.g. https://tenant.amelia.com/Amelia)"},"amelia_domain_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amelia Domain Code","description":"Amelia domain code the conversation opens against (from /api/init -> domains[].code)"},"amelia_flow_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amelia Flow Name","description":"Which conversation flow in the Amelia domain this agent tracks (required for workflow sync)"},"amelia_agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amelia Agent Name","description":"Which cognitive agent in the Amelia domain this agent tracks (takes precedence over amelia_flow_name for workflow sync)"},"kore_host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kore Host","description":"Kore.ai platform host (e.g. https://kb.est.k8s.qa.kore.aws.spctrm.net)"},"kore_bot_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kore Bot Id","description":"Kore.ai bot ID (e.g. st-d536681d-...)"},"kore_client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kore Client Id","description":"Kore.ai webhook app Client ID (cs-...)"},"kore_client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kore Client Secret","description":"Kore.ai webhook app Client Secret (HS256); stored encrypted"},"bland_pathway_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bland Pathway Id","description":"Bland pathway id the agent runs (for BLAND_VOICE / BLAND_CHAT; the bland_api_key lives in the org's integrations row)"},"bland_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bland Agent Id","description":"Bland web agent id bound to the pathway (required for BLAND_VOICE: a pathway itself cannot be dialled)"},"enable_outbound_call_auto_start":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Outbound Call Auto Start","description":"Automatically initiate an outbound call when a test result reaches READY state"},"simulations_disabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Simulations Disabled","description":"Enable/disable simulations for this agent"},"workflow":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Workflow","description":"Provider-specific workflow definition (e.g. full ElevenLabs Get Agent response). Parsing depends on `provider`."},"provider":{"anyOf":[{"$ref":"#/components/schemas/Provider"},{"type":"null"}],"description":"Source platform the agent's definition comes from."}},"type":"object","required":["external_agent_id"],"title":"AgentUpdateWithExternalIdRequest"},"AgentWebhookKeyRequest":{"properties":{"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id","description":"ID of the agent"},"external_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Agent Id","description":"External ID of the agent"}},"type":"object","title":"AgentWebhookKeyRequest","description":"Request model for creating/getting an agent webhook key"},"AgentWebhookKeyResponse":{"properties":{"signing_key":{"type":"string","title":"Signing Key","description":"Signing key"},"message":{"type":"string","title":"Message","description":"Message"}},"type":"object","required":["signing_key","message"],"title":"AgentWebhookKeyResponse","description":"Response model for agent webhook key"},"AlertEventResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier for the alert event"},"alert_id":{"type":"string","title":"Alert Id","description":"ID of the alert that fired"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"When the event fired"},"triggered_by_entity_type":{"type":"string","title":"Triggered By Entity Type","description":"Type of entity that triggered the event"},"triggered_by_entity_id":{"type":"string","title":"Triggered By Entity Id","description":"ID of the entity that triggered the event"},"entity_field":{"type":"string","title":"Entity Field","description":"The field/metric that breached the threshold"},"actual_value":{"type":"string","title":"Actual Value","description":"The observed value that triggered the event"},"expected_value":{"type":"string","title":"Expected Value","description":"The threshold value compared against"},"operator_used":{"type":"string","title":"Operator Used","description":"The comparison operator applied"},"agent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Id","description":"Agent associated with the event"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional event context"},"source":{"type":"string","title":"Source","description":"Data source that caused the event: 'simulation', 'observability', or 'unknown'"},"simulation":{"anyOf":[{"$ref":"#/components/schemas/AlertSimulationSource"},{"type":"null"}],"description":"Simulation source details (set when source='simulation')"},"observability":{"anyOf":[{"$ref":"#/components/schemas/AlertObservabilitySource"},{"type":"null"}],"description":"Observability source details (set when source='observability')"}},"type":"object","required":["id","alert_id","triggered_by_entity_type","triggered_by_entity_id","entity_field","actual_value","expected_value","operator_used","source"],"title":"AlertEventResponse","description":"A single fired alert event, resolved to the entity that caused it."},"AlertObservabilitySource":{"properties":{"call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Call Id","description":"conversation id of the call that caused the event"},"call_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Call Status","description":"Status of the triggering call"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At","description":"When the triggering call started"}},"type":"object","title":"AlertObservabilitySource","description":"The observability entity (call) that caused a fired alert event."},"AlertResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier for the alert"},"name":{"type":"string","title":"Name","description":"Name of the alert"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of the alert"},"is_enabled":{"type":"boolean","title":"Is Enabled","description":"Whether the alert is enabled"},"organization_id":{"type":"string","title":"Organization Id","description":"Organization ID"},"entity_type":{"$ref":"#/components/schemas/EntityType","description":"Type of entity being monitored"},"entity_field":{"type":"string","title":"Entity Field","description":"The specific field/metric being monitored"},"operator":{"$ref":"#/components/schemas/Operator","description":"Comparison operator"},"comparison_value":{"type":"string","title":"Comparison Value","description":"Value to compare against"},"notification_channels":{"items":{},"type":"array","title":"Notification Channels","description":"Notification channels configuration"},"last_triggered_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Triggered At","description":"When the alert was last triggered"},"trigger_count":{"type":"integer","title":"Trigger Count","description":"Number of times triggered"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By","description":"User who created the alert"},"applies_to_all_agents":{"type":"boolean","title":"Applies To All Agents","description":"Whether the alert applies to all agents"},"agents":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Agents","description":"Associated agent IDs"},"simulation_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Simulation Id","description":"Optional experiments.id (simulation) this alert is scoped to"},"evaluation_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evaluation Scope","description":"How this alert is evaluated. Only 'per_simulation_run' is supported."},"aggregation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aggregation","description":"Aggregation mode used to compute the per-run metric value from test results within the run."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the alert was created"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At","description":"When the alert was last updated"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By","description":"User who last updated the alert"},"threshold_time_interval":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Threshold Time Interval","description":"For observability source_scope: time window in seconds. For simulation source_scope: K = number of recent completed runs."},"min_events":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Events","description":"The minimum number of events for the alert. NULL for simulation alerts."},"min_events_type":{"type":"string","title":"Min Events Type","description":"Whether min_events is an absolute count or a percentage","default":"events"},"in_alert":{"type":"boolean","title":"In Alert","description":"Whether the alert is in alert"},"source_scope":{"type":"string","title":"Source Scope","description":"Which data source fires this alert: 'all', 'observability', or 'simulation'","default":"all"},"simulation_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Simulation Name","description":"Name of the simulation (experiment) this alert is scoped to, if any"}},"type":"object","required":["id","name","is_enabled","organization_id","entity_type","entity_field","operator","comparison_value","notification_channels","trigger_count","applies_to_all_agents","created_at","threshold_time_interval","min_events","in_alert"],"title":"AlertResponse","description":"Response model for alert operations"},"AlertResultsResponse":{"properties":{"alert_id":{"type":"string","title":"Alert Id","description":"ID of the alert"},"source_scope":{"type":"string","title":"Source Scope","description":"Configured source scope of the alert"},"results":{"items":{"$ref":"#/components/schemas/AlertEventResponse"},"type":"array","title":"Results","description":"The fired events on this page, newest first"},"total_count":{"type":"integer","title":"Total Count","description":"Total number of events matching the filter across all pages"},"page":{"type":"integer","title":"Page","description":"Current page (1-based)"},"page_size":{"type":"integer","title":"Page Size","description":"Requested number of items per page"},"items_in_page":{"type":"integer","title":"Items In Page","description":"Actual number of items on this page"},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages"}},"type":"object","required":["alert_id","source_scope","results","total_count","page","page_size","items_in_page","total_pages"],"title":"AlertResultsResponse","description":"Paginated results (fired events) for a single alert.\n\nPagination follows the same page-based convention as the other list\nendpoints (e.g. retrieve-call-logs, get-custom-metrics)."},"AlertResultsSourceFilter":{"type":"string","enum":["simulation","observability"],"title":"AlertResultsSourceFilter","description":"Filterable sources for the results endpoint.\n\nDeliberately excludes AlertEventSource.UNKNOWN: it is a classification outcome,\nnot a valid filter, and accepting it would silently return unfiltered results."},"AlertSimulationSource":{"properties":{"simulation_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Simulation Id","description":"experiments.id of the simulation the triggering run belongs to"},"simulation_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Simulation Name","description":"Name of the simulation"},"simulation_run_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Simulation Run Id","description":"experiment_runs.id of the specific run that caused the event"},"test_result_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Test Result Id","description":"test_results.id of the specific test result that caused the event, if any"},"run_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Run Status","description":"Status of the triggering simulation run"}},"type":"object","title":"AlertSimulationSource","description":"The simulation entity that caused a fired alert event."},"ApplyRetentionDiscountResponse":{"properties":{"success":{"type":"boolean","title":"Success","description":"Whether the retention credit was applied"},"message":{"type":"string","title":"Message","description":"Response message for the frontend"},"credits_granted":{"type":"integer","title":"Credits Granted","description":"Retention credits added to the org's balance"}},"type":"object","required":["success","message","credits_granted"],"title":"ApplyRetentionDiscountResponse"},"AttachAgentResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"agent_id":{"type":"integer","title":"Agent Id"},"knowledge_base_id":{"type":"string","format":"uuid","title":"Knowledge Base Id"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","agent_id","knowledge_base_id"],"title":"AttachAgentResponse"},"AttachVapiToolRequest":{"properties":{"tool_id":{"type":"string","title":"Tool Id"}},"type":"object","required":["tool_id"],"title":"AttachVapiToolRequest"},"AttackBatch":{"properties":{"intent":{"type":"string","title":"Intent","description":"Free-text attacker goal (e.g. 'force a credential reset without proper auth'). Persisted to test_cases.intent_summary - the same column goal-adherence DHs use. FE may seed from preset templates but value is editable."},"vector_id":{"type":"string","title":"Vector Id","description":"Attack tactic - key in VECTOR_CATALOG. Catalog-bound (not editable). Drives attack_type derivation."},"traits":{"items":{"$ref":"#/components/schemas/src__models__digital_humans__red_team_attack__Trait"},"type":"array","title":"Traits","description":"Free-form customer traits the attacker possesses; missing fields = attacker doesn't have them."},"count":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Count","description":"Number of scenarios to generate for this batch."},"custom_success_criteria":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Success Criteria","description":"Override the LLM-generated success criteria."}},"type":"object","required":["intent","vector_id","count"],"title":"AttackBatch"},"AudioQualityType":{"type":"string","enum":["high","medium","low","horrible"],"title":"AudioQualityType","description":"Enum for audio quality options."},"AutoreloadRequest":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"threshold_credits":{"anyOf":[{"type":"integer","minimum":5.0},{"type":"null"}],"title":"Threshold Credits","description":"fire when remaining credits fall to this ($5 min)"},"reload_amount_credits":{"anyOf":[{"type":"integer","minimum":10.0},{"type":"null"}],"title":"Reload Amount Credits","description":"credits to add each time it fires ($10 min, $1 each)"}},"type":"object","required":["enabled"],"title":"AutoreloadRequest"},"AutoreloadResponse":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"threshold_credits":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Threshold Credits"},"reload_amount_credits":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reload Amount Credits"}},"type":"object","required":["enabled"],"title":"AutoreloadResponse"},"BackgroundNoiseType":{"type":"string","enum":["none","office","talking","traffic","cafe","park","tv","noisy_restaurant","hospital","custom"],"title":"BackgroundNoiseType","description":"Enum for background noise options."},"BbbTokenRequest":{"properties":{"room_name":{"type":"string","title":"Room Name"},"participant_identity":{"type":"string","title":"Participant Identity"},"agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"},"agent_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Agent Metadata"},"sim_conversation_id":{"type":"integer","title":"Sim Conversation Id"}},"type":"object","required":["room_name","participant_identity","sim_conversation_id"],"title":"BbbTokenRequest"},"BlandVoiceSessionRequest":{"properties":{"agent_id":{"type":"integer","title":"Agent Id"}},"type":"object","required":["agent_id"],"title":"BlandVoiceSessionRequest"},"BluejayAsCodePayload":{"properties":{"agents":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Agents"},"simulations":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Simulations"},"digital_humans":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Digital Humans"},"custom_metrics":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Custom Metrics"}},"type":"object","required":["agents","simulations","digital_humans","custom_metrics"],"title":"BluejayAsCodePayload"},"Body_create_voice_clone_v1_voice_clones_post":{"properties":{"name":{"type":"string","title":"Name"},"files":{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array","title":"Files"}},"type":"object","required":["name","files"],"title":"Body_create_voice_clone_v1_voice_clones_post"},"Bucket":{"properties":{"group":{"type":"string","title":"Group","description":"The grouped value, or the metric value when grouping by it"},"count":{"type":"integer","title":"Count"},"avg_duration_ms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Duration Ms","description":"Conversation groupings only"},"edited_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Edited Count","description":"Metric groupings only"}},"type":"object","required":["group","count"],"title":"Bucket"},"BulkCreateDigitalHumansRequest":{"properties":{"simulation_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Simulation Ids","description":"list of simulation IDs to associate with all digital humans in this request"},"digital_humans":{"items":{"$ref":"#/components/schemas/DigitalHumanRequestData"},"type":"array","maxItems":100,"minItems":1,"title":"Digital Humans","description":"list of digital humans to create (min 1, max 100)"}},"type":"object","required":["digital_humans"],"title":"BulkCreateDigitalHumansRequest","description":"Request model for bulk creating digital humans."},"BulkCreateDigitalHumansResponse":{"properties":{"created":{"items":{"$ref":"#/components/schemas/src__models__digital_humans__digital_human_response__DigitalHumanResponse"},"type":"array","title":"Created","description":"Successfully created digital humans"},"errors":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Errors","description":"Errors for items that failed to create, with index and detail"}},"type":"object","title":"BulkCreateDigitalHumansResponse","description":"Response model for bulk digital human creation."},"BulkDeleteCallLogsRequest":{"properties":{"call_ids":{"items":{"type":"string"},"type":"array","title":"Call Ids","description":"List of call IDs to delete"}},"type":"object","required":["call_ids"],"title":"BulkDeleteCallLogsRequest"},"BulkDeleteCallLogsResponse":{"properties":{"message":{"type":"string","title":"Message","description":"Success message"},"deleted_count":{"type":"integer","title":"Deleted Count","description":"Number of calls successfully deleted"},"status":{"type":"string","title":"Status","description":"Status of the response","default":"200"}},"type":"object","required":["message","deleted_count"],"title":"BulkDeleteCallLogsResponse"},"BulkDeleteDigitalHumansResponse":{"properties":{"deleted":{"items":{"$ref":"#/components/schemas/DigitalHumanResponseData"},"type":"array","title":"Deleted","description":"Successfully deleted digital humans"},"errors":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Errors","description":"Errors for items that failed to delete, with id and detail"}},"type":"object","title":"BulkDeleteDigitalHumansResponse","description":"Response model for bulk digital human deletion."},"BulkDeleteMetricsRequest":{"properties":{"custom_metric_ids":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Custom Metric Ids","description":"UUIDs of custom metrics to delete"}},"type":"object","required":["custom_metric_ids"],"title":"BulkDeleteMetricsRequest","description":"Request to delete multiple custom metrics."},"BulkDeleteMetricsResponse":{"properties":{"deleted_count":{"type":"integer","title":"Deleted Count","description":"Number of metrics deleted"},"deleted_metric_ids":{"items":{"type":"string"},"type":"array","title":"Deleted Metric Ids","description":"IDs of metrics that were deleted"}},"type":"object","required":["deleted_count","deleted_metric_ids"],"title":"BulkDeleteMetricsResponse","description":"Response for bulk delete."},"BulkUpdateDigitalHumansRequest":{"properties":{"updates":{"items":{"$ref":"#/components/schemas/BulkUpdateItem"},"type":"array","maxItems":100,"minItems":1,"title":"Updates"}},"type":"object","required":["updates"],"title":"BulkUpdateDigitalHumansRequest"},"BulkUpdateDigitalHumansResponse":{"properties":{"updated":{"items":{"$ref":"#/components/schemas/src__models__digital_humans__digital_human_response__DigitalHumanResponse"},"type":"array","title":"Updated"},"errors":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Errors","description":"Per-item failures, each with digital_human_id, status_code, detail"}},"type":"object","title":"BulkUpdateDigitalHumansResponse"},"BulkUpdateItem":{"properties":{"digital_human_id":{"type":"integer","title":"Digital Human Id","description":"ID of the digital human to update"},"update":{"$ref":"#/components/schemas/UpdateDigitalHumanRequest","description":"Partial update payload (same shape as the single update endpoint)"}},"type":"object","required":["digital_human_id","update"],"title":"BulkUpdateItem"},"BulkUpdateMetricsRequest":{"properties":{"metric_ids":{"items":{"type":"string"},"type":"array","title":"Metric Ids","description":"UUIDs of custom metrics to update"},"updates":{"$ref":"#/components/schemas/MetricUpdates","description":"Fields to update (only present keys are applied; value including null is written)"}},"type":"object","required":["metric_ids","updates"],"title":"BulkUpdateMetricsRequest","description":"Request for bulk updating custom metrics (same patch applied to each metric)."},"BulkUpdateMetricsResponse":{"properties":{"success":{"type":"boolean","title":"Success","description":"Whether the operation succeeded","default":true},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","description":"Human-readable summary; frontend falls back to 'Updated N custom metric(s)' if missing"},"updated":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated","description":"Number of metrics updated"}},"type":"object","title":"BulkUpdateMetricsResponse","description":"Response for bulk update (success, message, updated count)."},"BuyCreditsRequest":{"properties":{"credits":{"type":"integer","exclusiveMinimum":0.0,"title":"Credits","description":"Number of credits to purchase (1 credit = $1)"}},"type":"object","required":["credits"],"title":"BuyCreditsRequest"},"BuyCreditsResponse":{"properties":{"success":{"type":"boolean","title":"Success","description":"Whether the credit purchase was accepted"},"message":{"type":"string","title":"Message","description":"Response message for the frontend"}},"type":"object","required":["success","message"],"title":"BuyCreditsResponse"},"CallDirection":{"type":"string","enum":["INBOUND","OUTBOUND"],"title":"CallDirection","description":"Enum representing the direction of a call."},"CallInterface":{"type":"string","enum":["PHONE","WEB"],"title":"CallInterface","description":"Enum representing the interface used for a call."},"CallLog":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier for the call"},"agent_id":{"type":"string","title":"Agent Id","description":"ID of the agent associated with the call"},"external_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Agent Id","description":"External ID of the agent associated with the call"},"recording_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recording Url","description":"URL to the recording file (supported formats: .mp4, .wav, .m4a)"},"start_time_utc":{"type":"string","title":"Start Time Utc","description":"When the call started, in UTC"},"participants":{"items":{"$ref":"#/components/schemas/ParticipantResponse"},"type":"array","title":"Participants","description":"List of call participants"},"call_direction":{"$ref":"#/components/schemas/CallDirection","description":"Direction of the call from the Agent's perspective (INBOUND or OUTBOUND)","default":"INBOUND"},"interface":{"$ref":"#/components/schemas/CallInterface","description":"Interface used for the call","default":"PHONE"},"status":{"$ref":"#/components/schemas/CallStatus","description":"Current status of the call"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When this request was created (defaults to now in UTC)"},"transcript_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transcript Url","description":"URL to the transcript file (supported formats: .txt, .json)"},"tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolCallData"},"type":"array"},{"type":"null"}],"title":"Tool Calls","description":"List of tool calls made during the call"},"events":{"anyOf":[{"items":{"$ref":"#/components/schemas/Event"},"type":"array"},{"type":"null"}],"title":"Events","description":"List of events that occurred during the call"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"List of tags associated with the call"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms","description":"Duration of the call in milliseconds","default":0},"evaluations":{"anyOf":[{"items":{"$ref":"#/components/schemas/Evaluation"},"type":"array"},{"type":"null"}],"title":"Evaluations","description":"List of evaluations associated with the call"},"metrics":{"anyOf":[{"items":{"$ref":"#/components/schemas/MetricResult"},"type":"array"},{"type":"null"}],"title":"Metrics","description":"Metric results scored on this call. Includes the audio measurements that have no evaluations column, such as user_perceived_loudness, user_audio_clipping and user_audio_dropouts"},"annotations":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Annotations","description":"Annotations associated with the call"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional metadata associated with the call"},"custom_metrics":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Custom Metrics","description":"Please use the custom metrics in the evaluations instead","deprecated":true},"conversation_ended_by":{"anyOf":[{"$ref":"#/components/schemas/ParticipantRole"},{"type":"null"}],"description":"Which participant role ended the conversation: 'USER' or 'AGENT'"}},"type":"object","required":["id","agent_id","recording_url","start_time_utc","participants","status"],"title":"CallLog"},"CallRequestUsingAgentId":{"properties":{"agent_id":{"type":"string","title":"Agent Id","description":"ID of the agent associated with the call"},"recording_url":{"anyOf":[{"type":"string","maxLength":5000,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Recording Url","description":"URL to the recording file (supported formats: .mp3, .mp4, .wav, .m4a)"},"recording_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recording Base64","description":"Base64 encoded recording file in data URL format (supported formats: .mp3, .mp4, .wav, .m4a)"},"start_time_utc":{"type":"string","format":"date-time","title":"Start Time Utc","description":"When the call started, in UTC ([python] log: datetime.now(timezone.utc) at call start)"},"participants":{"items":{"$ref":"#/components/schemas/Participant"},"type":"array","maxItems":2,"minItems":2,"title":"Participants","description":"List of call participants"},"call_direction":{"anyOf":[{"$ref":"#/components/schemas/CallDirection"},{"type":"null"}],"description":"Direction of the call from the Agent's perspective (INBOUND or OUTBOUND)","default":"INBOUND"},"interface":{"anyOf":[{"$ref":"#/components/schemas/CallInterface"},{"type":"null"}],"description":"Interface used for the call","default":"PHONE"},"transcript_url":{"anyOf":[{"type":"string","maxLength":5000,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Transcript Url","description":"URL to the transcript file (supported formats: .json)"},"transcript":{"anyOf":[{"items":{"$ref":"#/components/schemas/TranscriptEntryRequest"},"type":"array"},{"type":"null"}],"title":"Transcript","description":"Transcript of the call in text format"},"tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolCallData"},"type":"array"},{"type":"null"}],"title":"Tool Calls","description":"List of tool calls made during the call"},"events":{"anyOf":[{"items":{"$ref":"#/components/schemas/Event"},"type":"array"},{"type":"null"}],"title":"Events","description":"List of events that occurred during the call"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"List of tags associated with the call"},"trace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trace Id","description":"Trace ID of the call"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"When this request was created (defaults to now in UTC)"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional metadata associated with the evaluation"},"webhook_tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Tag","description":"Tag of the webhook to send the evaluation to"},"custom_metrics":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Custom Metrics","description":"List of additional custom metrics to be used in the call"},"custom_metric_tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Custom Metric Tags","description":"Specify one or more tags to include all custom metrics associated with those tags. This allows you to run groups of related custom metrics without listing each individually."},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label","description":"Label of the agent to use for the evaluation (determines which prompt and knowledge base to use and defaults to the `production` label if not provided)"},"enable_phrase_latencies":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Phrase Latencies","description":"Whether to enable phrase-level latency tracking for this call"},"conversation_ended_by":{"anyOf":[{"$ref":"#/components/schemas/ParticipantRole"},{"type":"null"}],"description":"Which participant role ended the conversation: 'USER' or 'AGENT'"},"multichannel":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Multichannel","description":"Whether the participants of the call are on different audio channels","default":false}},"type":"object","required":["agent_id","start_time_utc","participants"],"title":"Call Request Using Bluejay Agent ID"},"CallRequestUsingExternalAgentId":{"properties":{"external_agent_id":{"type":"string","title":"External Agent Id","description":"The external ID of your agent to associate with the call"},"recording_url":{"anyOf":[{"type":"string","maxLength":5000,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Recording Url","description":"URL to the recording file (supported formats: .mp3, .mp4, .wav, .m4a)"},"recording_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recording Base64","description":"Base64 encoded recording file in data URL format (supported formats: .mp3, .mp4, .wav, .m4a)"},"start_time_utc":{"type":"string","format":"date-time","title":"Start Time Utc","description":"When the call started, in UTC ([python] log: datetime.now(timezone.utc) at call start)"},"participants":{"items":{"$ref":"#/components/schemas/Participant"},"type":"array","maxItems":2,"minItems":2,"title":"Participants","description":"List of call participants"},"call_direction":{"anyOf":[{"$ref":"#/components/schemas/CallDirection"},{"type":"null"}],"description":"Direction of the call from the Agent's perspective (INBOUND or OUTBOUND)","default":"INBOUND"},"interface":{"anyOf":[{"$ref":"#/components/schemas/CallInterface"},{"type":"null"}],"description":"Interface used for the call","default":"PHONE"},"transcript_url":{"anyOf":[{"type":"string","maxLength":5000,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Transcript Url","description":"URL to the transcript file (supported formats: .json)"},"transcript":{"anyOf":[{"items":{"$ref":"#/components/schemas/TranscriptEntryRequest"},"type":"array"},{"type":"null"}],"title":"Transcript","description":"Transcript of the call in text format"},"tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolCallData"},"type":"array"},{"type":"null"}],"title":"Tool Calls","description":"List of tool calls made during the call"},"events":{"anyOf":[{"items":{"$ref":"#/components/schemas/Event"},"type":"array"},{"type":"null"}],"title":"Events","description":"List of events that occurred during the call"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"List of tags associated with the call"},"trace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trace Id","description":"Trace ID of the call"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"When this request was created (defaults to now in UTC)"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional metadata associated with the evaluation"},"webhook_tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Tag","description":"Tag of the webhook to send the evaluation to"},"custom_metrics":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Custom Metrics","description":"List of additional custom metrics to be used in the call"},"custom_metric_tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Custom Metric Tags","description":"Specify one or more tags to include all custom metrics associated with those tags. This allows you to run groups of related custom metrics without listing each individually."},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label","description":"Label of the agent to use for the evaluation (determines which prompt and knowledge base to use)","default":"production"},"enable_phrase_latencies":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Phrase Latencies","description":"Whether to enable phrase-level latency tracking for this call"},"conversation_ended_by":{"anyOf":[{"$ref":"#/components/schemas/ParticipantRole"},{"type":"null"}],"description":"Which participant role ended the conversation: 'USER' or 'AGENT'"},"multichannel":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Multichannel","description":"Whether the participants of the call are on different audio channels","default":false}},"type":"object","required":["external_agent_id","start_time_utc","participants"],"title":"Call Request Using External Agent ID"},"CallStatus":{"type":"string","enum":["INITIALIZING","QUEUED","EVALUATING","COMPLETED","INCOMPLETED"],"title":"CallStatus","description":"Enum representing the possible states of a call."},"CancelResponse":{"properties":{"success":{"type":"boolean","title":"Success","description":"Whether the cancel request was accepted"},"message":{"type":"string","title":"Message","description":"Response message for the frontend"}},"type":"object","required":["success","message"],"title":"CancelResponse"},"CancelSimulationRunResponse":{"properties":{"success":{"type":"boolean","title":"Success","description":"True if the sim run was marked CANCELLED"},"simulation_run_id":{"type":"integer","title":"Simulation Run Id","description":"The sim run that was acted upon"},"cancelled_test_result_ids":{"items":{"type":"integer"},"type":"array","title":"Cancelled Test Result Ids","description":"Pre-running test_results that were cascaded to CANCELLED"},"left_running_test_result_ids":{"items":{"type":"integer"},"type":"array","title":"Left Running Test Result Ids","description":"Children in RUNNING / CONVERSATION_ENDED / EVALUATING — left alone so they reach their own natural terminal status instead of being force-cancelled mid-call"},"message":{"type":"string","title":"Message","description":"Human-readable summary"}},"type":"object","required":["success","simulation_run_id","message"],"title":"CancelSimulationRunResponse","description":"Response for the cancel-simulation-run endpoint."},"CommunitiesListResponse":{"properties":{"communities":{"items":{"$ref":"#/components/schemas/CommunityResponse"},"type":"array","title":"Communities","description":"List of communities"},"total_count":{"type":"integer","title":"Total Count","description":"Total number of communities"}},"type":"object","required":["communities","total_count"],"title":"CommunitiesListResponse","description":"Response model for listing communities"},"CommunityResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier for the community"},"title":{"type":"string","title":"Title","description":"Title of the community"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of the community"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When this community was created"},"digital_human_ids":{"items":{"type":"integer"},"type":"array","title":"Digital Human Ids","description":"List of digital human (test case) IDs associated with this community"}},"type":"object","required":["id","title","created_at"],"title":"CommunityResponse","description":"Response model for community operations"},"ComparisonRequest":{"properties":{"experiment_run_ids":{"items":{"type":"integer"},"type":"array","title":"Experiment Run Ids","description":"List of experiment run IDs to compare"}},"type":"object","required":["experiment_run_ids"],"title":"ComparisonRequest","description":"Pydantic model for experiment run comparison request"},"ComparisonResponse":{"properties":{"summary":{"type":"string","title":"Summary","description":"AI-generated comparison summary of the experiment runs"},"status":{"type":"string","title":"Status","description":"Status of the response","default":"200"}},"type":"object","required":["summary"],"title":"ComparisonResponse","description":"Pydantic model for experiment run comparison response"},"ConnectionType":{"type":"string","enum":["SMS","HTTP_WEBHOOK","PHONE","SIP","WEBSOCKET","LIVEKIT","PIPECAT","ELEVEN_LABS","RETELL","VAPI","KORE","SIERRA_VOICE","AMELIA_CHAT","AMELIA_VOICE","GOOGLE_CES_CHAT","GOOGLE_CES_VOICE","GOOGLE_DFCX_VOICE","GOOGLE_DFCX_CHAT","BLAND_PHONE","BLAND_VOICE","BLAND_CHAT"],"title":"ConnectionType","description":"Enum representing the connection type of the agent"},"ContextualInterruptionConfig":{"properties":{"type":{"type":"string","const":"contextual","title":"Type","description":"Type discriminator for contextual interruption"},"contextual_prompt":{"type":"string","title":"Contextual Prompt","description":"Contextual prompt for LLM-based interruptions"}},"type":"object","required":["type","contextual_prompt"],"title":"Contextual","description":"Contextual/LLM-based interruption configuration."},"ConversationDetailResponse":{"properties":{"conversation":{"$ref":"#/components/schemas/ObsConversation"},"transcript":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Transcript"},"tool_calls":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Tool Calls"},"metric_results":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Metric Results"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"}},"type":"object","required":["conversation"],"title":"ConversationDetailResponse"},"ConversationItem":{"properties":{"call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Call Id","description":"Call ID (UUID as string)"},"test_result_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Test Result Id","description":"Test result ID"}},"type":"object","title":"ConversationItem","description":"Model for a conversation in create lab request"},"ConversationRequest":{"properties":{"type":{"type":"string","enum":["obs_conversation","sim_conversation"],"title":"Type","description":"Type of conversation: 'obs_conversation' or 'sim_conversation'"},"id":{"type":"string","title":"Id","description":"ID of the conversation (obs_conversation_id UUID or sim_conversation_id integer as string)"}},"type":"object","required":["type","id"],"title":"ConversationRequest","description":"Pydantic model for conversation in evaluate-conversation request"},"ConversationStatus":{"type":"string","enum":["INITIALIZING","QUEUED","READY","DISPATCHED","RUNNING","CONVERSATION_ENDED","EVALUATING","COMPLETED","NO_CONNECTION","NO_ANSWER","CALL_DROPPED","OUT_OF_FUNDS","SYSTEM_ERROR","CUSTOM_ERROR","CANCELLED","INCOMPLETED","REJECTED","INSUFFICIENT_FUNDS"],"title":"ConversationStatus","description":"Enum representing the possible states of a conversation."},"ConversationToolCalls":{"properties":{"tool_name":{"type":"string","title":"Tool Name","default":""},"start_offset_ms":{"type":"integer","title":"Start Offset Ms","default":0},"tool_input":{"additionalProperties":true,"type":"object","title":"Tool Input"},"tool_output":{"type":"string","title":"Tool Output","default":""}},"type":"object","title":"ConversationToolCalls","description":"Tool call shape for Kafka / ClickHouse conversation-style sinks."},"ConversationsResponse":{"properties":{"total":{"type":"integer","title":"Total","description":"Everything matching the filters, not just this page"},"group_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group By"},"data":{"items":{"$ref":"#/components/schemas/ObsConversation"},"type":"array","title":"Data"},"breakdown":{"items":{"$ref":"#/components/schemas/Bucket"},"type":"array","title":"Breakdown"},"groups_truncated":{"type":"boolean","title":"Groups Truncated","description":"True when more groups matched than were returned","default":false},"metric_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metric Name"},"metric_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metric Type"},"not_applicable":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Not Applicable"},"average":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average","description":"Numeric metrics only"},"page":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Page"},"page_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Page Size"},"unreadable_skipped":{"type":"integer","title":"Unreadable Skipped","description":"Rows on this page too incomplete to read, dropped rather than failing it","default":0}},"type":"object","required":["total"],"title":"ConversationsResponse"},"CreateAlertRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name of the alert"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of the alert"},"is_enabled":{"type":"boolean","title":"Is Enabled","description":"Whether the alert is enabled","default":true},"entity_type":{"$ref":"#/components/schemas/EntityType","description":"Type of entity being monitored"},"entity_field":{"type":"string","title":"Entity Field","description":"The specific field/metric being monitored"},"operator":{"$ref":"#/components/schemas/Operator","description":"Comparison operator"},"comparison_value":{"type":"string","title":"Comparison Value","description":"Value to compare against"},"notification_channels":{"items":{"$ref":"#/components/schemas/NotificationChannelRequest"},"type":"array","title":"Notification Channels","description":"Notification channels configuration"},"applies_to_all_agents":{"type":"boolean","title":"Applies To All Agents","description":"Whether the alert applies to all agents","default":true},"agent_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Agent Ids","description":"Agent IDs to associate with this alert (only used when applies_to_all_agents=False)"},"simulation_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Simulation Id","description":"Optional experiments.id (simulation) to scope simulation alerts to. NULL means agent-scoped across all simulations."},"evaluation_scope":{"anyOf":[{"type":"string","enum":["per_test_result","per_simulation_run","per_simulation_run_window"]},{"type":"null"}],"title":"Evaluation Scope","description":"How this alert is evaluated. Only 'per_simulation_run' is supported."},"aggregation":{"anyOf":[{"type":"string","enum":["none","avg","max","min","count"]},{"type":"null"}],"title":"Aggregation","description":"Aggregation mode used to compute the per-run metric value from test results within the run."},"threshold_time_interval":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Threshold Time Interval","description":"For observability source_scope: time window in seconds (default 600 if omitted). For simulation source_scope: K = number of recent completed runs (default 1 if omitted)."},"min_events":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Events","description":"Minimum number of events for the alert. Only meaningful for observability/all source_scope (default 10 if omitted). Forced to NULL for simulation source_scope."},"min_events_type":{"$ref":"#/components/schemas/MinEventsType","description":"Whether min_events is an absolute count ('events') or a percentage ('percentage')","default":"events"},"source_scope":{"$ref":"#/components/schemas/SourceScope","description":"Which data source fires this alert: 'all', 'observability', or 'simulation'","default":"all"}},"type":"object","required":["name","entity_type","entity_field","operator","comparison_value"],"title":"CreateAlertRequest","description":"Request model for creating an alert"},"CreateCommunityRequest":{"properties":{"title":{"type":"string","title":"Title","description":"Title of the community"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of the community"},"digital_human_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Digital Human Ids","description":"List of digital human (test case) IDs to associate this community with"}},"type":"object","required":["title"],"title":"CreateCommunityRequest"},"CreateCronJobRequest":{"properties":{"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone the cron expression is read in. Null means UTC."},"simulation_id":{"type":"string","title":"Simulation Id","description":"The unique identifier for the associated simulation."},"schedule":{"anyOf":[{"$ref":"#/components/schemas/EveryNMinutesSchedule"},{"$ref":"#/components/schemas/EveryNHoursSchedule"},{"$ref":"#/components/schemas/DailySchedule"},{"$ref":"#/components/schemas/WeeklySchedule"},{"$ref":"#/components/schemas/MonthlySchedule"},{"$ref":"#/components/schemas/CronSchedule"}],"title":"Schedule","description":"The schedule for the cron job."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Whether the cron job should be enabled upon creation.","default":true}},"type":"object","required":["simulation_id","schedule"],"title":"CreateCronJobRequest"},"CreateCronJobResponse":{"properties":{"id":{"type":"string","title":"Id","description":"The unique identifier for the created cron job."},"simulation_id":{"type":"string","title":"Simulation Id","description":"The unique identifier for the associated simulation."},"cron_expression":{"type":"string","title":"Cron Expression","description":"The cron expression defining the job schedule."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Whether the cron job is enabled."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone the cron expression is read in. Null means UTC."}},"type":"object","required":["id","simulation_id","cron_expression"],"title":"CreateCronJobResponse"},"CreateCustomBackgroundNoiseRequest":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"storage_path":{"type":"string","minLength":1,"title":"Storage Path"}},"type":"object","required":["name","storage_path"],"title":"CreateCustomBackgroundNoiseRequest"},"CreateCustomerPersonaRequest":{"properties":{"agent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Id","description":"ID of the agent this persona belongs to"},"name":{"type":"string","title":"Name","description":"Name of the customer persona"},"description":{"type":"string","title":"Description","description":"Description of the customer persona"},"goal":{"type":"string","title":"Goal","description":"Goal of the customer persona"}},"type":"object","required":["name","description","goal"],"title":"CreateCustomerPersonaRequest"},"CreateCustomerTraitRequest":{"properties":{"agent_id":{"type":"integer","title":"Agent Id","description":"ID of the agent this trait belongs to"},"name":{"type":"string","title":"Name","description":"Name of the trait"},"data_type":{"$ref":"#/components/schemas/TraitDataType","description":"Data type of the trait"},"default_value":{"anyOf":[{},{"type":"null"}],"title":"Default Value","description":"Default value for this trait (will be converted based on data_type)"}},"type":"object","required":["agent_id","name","data_type"],"title":"CreateCustomerTraitRequest","description":"Request model for creating a customer trait definition."},"CreateDashboardBody":{"properties":{"name":{"type":"string","minLength":1,"title":"Name","description":"Dashboard name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"data_type":{"type":"string","enum":["observability","simulation"],"title":"Data Type","description":"Which data the dashboard visualizes","default":"observability"}},"type":"object","required":["name"],"title":"CreateDashboardBody"},"CreateDigitalHumanRequest":{"properties":{"simulation_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Simulation Ids","description":"List of simulation IDs to associate with this digital human"},"simulation_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Simulation Id","description":"ID of the associated simulation. Use simulation_ids instead.","deprecated":true},"digital_human":{"$ref":"#/components/schemas/DigitalHumanRequestData","description":"The digital human data"}},"type":"object","required":["digital_human"],"title":"CreateDigitalHumanRequest","description":"Request model for creating a digital human."},"CreateKeyIn":{"properties":{"scope":{"type":"string","title":"Scope"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"workspace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Id"}},"type":"object","required":["scope"],"title":"CreateKeyIn"},"CreateKnowledgeBaseRequest":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["name"],"title":"CreateKnowledgeBaseRequest"},"CreateLabRequest":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name","description":"Name of the lab"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of the lab"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Tags for the lab"},"conversations":{"items":{"$ref":"#/components/schemas/ConversationItem"},"type":"array","title":"Conversations","description":"List of conversations to associate with the lab"},"metric_ids":{"items":{"type":"string"},"type":"array","title":"Metric Ids","description":"List of custom metric IDs (UUIDs as strings) to associate with the lab"}},"type":"object","required":["name","conversations","metric_ids"],"title":"CreateLabRequest","description":"Request model for creating a lab"},"CreateLabelBody":{"properties":{"label_text":{"type":"string","title":"Label Text","description":"text for the label"}},"type":"object","required":["label_text"],"title":"CreateLabelBody"},"CreateMetricRequest":{"properties":{"bluejay_as_code_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Bluejay As Code Id","description":"Stable code-addressable identifier"},"agent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Id","description":"ID of the agent this metric belongs to (deprecated, use agent_ids instead)","deprecated":true},"agent_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Agent Ids","description":"List of agent IDs to associate this metric with"},"name":{"type":"string","title":"Name","description":"Name of the custom metric"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","description":"LLM-judge system prompt (required for llm_judge; null for other types)"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary","description":"Short plain-English description of the metric (LLM-generated)"},"metric_type":{"type":"string","title":"Metric Type","description":"Specific metric kind (llm_judge, tool_call, audio_*, vocal_fry); legacy alias: type","default":"llm_judge"},"settings":{"additionalProperties":true,"type":"object","title":"Settings","description":"Type-specific config (e.g. tool_call: {tool_names: [...]})"},"eval_segment":{"type":"string","enum":["agent","user","all"],"title":"Eval Segment","description":"Which side of the conversation is evaluated","default":"all"},"scope":{"type":"string","enum":["observability","simulations","all"],"title":"Scope","description":"Which pipeline runs this metric","default":"all"},"response_type":{"$ref":"#/components/schemas/src__models__metric__ResponseType","description":"Type of response expected"},"min_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Value","description":"Minimum value for quantitative metrics"},"max_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Value","description":"Maximum value for quantitative metrics"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","description":"Category for organizing metrics"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Tags for categorizing the metric"},"scoring_guidance":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scoring Guidance","description":"Guidance on how to score this metric"},"eval_modality":{"anyOf":[{"$ref":"#/components/schemas/EvalRoute"},{"type":"null"}],"description":"Evaluation modality AUTO/TEXT/AUDIO; legacy alias: eval_route","default":"AUTO"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model to use for text evaluation of the metric"},"audio_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Model","description":"Model to use for audio evaluation of the metric"},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature for evaluating the metric"},"enum_options":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enum Options","description":"Options for enum metrics"},"tool_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tool Names","description":"Expected tool names for tool_call metrics"},"json_schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Json Schema","description":"JSON Schema describing the object the judge must return (required for json metrics)"},"allow_not_applicable":{"type":"boolean","title":"Allow Not Applicable","description":"Whether this metric allows 'not applicable' responses.","default":false},"template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Id","description":"Library template this metric was created from"}},"type":"object","required":["name","response_type"],"title":"CreateMetricRequest","description":"Request model for creating a custom metric"},"CreateMetricRevisionRequest":{"properties":{"custom_metric_id":{"type":"string","title":"Custom Metric Id","description":"Custom metric ID (UUID as string)"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of the metric revision"},"scoring_guidance":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scoring Guidance","description":"Scoring guidance for the metric revision"},"eval_route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eval Route","description":"Evaluation route (e.g., 'AUDIO', 'TEXT', 'AUTO')"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model to use for evaluation"},"audio_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Model","description":"Audio model to use for evaluation"},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature for evaluation (0-2)"},"allow_not_applicable":{"type":"boolean","title":"Allow Not Applicable","description":"Whether to allow 'not applicable' responses","default":false}},"type":"object","required":["custom_metric_id"],"title":"CreateMetricRevisionRequest","description":"Request model for creating a metric revision"},"CreateMetricsBulkRequest":{"properties":{"metrics":{"items":{"$ref":"#/components/schemas/CreateMetricRequest"},"type":"array","title":"Metrics","description":"List of custom metrics to create"}},"type":"object","required":["metrics"],"title":"CreateMetricsBulkRequest","description":"Request model for creating multiple custom metrics"},"CreateMetricsBulkResponse":{"properties":{"metrics":{"items":{"$ref":"#/components/schemas/MetricResponse"},"type":"array","title":"Metrics","description":"List of created custom metrics"}},"type":"object","required":["metrics"],"title":"CreateMetricsBulkResponse","description":"Response model for bulk creating custom metrics"},"CreateOrUpdateHumanEvaluationRequest":{"properties":{"custom_metric_id":{"type":"string","title":"Custom Metric Id","description":"Custom metric ID (UUID as string)"},"call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Call Id","description":"Call ID (UUID as string)"},"test_result_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Test Result Id","description":"Test result ID"},"human_response_value":{"type":"string","title":"Human Response Value","description":"Human evaluation response value"},"human_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Human Reasoning","description":"Human evaluator's reasoning for the score"}},"type":"object","required":["custom_metric_id","human_response_value"],"title":"CreateOrUpdateHumanEvaluationRequest","description":"Request model for creating or updating a human evaluation"},"CreatePromptVersionBody":{"properties":{"prompt_text":{"type":"string","title":"Prompt Text"},"commit_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Commit Message"},"labels":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Labels"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["prompt_text"],"title":"CreatePromptVersionBody","description":"body for agent-scoped create version endpoint (agent_id in path)."},"CreateUploadUrlRequest":{"properties":{"filename":{"type":"string","maxLength":255,"minLength":1,"title":"Filename"}},"type":"object","required":["filename"],"title":"CreateUploadUrlRequest"},"CreateUptimeMonitorRequest":{"properties":{"agent_id":{"type":"integer","title":"Agent Id"},"frequency":{"type":"string","title":"Frequency","default":"5m"},"active_window":{"anyOf":[{"$ref":"#/components/schemas/ActiveWindow"},{"type":"null"}],"description":"Days/hours the monitor may run, e.g. {\"days\": [\"monday\"], \"start_time\": \"09:00\", \"end_time\": \"17:00\", \"timezone\": \"America/Los_Angeles\"}. Null runs it around the clock."},"checks":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Checks"},"notifications":{"additionalProperties":true,"type":"object","title":"Notifications"},"enabled":{"type":"boolean","title":"Enabled","default":true},"start_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start At","description":"ISO 8601 first-check time; defaults to now()."}},"type":"object","required":["agent_id"],"title":"CreateUptimeMonitorRequest"},"CreateUsageAlertRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Human-readable alert name"},"alert_type":{"$ref":"#/components/schemas/UsageAlertType","description":"Metronome alert type, passed through as-is"},"threshold":{"type":"number","title":"Threshold","description":"Threshold in the type's native unit (% , $, or 0 for into-overage)"},"notification_channels":{"items":{"$ref":"#/components/schemas/NotificationChannel"},"type":"array","title":"Notification Channels"}},"type":"object","required":["name","alert_type","threshold"],"title":"CreateUsageAlertRequest"},"CreateVapiSquadRequest":{"properties":{"name":{"type":"string","title":"Name"},"member_agent_ids":{"items":{"type":"integer"},"type":"array","title":"Member Agent Ids"},"folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id"}},"type":"object","required":["name","member_agent_ids"],"title":"CreateVapiSquadRequest"},"CreateWidgetBody":{"properties":{"name":{"type":"string","minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"chart_type":{"type":"string","enum":["line","bar","pie","table","kpi","pivot_table","histogram"],"title":"Chart Type"},"chart_mode":{"anyOf":[{"type":"string","enum":["time_series","categorical"]},{"type":"null"}],"title":"Chart Mode"},"data_type":{"type":"string","enum":["observability","simulation"],"title":"Data Type","default":"observability"},"bar_mode":{"anyOf":[{"type":"string","enum":["stacked","side_by_side"]},{"type":"null"}],"title":"Bar Mode"},"aggregation":{"items":{"type":"string","enum":["count","average","sum","percent_of_total","p50","p90","p95","p99","percentiles","breakdown","distribution"]},"type":"array","title":"Aggregation"},"time_bucket":{"anyOf":[{"type":"string","enum":["hour","day","week","month"]},{"type":"null"}],"title":"Time Bucket"},"group_by":{"anyOf":[{"type":"string","enum":["agent","labels","tool_call","age","gender","simulation"]},{"type":"string","pattern":"^metadata:[A-Za-z0-9_-]+(\\.[A-Za-z0-9_-]+)*$"},{"type":"null"}],"title":"Group By"},"simulation_ids":{"items":{"type":"integer"},"type":"array","title":"Simulation Ids","description":"Required (non-empty) when group_by='simulation'"},"show_indeterminate":{"type":"boolean","title":"Show Indeterminate","default":false},"filters":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Filters"},"column_visibility":{"anyOf":[{"additionalProperties":{"type":"boolean"},"type":"object"},{"type":"null"}],"title":"Column Visibility"},"color_overrides":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Color Overrides","description":"Per-series/per-slice colours as {\"<label the chart draws>\": \"#rrggbb\"}. Labels are matched case-insensitively; omitted labels keep the default palette."},"center_label":{"anyOf":[{"$ref":"#/components/schemas/WidgetCenterLabelModel"},{"type":"null"}],"description":"Pie only: what the donut hole says"},"show_legend":{"type":"boolean","title":"Show Legend","description":"Draw the colour key under the chart (pie, bar and line)","default":true},"metrics":{"items":{"$ref":"#/components/schemas/WidgetMetricInput"},"type":"array","title":"Metrics","description":"Metrics to plot; required unless chart_type='table'"},"dashboard_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dashboard Id","description":"If provided, the widget is also linked to this dashboard"}},"type":"object","required":["name","chart_type"],"title":"CreateWidgetBody","description":"Create a widget. Non-table charts require at least one metric.\n\nfilters apply to any widget type; column_visibility is stored for table + observability only."},"CreateWorkflowV2Request":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name","description":"Name of the workflow"},"agent_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Agent Ids","description":"Owning agents (must belong to your organization). Omit or null for org-only workflow."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Human-readable description of the workflow"},"definition":{"additionalProperties":true,"type":"object","title":"Definition","description":"React Flow graph. Omitted `nodes` / `edges` default to []. Each node must have a non-empty string `id` on the node object (not only inside `data`). Each edge must have a non-empty string `id`, unique across all edges. With no `single` or `options` nodes, the graph is stored as a draft (only multiple-start is rejected). Once there is content, export rules apply (paths, branch_options, etc.)."}},"type":"object","required":["name","definition"],"title":"CreateWorkflowV2Request","description":"Create a workflow; ``definition`` is a React Flow graph (``nodes``, ``edges``, optional ``viewport``).","examples":[{"agent_ids":[],"definition":{"edges":[{"id":"e-wf-start-n-greet","source":"wf-start","target":"n-greet"}],"nodes":[{"data":{"id":"wf-start"},"deletable":false,"draggable":true,"id":"wf-start","position":{"x":100,"y":50},"type":"start"},{"data":{"criteria":"Greet the caller and offer help","id":"n-greet","speaker":"agent","turn":0,"type":"message"},"id":"n-greet","position":{"x":200,"y":180},"type":"single"}]},"description":"Password reset IVR","name":"Support reset flow"}]},"CreateWorkspaceRequest":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"usage_limit_credits":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Usage Limit Credits"}},"type":"object","required":["name"],"title":"CreateWorkspaceRequest"},"CronSchedule":{"properties":{"frequency":{"type":"string","const":"cron","title":"Frequency"},"expression":{"type":"string","title":"Expression","description":"Cron expression"}},"type":"object","required":["frequency","expression"],"title":"CronSchedule"},"CustomBackgroundNoise":{"properties":{"id":{"type":"string","title":"Id"},"organization_id":{"type":"string","title":"Organization Id"},"name":{"type":"string","title":"Name"},"storage_path":{"type":"string","title":"Storage Path"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"usage_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Usage Count"}},"type":"object","required":["id","organization_id","name","storage_path"],"title":"CustomBackgroundNoise"},"CustomMetric":{"properties":{"name":{"type":"string","title":"Name","description":"The name of the custom metric"},"description":{"type":"string","title":"Description","description":"The description of the custom metric"},"response_type":{"type":"string","title":"Response Type","description":"The response type of the custom metric"},"response_value":{"type":"string","title":"Response Value","description":"The response value of the custom metric"},"reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reasoning","description":"The reasoning of the custom metric"},"min_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Value","description":"The minimum value of the custom metric"},"max_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Value","description":"The maximum value of the custom metric"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","description":"The category of the custom metric"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"The tags of the custom metric"},"scoring_guidance":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scoring Guidance","description":"The scoring guidance of the custom metric"},"enum_options":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enum Options","description":"The enum options of the custom metric"},"human_edited":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Human Edited","description":"Whether this metric result was manually overridden by a human"},"human_response_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Human Response Value","description":"Human-overridden response_value; null when no override applied"},"human_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Human Reasoning","description":"Human-overridden reasoning; null when no override applied"},"override_reason_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Override Reason Code","description":"Structured reason for the latest human override. One of: ai_hallucination, overly_strict_success_criteria, overly_strict_system_prompt, other."},"override_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Override Notes","description":"Freeform notes from the human reviewer accompanying the latest override"},"last_edited_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Edited By","description":"User id of the most recent human reviewer"},"last_edited_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Edited At","description":"Timestamp of the most recent human override"}},"type":"object","required":["name","description","response_type","response_value"],"title":"Custom Metric"},"CustomerPersonaPydantic":{"properties":{"id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Id"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"goal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Goal"},"org_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Org Id"}},"type":"object","title":"CustomerPersonaPydantic","description":"Pydantic version of CustomerPersona for validation and serialization."},"CustomerPersonaRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name of the customer persona"},"description":{"type":"string","title":"Description","description":"Description of the customer persona"},"goal":{"type":"string","title":"Goal","description":"Goal or objective of the customer persona"},"num_calls":{"type":"integer","title":"Num Calls","description":"Number of calls that matched the customer persona"}},"type":"object","required":["name","description","goal","num_calls"],"title":"CustomerPersonaRequest","description":"Customer persona row for batch digital human generation."},"CustomerTraitResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier for the customer trait"},"agent_id":{"type":"integer","title":"Agent Id","description":"ID of the agent this trait belongs to"},"name":{"type":"string","title":"Name","description":"Name of the trait"},"data_type":{"$ref":"#/components/schemas/TraitDataType","description":"Data type of the trait"},"default_value":{"anyOf":[{},{"type":"null"}],"title":"Default Value","description":"Default value for this trait (stored as JSONB)"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the trait was created"}},"type":"object","required":["id","agent_id","name","data_type","created_at"],"title":"CustomerTraitResponse","description":"Response model for customer trait operations."},"CustomerTraitsListResponse":{"properties":{"traits":{"items":{"$ref":"#/components/schemas/CustomerTraitResponse"},"type":"array","title":"Traits","description":"List of customer traits"},"total_count":{"type":"integer","title":"Total Count","description":"Total number of traits"}},"type":"object","required":["traits","total_count"],"title":"CustomerTraitsListResponse","description":"Response model for listing customer traits."},"DailySchedule":{"properties":{"time":{"type":"string","pattern":"^\\d{2}:\\d{2}$","title":"Time","description":"HH:MM 24hr time"},"frequency":{"type":"string","const":"daily","title":"Frequency"},"window":{"anyOf":[{"$ref":"#/components/schemas/ScheduleWindow"},{"type":"null"}]}},"type":"object","required":["time","frequency"],"title":"DailySchedule"},"DashboardModel":{"properties":{"id":{"type":"string","title":"Id"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_curated":{"type":"boolean","title":"Is Curated","default":false},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"data_type":{"type":"string","title":"Data Type"},"agent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Id"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"Link to this dashboard in the Bluejay app"}},"type":"object","required":["id","name","data_type"],"title":"DashboardModel"},"DashboardWithWidgetsModel":{"properties":{"id":{"type":"string","title":"Id"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_curated":{"type":"boolean","title":"Is Curated","default":false},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"data_type":{"type":"string","title":"Data Type"},"agent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Id"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"Link to this dashboard in the Bluejay app"},"widgets":{"items":{"$ref":"#/components/schemas/WidgetModel"},"type":"array","title":"Widgets","default":[]}},"type":"object","required":["id","name","data_type"],"title":"DashboardWithWidgetsModel"},"DeleteAlertResponse":{"properties":{"message":{"type":"string","title":"Message","description":"Success message"},"deleted_alert_id":{"type":"string","title":"Deleted Alert Id","description":"ID of the deleted alert"}},"type":"object","required":["message","deleted_alert_id"],"title":"DeleteAlertResponse","description":"Response model for deleting an alert"},"DeleteCallLogResponse":{"properties":{"message":{"type":"string","title":"Message","description":"Success message"},"status":{"type":"string","title":"Status","description":"Status of the response","default":"200"}},"type":"object","required":["message"],"title":"DeleteCallLogResponse"},"DeleteCronJobResponse":{"properties":{"status":{"type":"string","enum":["success","error"],"title":"Status","description":"The status of the delete operation."},"message":{"type":"string","title":"Message","description":"A message providing additional details about the operation."}},"type":"object","required":["status","message"],"title":"DeleteCronJobResponse"},"DeleteCustomerTraitResponse":{"properties":{"message":{"type":"string","title":"Message","description":"Success message"},"deleted_trait_id":{"type":"string","title":"Deleted Trait Id","description":"ID of the deleted trait"}},"type":"object","required":["message","deleted_trait_id"],"title":"DeleteCustomerTraitResponse","description":"Response model for deleting a customer trait."},"DeleteLabResponse":{"properties":{"message":{"type":"string","title":"Message","description":"Success message"},"deleted_lab_id":{"type":"string","title":"Deleted Lab Id","description":"ID of the deleted lab"}},"type":"object","required":["message","deleted_lab_id"],"title":"DeleteLabResponse","description":"Response model for deleting a lab"},"DeleteSimulationResponse":{"properties":{"message":{"type":"string","title":"Message","description":"Success message"},"deleted_simulation_id":{"type":"integer","title":"Deleted Simulation Id","description":"ID of the deleted simulation"}},"type":"object","required":["message","deleted_simulation_id"],"title":"DeleteSimulationResponse","description":"Response model for deleting a simulation"},"DeleteSimulationResultResponse":{"properties":{"message":{"type":"string","title":"Message","description":"Success message"},"deleted_simulation_result_id":{"type":"integer","title":"Deleted Simulation Result Id","description":"ID of the deleted simulation result"}},"type":"object","required":["message","deleted_simulation_result_id"],"title":"DeleteSimulationResultResponse","description":"Response model for the delete simulation result API (customer-facing)."},"DeleteSimulationRunResponse":{"properties":{"message":{"type":"string","title":"Message","description":"Success message"},"deleted_simulation_run_id":{"type":"integer","title":"Deleted Simulation Run Id","description":"ID of the deleted simulation run"}},"type":"object","required":["message","deleted_simulation_run_id"],"title":"DeleteSimulationRunResponse","description":"Response model for deleting a simulation run."},"DeleteTemplateResponse":{"properties":{"message":{"type":"string","title":"Message"}},"type":"object","required":["message"],"title":"DeleteTemplateResponse"},"DeleteWorkflowV2Response":{"properties":{"message":{"type":"string","title":"Message","description":"Success message"},"deleted_workflow_id":{"type":"string","title":"Deleted Workflow Id","description":"ID of the deleted workflow"}},"type":"object","required":["message","deleted_workflow_id"],"title":"DeleteWorkflowV2Response","description":"Delete confirmation."},"DigitalHumanRequest":{"properties":{"agent_id":{"type":"string","title":"Agent Id","description":"ID of the agent to be used to generate the digital humans"},"simulation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Simulation Id","description":"Optionally attach the digital humans to a simulation"},"prompt_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Prompt Id","description":"Prompt UUID associated with the simulation"},"knowledge_base_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Knowledge Base Id","description":"Knowledge base UUID associated with the simulation"},"goal_adherence":{"anyOf":[{"items":{"$ref":"#/components/schemas/GoalAdherence"},"type":"array"},{"type":"null"}],"title":"Goal Adherence","description":"List of goal adherence scenarios"},"workflow_adherence":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Workflow Adherence","description":"Dictionary of workflow IDs and their counts"},"workflow_adherence_v2":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Workflow Adherence V2","description":"Dictionary of workflow_v2 IDs and their counts (uses new graph definition format)"},"replay_transcript":{"anyOf":[{"items":{"anyOf":[{"$ref":"#/components/schemas/ReplayTranscriptFromText"},{"$ref":"#/components/schemas/ReplayTranscriptFromConversation"}]},"type":"array"},{"type":"null"}],"title":"Replay Transcript","description":"List of transcript replays to generate digital humans from"},"customer_personas":{"anyOf":[{"items":{"$ref":"#/components/schemas/CustomerPersonaRequest"},"type":"array"},{"type":"null"}],"title":"Customer Personas","description":"List of customer personas to be used in the simulation","deprecated":true},"load_testing":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Load Testing","description":"Number of load testing calls","default":0},"red_teaming":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Red Teaming","description":"Number of red teaming calls","default":0},"red_team_attacks":{"anyOf":[{"$ref":"#/components/schemas/SocialEngineeringRedTeamConfig"},{"type":"null"}],"description":"Red-team attack matrix (intent x vector x available information). When set, supersedes the legacy red_teaming int. Persisted onto test_cases: free-text intent → intent_summary, attack_vector → attack_vector column, available information → customer_trait_values rows with completeness."},"traits":{"anyOf":[{"items":{"$ref":"#/components/schemas/src__models__traits__trait__Trait"},"type":"array"},{"type":"null"}],"title":"Traits","description":"List of traits to apply to all generated digital humans"},"num_runs":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Num Runs","description":"Number of runs per digital human per simulation run (run count).","default":1}},"type":"object","required":["agent_id"],"title":"DigitalHumanRequest","description":"Pydantic model for digital humans (simulation type) request"},"DigitalHumanRequestData":{"properties":{"bluejay_as_code_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Bluejay As Code Id","description":"Stable code-addressable identifier"},"intent":{"type":"string","title":"Intent","description":"Description of the digital human. Leave empty when enriched_playback is set; the agent uses playback instead.","default":""},"success_criteria":{"type":"string","title":"Success Criteria","description":"Success criteria. Leave empty when enriched_playback is set; the agent uses playback instead.","default":""},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Name of the digital human"},"tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tag","description":"Tag for categorizing the digital human"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Full tag list (takes precedence over `tag`). For transcript replay, tags[0]='transcript_generated' and tags[1] in {'smart','strict'}."},"language":{"anyOf":[{"$ref":"#/components/schemas/LanguageType"},{"type":"null"}],"description":"Language the digital human speaks","default":"en"},"accent":{"anyOf":[{"$ref":"#/components/schemas/AccentType"},{"type":"null"}],"description":"Accent of the digital human"},"gender":{"anyOf":[{"$ref":"#/components/schemas/GenderType"},{"type":"null"}],"description":"Gender of the digital human"},"custom_voice_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Voice Id","description":"ElevenLabs voice_id of a cloned voice. When set, the agent speaks with this voice instead of the accent's stock voice (language/accent still drive prompts and STT)."},"background_noise":{"anyOf":[{"$ref":"#/components/schemas/BackgroundNoiseType"},{"type":"null"}],"description":"Type of background noise","default":"none"},"custom_background_noise_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Background Noise Url","description":"Bucket-relative path of the uploaded custom background noise audio; required when background_noise is 'custom'"},"voice_speed":{"anyOf":[{"$ref":"#/components/schemas/VoiceSpeedType"},{"type":"null"}],"description":"Speed of the digital human's voice","default":"normal"},"audio_quality":{"anyOf":[{"$ref":"#/components/schemas/AudioQualityType"},{"type":"null"}],"description":"Audio quality of the digital human's voice","default":"high"},"fluency":{"anyOf":[{"$ref":"#/components/schemas/FluencyType"},{"type":"null"}],"description":"Fluency level of the digital human's speech","default":"native"},"verbosity":{"anyOf":[{"$ref":"#/components/schemas/VerbosityType"},{"type":"null"}],"description":"Verbosity level of the digital human's responses","default":"medium"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number","description":"Phone number for the digital human"},"extension":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Extension","description":"Extension dialed as DTMF after connecting when this DH calls an inbound agent"},"outbound_text_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outbound Text Number","description":"Outbound text number"},"follow_up_sms_success_criteria":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Follow Up Sms Success Criteria","description":"Criteria the captured follow-up SMS is graded against"},"background_noise_volume":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Background Noise Volume","description":"Volume of background noise","default":0.8},"expected_tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ExpectedToolCall"},"type":"array"},{"type":"null"}],"title":"Expected Tool Calls","description":"Expected tool call outputs"},"allow_end_call_tool":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow End Call Tool","description":"Allow the digital human to end the tool call","default":true},"allow_silence_tool":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow Silence Tool","description":"Allow the digital human to use the silence tool","default":true},"allow_dtmf_tool":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow Dtmf Tool","description":"Allow the digital human to use the DTMF tool","default":true},"default_dtmf_or_voiced":{"anyOf":[{"$ref":"#/components/schemas/DtmfOrVoicedType"},{"type":"null"}],"default":"voiced"},"silence_tool_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Silence Tool Instructions","description":"Tool instructions; use \"default\" for built-in behavior or custom text","default":"default"},"endpointing_delay":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Endpointing Delay","description":"Delay for endpointing","default":1.5},"creativity":{"anyOf":[{"type":"number","maximum":2.0,"minimum":0.0},{"type":"null"}],"title":"Creativity","description":"How creative the digital human is (Model temperature)","default":0.7},"hangup_phrases":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Hangup Phrases","description":"Phrases that trigger hangup"},"hangup_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hangup Instructions","description":"Freeform instructions for how/when to hang up"},"silence_timeout":{"anyOf":[{"type":"integer","minimum":15.0},{"type":"null"}],"title":"Silence Timeout","description":"Silence timeout in seconds"},"role_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role Description","description":"Description of the role for the digital human"},"traits":{"anyOf":[{"items":{"$ref":"#/components/schemas/src__models__traits__trait__Trait"},"type":"array"},{"type":"null"}],"title":"Traits","description":"List of traits associated with this digital human"},"interruptions":{"anyOf":[{"$ref":"#/components/schemas/SimpleInterruptionConfig"},{"$ref":"#/components/schemas/KeywordsInterruptionConfig"},{"$ref":"#/components/schemas/ContextualInterruptionConfig"},{"type":"null"}],"title":"Interruptions","description":"Interruption configuration for the digital human"},"scripted_responses":{"anyOf":[{"items":{"$ref":"#/components/schemas/ScriptedResponse"},"type":"array"},{"type":"null"}],"title":"Scripted Responses","description":"List of scripted responses for the digital human"},"scripted_responses_ordered":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Scripted Responses Ordered","description":"When true, scripted_responses run as a script in list order: only the next unfired one is armed, each fires once, and a blank match_phrase fires on the digital human's next turn. When false (default) any scripted response fires whenever its match_phrase comes up.","default":false},"speaks_first_config":{"anyOf":[{"$ref":"#/components/schemas/SpeaksFirstConfig"},{"type":"null"}],"description":"Speaks first configuration for the digital human"},"original_transcript":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Transcript","description":"Original transcript text to replay. When provided (and formatted_transcript not provided), utterances are extracted via LLM and used as the intent."},"formatted_transcript":{"anyOf":[{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array"},{"type":"null"}],"title":"Formatted Transcript","description":"Pre-computed structured transcript as [{role, utterance}]. When provided, skips the format-transcript LLM call."},"enriched_playback":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Enriched Playback","description":"Workflow playbook v2 (JSON list). Speech steps use type \"message\" only. User: intent and/or exact_message. Agent: criteria and/or exact_match_text."},"workflow_v2_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Workflow V2 Id","description":"Source workflow_v2 UUID — set when this DH is generated from a workflow"},"workflow_path_index":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Workflow Path Index","description":"0-based path index within enumerate_workflow_v2_paths output"},"tested_path":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tested Path","description":"Ordered names of the workflow path steps this DH was generated from (Generate-From-Workflow only)."},"journey_steps":{"anyOf":[{"items":{"$ref":"#/components/schemas/JourneyStep"},"type":"array"},{"type":"null"}],"title":"Journey Steps"},"always_on_mode":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Always On Mode","description":"Whether always-on mode is enabled","default":false},"always_on_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Always On Active","description":"When true, this DH actively receives calls on phone_number. Defaults to True when phone_number is set."},"num_runs":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Num Runs","description":"Number of times this digital human is run per simulation run (run count).","default":1},"livekit_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Livekit Metadata","description":"LiveKit-specific configuration and metadata for this digital human"},"test_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Test Name","description":"User-facing label for this digital human"},"attack_vector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Attack Vector","description":"Attack tactic key from VECTOR_CATALOG. NULL for non-red-team."},"attack_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Attack Type","description":"Umbrella attack category (recon | social_engineering | prompt_injection | audio_native)."},"attack_plan":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Attack Plan","description":"Crescendo escalation ladder {objective, breach_predicate, ladder}."}},"type":"object","title":"DigitalHumanRequestData","description":"Digital human data model for requests (without id and created_at)."},"DigitalHumanResponseData":{"properties":{"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id","description":"Unique identifier for the digital human"},"bluejay_as_code_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Bluejay As Code Id","description":"Stable code-addressable identifier"},"intent":{"type":"string","title":"Intent","description":"Description of the digital human"},"success_criteria":{"type":"string","title":"Success Criteria","description":"Success criteria for the digital human"},"tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tag","description":"Tag for categorizing the digital human"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"All tags associated with the digital human"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Name of the digital human"},"language":{"anyOf":[{"$ref":"#/components/schemas/LanguageType"},{"type":"null"}],"description":"Language of the digital human"},"accent":{"anyOf":[{"$ref":"#/components/schemas/AccentType"},{"type":"null"}],"description":"Accent of the digital human"},"gender":{"anyOf":[{"$ref":"#/components/schemas/GenderType"},{"type":"null"}],"description":"Gender of the digital human"},"custom_voice_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Voice Id","description":"ElevenLabs voice_id of a cloned voice used for TTS, if assigned"},"background_noise":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Background Noise","description":"Type of background noise"},"custom_background_noise_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Background Noise Url","description":"Bucket-relative path of the uploaded custom background noise audio when background_noise is 'custom'"},"voice_speed":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Speed","description":"Speed of the digital human's voice"},"audio_quality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Quality","description":"Audio quality of the digital human's voice"},"fluency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fluency","description":"Fluency level of the digital human's speech"},"verbosity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verbosity","description":"Verbosity level of the digital human's responses"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number","description":"Phone number for the digital human"},"extension":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Extension","description":"Extension dialed as DTMF after connecting when this DH calls an inbound agent"},"outbound_text_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outbound Text Number","description":"Outbound text number"},"follow_up_sms_success_criteria":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Follow Up Sms Success Criteria","description":"Criteria the captured follow-up SMS is graded against"},"websocket_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Websocket Url","description":"WebSocket URL for real-time communication"},"background_noise_volume":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Background Noise Volume","description":"Volume of background noise"},"expected_tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ExpectedToolCall"},"type":"array"},{"type":"null"}],"title":"Expected Tool Calls","description":"Expected tool calls"},"allow_end_call_tool":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow End Call Tool","description":"Allow the digital human to end the tool call","default":true},"allow_silence_tool":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow Silence Tool","description":"Allow the digital human to use the silence tool","default":true},"allow_dtmf_tool":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow Dtmf Tool","description":"Allow the digital human to use the DTMF tool","default":true},"default_dtmf_or_voiced":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Dtmf Or Voiced","default":"voiced"},"silence_tool_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Silence Tool Instructions","description":"Tool instructions; \"default\" or custom text","default":"default"},"endpointing_delay":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Endpointing Delay","description":"Delay for endpointing"},"creativity":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Creativity","description":"Temperature setting"},"hangup_phrases":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Hangup Phrases","description":"Phrases that trigger hangup"},"hangup_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hangup Instructions","description":"Freeform instructions for how/when to hang up"},"silence_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Silence Timeout","description":"Silence timeout in seconds"},"role_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role Description","description":"Description of the role for the digital human"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"When this digital human was created"},"traits":{"anyOf":[{"items":{"$ref":"#/components/schemas/Trait-Output"},"type":"array"},{"type":"null"}],"title":"Traits","description":"List of traits associated with this digital human"},"interruptions":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Interruptions","description":"Interruption configuration for the digital human"},"scripted_responses":{"anyOf":[{"items":{"$ref":"#/components/schemas/ScriptedResponse"},"type":"array"},{"type":"null"}],"title":"Scripted Responses","description":"List of scripted responses for the digital human, in the order they were saved"},"scripted_responses_ordered":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Scripted Responses Ordered","description":"When true, scripted_responses run as a script in list order (each fires once, next one arms); when false any one fires whenever its match_phrase comes up","default":false},"speaks_first_config":{"anyOf":[{"$ref":"#/components/schemas/SpeaksFirstConfig"},{"type":"null"}],"description":"Speaks first config: speaks_first, mode (custom|ai_generated), message (when custom), dynamic (wait for the agent, open only if quiet; defaults true)"},"original_transcript":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Transcript","description":"The original transcript text attached to this digital human"},"formatted_transcript":{"anyOf":[{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array"},{"type":"null"}],"title":"Formatted Transcript","description":"Structured transcript as [{\"role\": \"USER\"|\"AGENT\", \"utterance\": \"...\"}]"},"enriched_playback":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Enriched Playback","description":"Optional enriched playback stored as JSONB: a list of turn objects"},"workflow_v2_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Workflow V2 Id","description":"Source workflow_v2 UUID — set when this DH is generated from a workflow"},"workflow_path_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Workflow Path Index","description":"0-based path index within enumerate_workflow_v2_paths output"},"tested_path":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tested Path","description":"Ordered names of the workflow path steps this DH was generated from (Generate-From-Workflow only)."},"livekit_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Livekit Metadata","description":"LiveKit-specific configuration and metadata for this digital human"},"test_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Test Name","description":"User-facing label for this digital human"},"journey_steps":{"anyOf":[{"items":{"$ref":"#/components/schemas/JourneyStep"},"type":"array"},{"type":"null"}],"title":"Journey Steps","description":"Ordered journey steps for a multi-step (Customer Journey) digital human"},"always_on_mode":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Always On Mode","description":"Whether always-on mode is enabled"},"always_on_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Always On Active","description":"When true, this DH actively receives inbound calls on phone_number","default":false},"num_runs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Runs","description":"Number of times this digital human is run per simulation run","default":1},"attack_vector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Attack Vector","description":"Attack tactic key from VECTOR_CATALOG. NULL for non-red-team."},"attack_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Attack Type","description":"Umbrella attack category. NULL for non-red-team."},"attack_plan":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Attack Plan","description":"Crescendo escalation ladder. NULL for non-red-team."}},"type":"object","required":["intent","success_criteria"],"title":"DigitalHumanResponseData","description":"Response model for digital human data."},"DigitalHumansListResponse":{"properties":{"digital_humans":{"items":{"$ref":"#/components/schemas/DigitalHumanResponseData"},"type":"array","title":"Digital Humans","description":"List of digital humans"},"total":{"type":"integer","title":"Total","description":"Total number of digital humans"},"simulation_id":{"type":"integer","title":"Simulation Id","description":"ID of the simulation"}},"type":"object","required":["digital_humans","total","simulation_id"],"title":"DigitalHumansListResponse","description":"Response model for listing digital humans by simulation."},"DigitalHumansSettings":{"properties":{"default_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Name","description":"Default name for the digital human","default":"random"},"default_caller_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Caller Number","description":"Default caller phone number for the digital human","default":"random"},"default_language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Language","description":"Default language for the digital human","default":"random"},"default_background_noise":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Background Noise","description":"Background noise to be used in the simulation","default":"none"},"first_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Message","description":"First message to be spoken by the digital human","default":"ai_generated"},"num_runs":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Num Runs","description":"Number of runs per digital human per simulation run (run count).","default":1}},"type":"object","title":"DigitalHumansSettings","description":"Pydantic model for digital humans settings in simulation"},"DocumentDetailResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"knowledge_base_id":{"type":"string","format":"uuid","title":"Knowledge Base Id"},"name":{"type":"string","title":"Name"},"type":{"$ref":"#/components/schemas/DocumentType"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code"}},"type":"object","required":["id","knowledge_base_id","name","type"],"title":"DocumentDetailResponse"},"DocumentType":{"type":"string","enum":["PDF","TEXT","URL"],"title":"DocumentType"},"DocumentUploadResult":{"properties":{"document_id":{"type":"string","format":"uuid","title":"Document Id"},"job_id":{"type":"string","format":"uuid","title":"Job Id"},"status":{"type":"string","title":"Status"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code"}},"type":"object","required":["document_id","job_id","status"],"title":"DocumentUploadResult"},"DtmfOrVoicedType":{"type":"string","enum":["voiced","dtmf"],"title":"DtmfOrVoicedType","description":"Enum for DTMF vs voiced input mode."},"DuplicateDigitalHumanRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Name for the copy; defaults to \"<source name> (Copy)\""},"simulation_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Simulation Ids","description":"Simulations to attach the copy to. Omit to copy the source's associations; pass [] for none."}},"type":"object","title":"DuplicateDigitalHumanRequest","description":"Options for duplicating a digital human."},"DuplicateWidgetBody":{"properties":{"dashboard_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dashboard Id","description":"Dashboard to link the copy to"}},"type":"object","title":"DuplicateWidgetBody"},"DuplicateWorkflowV2Request":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name","description":"Name for the copy. Omit or null for \"Copy of {original name}\"."}},"type":"object","title":"DuplicateWorkflowV2Request","description":"Duplicate an existing workflow (new row, same definition and agent links)."},"EdgeCreate":{"properties":{"source_node_id":{"type":"string","minLength":1,"title":"Source Node Id"},"target_node_id":{"type":"string","minLength":1,"title":"Target Node Id"},"condition":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Condition"}},"type":"object","required":["source_node_id","target_node_id"],"title":"EdgeCreate","description":"Universal edge-creation spec. ``condition`` is the human-readable transition trigger."},"EndConversationsRequest":{"properties":{"test_result_ids":{"items":{"type":"integer"},"type":"array","minItems":1,"title":"Test Result Ids","description":"List of test result IDs to end"}},"type":"object","required":["test_result_ids"],"title":"EndConversationsRequest","description":"Pydantic model for ending multiple conversations"},"EndConversationsResponse":{"properties":{"success":{"type":"boolean","title":"Success","description":"Whether the operation was successful"},"ended_count":{"type":"integer","title":"Ended Count","description":"Number of conversations marked for ending"},"test_result_ids":{"items":{"type":"integer"},"type":"array","title":"Test Result Ids","description":"Test result IDs that were processed"},"failed_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Failed Ids","description":"Test result IDs that failed to process (if any)"},"message":{"type":"string","title":"Message","description":"Status message"}},"type":"object","required":["success","ended_count","test_result_ids","message"],"title":"EndConversationsResponse","description":"Response for end conversations request"},"EntityType":{"type":"string","enum":["standard_metric","custom_goal","custom_metric","metadata_field","system_failure"],"title":"EntityType","description":"Enum representing the entity types for alerts."},"EntityValidationError":{"properties":{"entity_type":{"type":"string","title":"Entity Type"},"entity_id":{"title":"Entity Id"},"errors":{"items":{"type":"string"},"type":"array","title":"Errors"}},"type":"object","required":["entity_type","entity_id","errors"],"title":"EntityValidationError"},"EvalRoute":{"type":"string","enum":["AUDIO","TEXT","AUTO"],"title":"EvalRoute","description":"Enum representing the evaluation route of a call."},"EvaluateCallResponse":{"properties":{"status":{"type":"string","title":"Status"},"call_id":{"type":"string","title":"Call Id"},"message":{"type":"string","title":"Message"}},"type":"object","required":["status","call_id","message"],"title":"EvaluateCallResponse"},"EvaluateConversationRequest":{"properties":{"lab_id":{"type":"string","format":"uuid","title":"Lab Id","description":"Lab ID (UUID) for the evaluation"},"conversation":{"$ref":"#/components/schemas/ConversationRequest","description":"Conversation to evaluate"},"metrics":{"$ref":"#/components/schemas/MetricsRequest","description":"Metrics to use for evaluation"}},"type":"object","required":["lab_id","conversation","metrics"],"title":"EvaluateConversationRequest","description":"Pydantic model for evaluate-conversation request"},"EvaluateConversationResponse":{"properties":{"status":{"type":"string","title":"Status","description":"Status of the operation"},"message":{"type":"string","title":"Message","description":"Response message"},"conversation_id":{"type":"string","title":"Conversation Id","description":"ID of the conversation"},"conversation_type":{"type":"string","title":"Conversation Type","description":"Type of conversation"},"metrics":{"items":{"$ref":"#/components/schemas/MetricEvaluationItem"},"type":"array","title":"Metrics","description":"List of metrics with their evaluation IDs"}},"type":"object","required":["status","message","conversation_id","conversation_type","metrics"],"title":"EvaluateConversationResponse","description":"Pydantic model for evaluate-conversation response"},"Evaluation":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier for the evaluation result"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When this evaluation result was created (defaults to now in UTC)"},"hallucination":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Hallucination","description":"Whether the agent exhibited hallucination during the call"},"hallucination_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hallucination Reasoning","description":"Reasoning behind the hallucination, if applicable"},"redundancy":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Redundancy","description":"Whether the agent exhibited redundancy during the call"},"redundancy_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Redundancy Reasoning","description":"Reasoning behind the redundancy, if applicable"},"agent_speak_percentage":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Agent Speak Percentage","description":"Percentage of the call where the agent was speaking"},"avg_agent_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Agent Latency","description":"Average latency of the agent's responses during the call"},"latency":{"anyOf":[{"$ref":"#/components/schemas/Latency"},{"type":"null"}],"description":"Latency metrics for the agent's responses"},"filler_ignored_latency":{"anyOf":[{"$ref":"#/components/schemas/FillerIgnoredLatency"},{"type":"null"}],"description":"Filler ignored latency metrics"},"num_turns":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Turns","description":"Total number of turns taken by the agent during the call"},"call_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Call Summary","description":"Summary of the call, if applicable"},"custom_evals":{"anyOf":[{"items":{},"type":"array"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Custom Evals","description":"List of custom evaluations performed during the call"},"custom_evals_success_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Custom Evals Success Rate","description":"Success rate of the custom evaluations performed during the call"},"goal_success":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Goal Success","description":"Whether the goal was successfully achieved during the call"},"goal_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Goal Reasoning","description":"Reasoning behind the goal success, if applicable"},"pronunciation_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pronunciation Score","description":"Pronunciation score of the agent during the call"},"pronunciation_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pronunciation Reasoning","description":"Reasoning behind the pronunciation score, if applicable"},"sentiment_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sentiment Label","description":"Overall sentiment label for customer utterances"},"sentiment_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sentiment Score","description":"Overall sentiment score for customer utterances"},"sentiment_scores":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Sentiment Scores","description":"Per-label sentiment scores for customer utterances"},"custom_metrics":{"anyOf":[{"items":{"$ref":"#/components/schemas/CustomMetric"},"type":"array"},{"type":"null"}],"title":"Custom Metrics","description":"Custom metrics associated with the evaluation"},"human_edited":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Human Edited","description":"Whether any result in this evaluation was manually overridden by a human"},"human_goal_success":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Human Goal Success","description":"Human-overridden goal_success; null when no override applied"},"human_goal_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Human Goal Reasoning","description":"Human-overridden goal_reasoning; null when no override applied"},"human_hallucination":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Human Hallucination","description":"Human-overridden hallucination verdict; null when no override applied"},"human_hallucination_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Human Hallucination Reasoning","description":"Human-overridden hallucination reasoning; null when no override applied"},"human_redundancy":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Human Redundancy","description":"Human-overridden redundancy verdict; null when no override applied"},"human_redundancy_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Human Redundancy Reasoning","description":"Human-overridden redundancy reasoning; null when no override applied"},"human_pronunciation_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Human Pronunciation Score","description":"Human-overridden pronunciation score; null when no override applied"},"human_pronunciation_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Human Pronunciation Reasoning","description":"Human-overridden pronunciation reasoning; null when no override applied"},"override_goal_reason_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Override Goal Reason Code","description":"Reason for the human override of goal_success."},"override_goal_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Override Goal Notes","description":"Freeform notes from the reviewer for the goal override."},"override_hallucination_reason_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Override Hallucination Reason Code","description":"Reason for the human override of hallucination."},"override_hallucination_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Override Hallucination Notes","description":"Freeform notes from the reviewer for the hallucination override."},"override_redundancy_reason_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Override Redundancy Reason Code","description":"Reason for the human override of redundancy."},"override_redundancy_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Override Redundancy Notes","description":"Freeform notes from the reviewer for the redundancy override."},"override_pronunciation_reason_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Override Pronunciation Reason Code","description":"Reason for the human override of pronunciation_score."},"override_pronunciation_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Override Pronunciation Notes","description":"Freeform notes from the reviewer for the pronunciation override."},"last_edited_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Edited By","description":"User id of the most recent human reviewer"},"last_edited_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Edited At","description":"Timestamp of the most recent human override"},"predicted_age":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Predicted Age","description":"Estimated age of the caller in years, from their audio"},"customer_gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Gender","description":"Predicted gender of the caller: 'male', 'female', or 'indeterminate' when confidence is at or below 0.7"},"gender_confidence":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Gender Confidence","description":"Confidence 0-1 behind customer_gender; null when the prediction is 'indeterminate'"},"detected_language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detected Language","description":"Language detected on the call"},"language_confidence":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Language Confidence","description":"Confidence 0-1 behind detected_language"},"agent_audio_clarity":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Agent Audio Clarity","description":"Agent audio: audio clarity score 0-100 (higher better)"},"user_audio_clarity":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"User Audio Clarity","description":"User audio: audio clarity score 0-100 (higher better)"}},"type":"object","required":["agent_speak_percentage","avg_agent_latency"],"title":"Evaluation","description":"Pydantic model for evaluation result"},"EvaluationDiffItem":{"properties":{"call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Call Id","description":"Call ID for call conversations."},"test_result_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Test Result Id","description":"Test result ID for test_result conversations."},"human_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Human Value","description":"Human evaluator's response (e.g. Pass/Fail, score)."},"ai_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ai Value","description":"AI evaluator's response."},"human_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Human Reasoning","description":"Human evaluator's reasoning."},"ai_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ai Reasoning","description":"AI evaluator's reasoning."}},"type":"object","title":"EvaluationDiffItem","description":"One human vs AI evaluation comparison for a conversation."},"Event":{"properties":{"title":{"type":"string","title":"Title","description":"Title of the event"},"start_offset_ms":{"type":"integer","title":"Start Offset Ms","description":"Start offset of the event in milliseconds"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of the event"},"end_offset_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Offset Ms","description":"End offset of the event in milliseconds"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"List of tags associated with the event"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional metadata associated with the event"}},"type":"object","required":["title","start_offset_ms"],"title":"Event","description":"Pydantic model for event data"},"EveryNHoursSchedule":{"properties":{"window":{"anyOf":[{"$ref":"#/components/schemas/ScheduleWindow"},{"type":"null"}]},"frequency":{"type":"string","const":"every_n_hours","title":"Frequency"},"interval":{"type":"integer","maximum":23.0,"exclusiveMinimum":0.0,"title":"Interval","description":"Repeat every N hours (max 23)"}},"type":"object","required":["frequency","interval"],"title":"EveryNHoursSchedule"},"EveryNMinutesSchedule":{"properties":{"window":{"anyOf":[{"$ref":"#/components/schemas/ScheduleWindow"},{"type":"null"}]},"frequency":{"type":"string","const":"every_n_minutes","title":"Frequency"},"interval":{"type":"integer","maximum":59.0,"exclusiveMinimum":0.0,"title":"Interval","description":"Repeat every N minutes (max 59)"}},"type":"object","required":["frequency","interval"],"title":"EveryNMinutesSchedule"},"ExpectedToolCall":{"properties":{"name":{"type":"string","title":"Name","description":"Name of the expected tool call"},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"Expected parameters passed to the tool call"},"output":{"anyOf":[{},{"type":"null"}],"title":"Output","description":"Expected output returned by the tool call"}},"type":"object","required":["name"],"title":"ExpectedToolCall","description":"Represents an expected tool call during a conversation."},"ExpectedToolCallDetail":{"properties":{"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"Expected parameters"},"output":{"anyOf":[{},{"type":"null"}],"title":"Output","description":"Expected output"}},"type":"object","title":"ExpectedToolCallDetail"},"FileDocumentRequest":{"properties":{"kind":{"type":"string","const":"file","title":"Kind","default":"file"},"document_id":{"type":"string","format":"uuid","title":"Document Id"},"knowledge_base_id":{"type":"string","format":"uuid","title":"Knowledge Base Id"},"filename":{"type":"string","title":"Filename"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","required":["document_id","knowledge_base_id","filename"],"title":"FileDocumentRequest"},"FillerIgnoredLatency":{"properties":{"avg_filler_ignored_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Filler Ignored Latency","description":"Average filler ignored latency","default":0},"p50_filler_ignored_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P50 Filler Ignored Latency","description":"50th percentile filler ignored latency","default":0},"p90_filler_ignored_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P90 Filler Ignored Latency","description":"90th percentile filler ignored latency","default":0},"p95_filler_ignored_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P95 Filler Ignored Latency","description":"95th percentile filler ignored latency","default":0},"p99_filler_ignored_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P99 Filler Ignored Latency","description":"99th percentile filler ignored latency","default":0}},"type":"object","title":"FillerIgnoredLatency"},"FluencyType":{"type":"string","enum":["beginner","intermediate","native"],"title":"FluencyType","description":"Enum for fluency level options."},"FolderCreateRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name of the folder"}},"type":"object","required":["name"],"title":"FolderCreateRequest"},"FolderDeleteResponse":{"properties":{"folder_id":{"type":"string","format":"uuid","title":"Folder Id","description":"ID of the deleted folder"},"status":{"type":"string","title":"Status","description":"Status of the deletion","default":"success"}},"type":"object","required":["folder_id"],"title":"FolderDeleteResponse"},"FolderResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"ID of the folder"},"name":{"type":"string","title":"Name","description":"Name of the folder"},"organization_id":{"type":"string","title":"Organization Id","description":"Organization ID"},"created_at":{"type":"string","title":"Created At","description":"Timestamp when the folder was created"}},"type":"object","required":["id","name","organization_id","created_at"],"title":"FolderResponse"},"FolderUpdateRequest":{"properties":{"name":{"type":"string","title":"Name","description":"New name for the folder"}},"type":"object","required":["name"],"title":"FolderUpdateRequest"},"GenderType":{"type":"string","enum":["male","female"],"title":"GenderType","description":"Enum for gender options."},"GenerateCustomPersonasRequest":{"properties":{"agent_id":{"type":"string","title":"Agent Id","description":"ID of the agent to generate personas for"},"prompt_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Prompt Id","description":"Prompt UUID associated with the agent"},"knowledge_base_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Knowledge Base Id","description":"Knowledge base UUID associated with the agent"},"count":{"type":"integer","title":"Count","description":"Number of custom personas to generate","default":5},"custom_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Prompt","description":"Custom instructions for persona generation"}},"type":"object","required":["agent_id"],"title":"GenerateCustomPersonasRequest"},"GenerateFormattedTranscriptRequest":{"properties":{"original_transcript":{"type":"string","title":"Original Transcript","description":"Raw transcript in any format"}},"type":"object","required":["original_transcript"],"title":"GenerateFormattedTranscriptRequest"},"GenerateFormattedTranscriptResponse":{"properties":{"formatted_transcript":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array","title":"Formatted Transcript","description":"Structured transcript: [{\"role\": \"USER\"|\"AGENT\", \"utterance\": \"...\"}]"},"description":{"type":"string","title":"Description","description":"JSON-encoded list of user utterances (the intent/description field)"},"speaks_first_config":{"anyOf":[{"$ref":"#/components/schemas/SpeaksFirstConfig"},{"type":"null"}],"description":"Speaks first configuration derived from the transcript"}},"type":"object","required":["formatted_transcript","description"],"title":"GenerateFormattedTranscriptResponse"},"GenerateGoalsRequest":{"properties":{"agent_id":{"type":"string","title":"Agent Id","description":"ID of the agent to generate goals for"},"count":{"type":"integer","title":"Count","description":"Number of goals to generate","default":5},"prompt_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Prompt Id","description":"ID of the prompt to use for goal generation"},"knowledge_base_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Knowledge Base Id","description":"ID of the knowledge base to use for goal generation"},"custom_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Prompt","description":"Custom instructions for goal generation"}},"type":"object","required":["agent_id"],"title":"GenerateGoalsRequest","description":"Request model for generating goals"},"GenerateIntentSummaryRequest":{"properties":{"test_case_id":{"type":"integer","title":"Test Case Id","description":"ID of the test case"}},"type":"object","required":["test_case_id"],"title":"GenerateIntentSummaryRequest","description":"Request model for generating intent summary."},"GenerateIntentSummaryResponse":{"properties":{"intent_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Intent Summary","description":"The generated intent summary, or null if intent is short"},"test_case_id":{"type":"integer","title":"Test Case Id","description":"ID of the test case"},"skipped":{"type":"boolean","title":"Skipped","description":"True if summary was skipped because intent is short","default":false}},"type":"object","required":["test_case_id"],"title":"GenerateIntentSummaryResponse","description":"Response model for generating intent summary."},"GenerateJourneyStepsRequest":{"properties":{"agent_id":{"type":"string","title":"Agent Id","description":"ID of the agent to generate journey steps for"},"description":{"type":"string","title":"Description","description":"Plain-language description of the journey"},"allow_sms":{"type":"boolean","title":"Allow Sms","description":"Whether the agent can send SMS","default":false},"max_steps":{"type":"integer","title":"Max Steps","description":"Maximum number of steps to generate; clamped to 1-10","default":3}},"type":"object","required":["agent_id","description"],"title":"GenerateJourneyStepsRequest"},"GenerateMetricsRequest":{"properties":{"agent_id":{"type":"string","title":"Agent Id","description":"ID of the agent to generate metrics for"},"prompt_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Prompt Id","description":"Prompt UUID associated with the agent"},"knowledge_base_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Knowledge Base Id","description":"Knowledge base UUID associated with the agent"},"count":{"type":"integer","title":"Count","description":"Number of custom metrics to generate","default":5},"custom_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Prompt","description":"Custom instructions for metric generation"}},"type":"object","required":["agent_id"],"title":"GenerateMetricsRequest"},"GenerateObjectivesRequest":{"properties":{"test_case_id":{"type":"integer","title":"Test Case Id","description":"ID of the test case"}},"type":"object","required":["test_case_id"],"title":"GenerateObjectivesRequest","description":"Request model for generating objectives."},"GenerateObjectivesResponse":{"properties":{"objectives":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Objectives","description":"The generated objectives as a formatted string"},"test_case_id":{"type":"integer","title":"Test Case Id","description":"ID of the test case"}},"type":"object","required":["test_case_id"],"title":"GenerateObjectivesResponse","description":"Response model for generating objectives."},"GeneratePromptSummaryRequest":{"properties":{"prompt_id":{"type":"string","title":"Prompt Id","description":"ID of the prompt (UUID)"}},"type":"object","required":["prompt_id"],"title":"GeneratePromptSummaryRequest","description":"Request model for generating prompt summary."},"GeneratePromptSummaryResponse":{"properties":{"prompt_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt Summary","description":"The generated prompt summary, or null if prompt is short"},"prompt_id":{"type":"string","title":"Prompt Id","description":"ID of the prompt"},"skipped":{"type":"boolean","title":"Skipped","description":"True if summary was skipped because prompt is short","default":false}},"type":"object","required":["prompt_id"],"title":"GeneratePromptSummaryResponse","description":"Response model for generating prompt summary."},"GenerateTraitValuesRequest":{"properties":{"scenarios":{"items":{"type":"string"},"type":"array","title":"Scenarios","description":"List of intents (one per scenario) to generate values for"},"traits":{"items":{"$ref":"#/components/schemas/TraitInput"},"type":"array","title":"Traits","description":"List of traits (name + data_type) to generate values for"},"agent_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Prompt","description":"Optional agent description for context"},"knowledge_base":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Knowledge Base","description":"Optional knowledge base text for context"}},"type":"object","required":["scenarios","traits"],"title":"GenerateTraitValuesRequest","description":"Request: list of scenarios and list of traits; values are generated per scenario per trait."},"GenerateVoiceRequest":{"properties":{"description":{"type":"string","maxLength":2000,"minLength":1,"title":"Description"},"name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Name"}},"type":"object","required":["description"],"title":"GenerateVoiceRequest"},"GenerateWorkflowFromPromptRequest":{"properties":{"prompt":{"type":"string","maxLength":12000,"minLength":1,"title":"Prompt","description":"What the workflow should cover (steps, branches, agent vs user lines)."},"context":{"anyOf":[{"type":"string","maxLength":8000},{"type":"null"}],"title":"Context","description":"Optional product or agent context to steer the layout."}},"type":"object","required":["prompt"],"title":"GenerateWorkflowFromPromptRequest","description":"Generate a React Flow workflow graph from natural language (not persisted)."},"GenerateWorkflowFromPromptResponse":{"properties":{"definition":{"additionalProperties":true,"type":"object","title":"Definition","description":"React Flow graph that passed the same validation as create/update."}},"type":"object","required":["definition"],"title":"GenerateWorkflowFromPromptResponse","description":"Validated graph ready for ``POST /v1/scenario`` ``definition`` field."},"GeneratedVoice":{"properties":{"voice_id":{"type":"string","title":"Voice Id"},"name":{"type":"string","title":"Name"},"ambience_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ambience Path"}},"type":"object","required":["voice_id","name"],"title":"GeneratedVoice"},"GetCronJobResponse":{"properties":{"id":{"type":"string","title":"Id","description":"The unique identifier for the cron job."},"simulation_id":{"type":"string","title":"Simulation Id","description":"The unique identifier for the associated simulation."},"cron_expression":{"type":"string","title":"Cron Expression","description":"The cron expression defining the job schedule."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Whether the cron job is enabled."},"created_at":{"type":"string","title":"Created At","description":"The timestamp when the cron job was created."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone the cron expression is read in. Null means UTC."}},"type":"object","required":["id","simulation_id","cron_expression","created_at"],"title":"GetCronJobResponse"},"GetSimulationRunsResponse":{"properties":{"simulation_runs":{"items":{"$ref":"#/components/schemas/SimulationRunRes"},"type":"array","title":"Simulation Runs","description":"List of simulation runs"}},"type":"object","title":"GetSimulationRunsResponse"},"GetSimulationsResponse":{"properties":{"simulations":{"items":{"$ref":"#/components/schemas/SimulationRes"},"type":"array","title":"Simulations","description":"List of simulations"}},"type":"object","title":"GetSimulationsResponse"},"GetUploadUrlRequest":{"properties":{"knowledge_base_id":{"type":"string","format":"uuid","title":"Knowledge Base Id"},"filename":{"type":"string","title":"Filename"}},"type":"object","required":["knowledge_base_id","filename"],"title":"GetUploadUrlRequest"},"GetUploadUrlResponse":{"properties":{"document_id":{"type":"string","format":"uuid","title":"Document Id"},"upload_url":{"type":"string","title":"Upload Url"},"filename":{"type":"string","title":"Filename"},"type":{"$ref":"#/components/schemas/DocumentType"},"expires_in_seconds":{"type":"integer","title":"Expires In Seconds"}},"type":"object","required":["document_id","upload_url","filename","type","expires_in_seconds"],"title":"GetUploadUrlResponse"},"GoalAdherence":{"properties":{"goal":{"type":"string","title":"Goal","description":"Description of the goal"},"num_calls":{"type":"integer","title":"Num Calls","description":"Number of calls that adhered to the goal"}},"type":"object","required":["goal","num_calls"],"title":"GoalAdherence","description":"Goal adherence scenario for batch digital human generation."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HttpSimulationRunRequest":{"properties":{"simulation_id":{"type":"string","title":"Simulation Id","description":"ID of the simulation to be run"},"prompt_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt Id","description":"Prompt UUID associated with this run"},"knowledge_base_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Knowledge Base Id","description":"Deprecated and ignored for grounding (the worker resolves KB from the documents model). Kept as a loose optional pass-through so existing API integrations that still send it keep working."},"digital_human_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Digital Human Ids","description":"Digital human IDs to be used in the simulation"},"runs_per_digital_human":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Runs Per Digital Human","description":"Optional per-run override for how many test_results to spawn per selected digital human. Falls back to 1 when omitted."}},"type":"object","required":["simulation_id"],"title":"HttpSimulationRunRequest","description":"Request model for HTTP simulation run"},"HttpSimulationRunResponse":{"properties":{"simulation_run_id":{"type":"string","title":"Simulation Run Id","description":"ID of the created simulation run (experiment_run)"},"simulation_result_ids":{"items":{"type":"string"},"type":"array","title":"Simulation Result Ids","description":"IDs of the created simulation results (test results)"},"agent_id":{"type":"string","title":"Agent Id","description":"ID of the agent associated with the simulation run"},"status":{"type":"string","title":"Status","description":"Status of the response","default":"success"}},"type":"object","required":["simulation_run_id","simulation_result_ids","agent_id"],"title":"HttpSimulationRunResponse","description":"Response model for HTTP simulation run"},"HttpTextAgentToolCallRequest":{"properties":{"simulation_result_id":{"type":"string","title":"Simulation Result Id","description":"ID of the simulation result (test result)"},"end_conversation":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"End Conversation","description":"If true, skip lambda and end/evaluate the conversation","default":false},"end_turn":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"End Turn","description":"If true, process the message now; if false, stack it for later","default":true},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id","description":"Unique message ID for deduping within a conversation"},"type":{"type":"string","const":"tool_call","title":"Type","description":"Log a tool call"},"name":{"type":"string","title":"Name","description":"Tool name"},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"Tool parameters"},"output":{"anyOf":[{},{"type":"null"}],"title":"Output","description":"Tool output"}},"type":"object","required":["simulation_result_id","type","name"],"title":"HttpTextAgentToolCallRequest","description":"Tool invocation: Logs a tool call"},"HttpTextAgentUserMessageRequest":{"properties":{"simulation_result_id":{"type":"string","title":"Simulation Result Id","description":"ID of the simulation result (test result)"},"end_conversation":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"End Conversation","description":"If true, skip lambda and end/evaluate the conversation","default":false},"end_turn":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"End Turn","description":"If true, process the message now; if false, stack it for later","default":true},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id","description":"Unique message ID for deduping within a conversation"},"type":{"type":"string","const":"message","title":"Type","description":"Send a message to the user","default":"message"},"message":{"type":"string","title":"Message","description":"Text message to send"}},"type":"object","required":["simulation_result_id","message"],"title":"HttpTextAgentUserMessageRequest","description":"Chat message: Send a message to the user."},"HttpTextMessageResponse":{"properties":{"simulation_result_id":{"type":"string","title":"Simulation Result Id","description":"Simulation result ID"},"status":{"type":"string","title":"Status","description":"Status of the response","default":"success"},"end_conversation":{"type":"boolean","title":"End Conversation","description":"Whether the conversation has ended","default":false}},"type":"object","required":["simulation_result_id"],"title":"HttpTextMessageResponse","description":"Response model for HTTP text message"},"HumanEditResponse":{"properties":{"status":{"type":"string","title":"Status","description":"Status of the response","default":"success"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","description":"Optional message providing additional information"}},"type":"object","title":"HumanEditResponse"},"HumanEvaluationResponse":{"properties":{"success":{"type":"boolean","title":"Success","description":"Whether the operation was successful"},"message":{"type":"string","title":"Message","description":"Response message"}},"type":"object","required":["success","message"],"title":"HumanEvaluationResponse","description":"Response model for human evaluation operations"},"IntegrationKeyRequest":{"properties":{"field":{"type":"string","title":"Field","description":"The secret field name to retrieve"},"workspace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Id","description":"Workspace whose integrations row to read; defaults to the org's default workspace"}},"type":"object","required":["field"],"title":"IntegrationKeyRequest"},"IntegrationKeyResponse":{"properties":{"value":{"type":"string","title":"Value","description":"The decrypted plaintext value"}},"type":"object","required":["value"],"title":"IntegrationKeyResponse"},"IntegrationsUpdateResponse":{"properties":{"success":{"type":"boolean","title":"Success","description":"Whether the update succeeded","default":true},"message":{"type":"string","title":"Message","description":"Human-readable result message"},"status":{"type":"string","title":"Status","description":"Status code string for clients","default":"200"},"integrations":{"additionalProperties":true,"type":"object","title":"Integrations","description":"Current integration row with secrets masked (same shape as GET /integrations)"}},"type":"object","required":["message","integrations"],"title":"IntegrationsUpdateResponse"},"Issue":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"type":{"type":"string","title":"Type","description":"non_deterministic if clustered from similar failures, deterministic if recognised from a known error"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"status":{"type":"string","title":"Status","description":"open, in_progress, resolved or ignored"},"priority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Priority","description":"low, medium, high or urgent. Null until someone sets it."},"assignee_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Assignee Id"},"due_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Due Date","description":"null when nobody has set one"},"first_seen_at":{"type":"string","format":"date-time","title":"First Seen At"},"last_seen_at":{"type":"string","format":"date-time","title":"Last Seen 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","type","title","description","status","first_seen_at","last_seen_at","created_at","updated_at"],"title":"Issue"},"JourneyStep":{"properties":{"step":{"type":"integer","minimum":0.0,"title":"Step"},"intent":{"type":"string","title":"Intent","default":""},"success_criteria":{"type":"string","title":"Success Criteria","default":""},"modality":{"type":"string","enum":["voice","sms"],"title":"Modality","default":"voice"},"direction":{"anyOf":[{"type":"string","enum":["inbound","outbound"]},{"type":"null"}],"title":"Direction"},"wait_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Wait Seconds"},"response_window_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Response Window Seconds"},"unresponsive":{"type":"boolean","title":"Unresponsive","default":false},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number"}},"type":"object","required":["step"],"title":"JourneyStep"},"KeyOut":{"properties":{"id":{"type":"string","title":"Id"},"api_key":{"type":"string","title":"Api Key"},"scope":{"type":"string","title":"Scope"},"name":{"type":"string","title":"Name"},"created_at":{"type":"string","title":"Created At"},"revoked":{"type":"boolean","title":"Revoked"}},"type":"object","required":["id","api_key","scope","name","created_at","revoked"],"title":"KeyOut"},"KeywordResponse":{"properties":{"keyword":{"type":"string","title":"Keyword","description":"The keyword to listen for and interrupt on"},"response":{"type":"string","title":"Response","description":"Response to say when keyword is detected"},"probability":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Probability","description":"Probability of responding (0.0-1.0) - defaults to 1.0","default":1.0}},"type":"object","required":["keyword","response"],"title":"KeywordResponse","description":"Model for a keyword response configuration."},"KeywordsInterruptionConfig":{"properties":{"type":{"type":"string","const":"keywords","title":"Type","description":"Type discriminator for keywords interruption (required)"},"keyword_responses":{"items":{"$ref":"#/components/schemas/KeywordResponse"},"type":"array","title":"Keyword Responses","description":"Array of keyword response objects, each with keyword, response, and optional probability"}},"type":"object","required":["type","keyword_responses"],"title":"Keywords","description":"Keywords-based interruption configuration."},"KnowledgeBaseDetailResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"organization_id":{"type":"string","title":"Organization Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"},"documents":{"items":{"$ref":"#/components/schemas/KnowledgeBaseDocumentSummary"},"type":"array","title":"Documents"}},"type":"object","required":["id","organization_id","name","documents"],"title":"KnowledgeBaseDetailResponse"},"KnowledgeBaseDocumentSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},"type":"object","required":["id","name"],"title":"KnowledgeBaseDocumentSummary"},"KnowledgeBaseListItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"organization_id":{"type":"string","title":"Organization Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"},"document_count":{"type":"integer","title":"Document Count","default":0}},"type":"object","required":["id","organization_id","name"],"title":"KnowledgeBaseListItem"},"KnowledgeBaseResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"organization_id":{"type":"string","title":"Organization Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","organization_id","name"],"title":"KnowledgeBaseResponse"},"LabAIEvaluationDetail":{"properties":{"id":{"type":"string","title":"Id"},"lab_metric_revision_id":{"type":"string","title":"Lab Metric Revision Id"},"call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Call Id"},"test_result_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Test Result Id"},"response_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Response Value"},"reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reasoning"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","lab_metric_revision_id"],"title":"LabAIEvaluationDetail","description":"An AI result produced by evaluating a metric *revision* on a conversation."},"LabAnnotateAIEvaluationDetail":{"properties":{"id":{"type":"string","title":"Id"},"custom_metric_id":{"type":"string","title":"Custom Metric Id"},"call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Call Id"},"test_result_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Test Result Id"},"response_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Response Value"},"reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reasoning"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","custom_metric_id"],"title":"LabAnnotateAIEvaluationDetail","description":"An AI result for the base (un-revised) metric on a conversation."},"LabConversationDetail":{"properties":{"id":{"type":"string","title":"Id","description":"Stable id: call_id for obs_conversations, 'test_<id>' for sim_conversations"},"type":{"type":"string","enum":["obs_conversation","sim_conversation"],"title":"Type","description":"Conversation source type"},"call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Call Id","description":"obs_conversation_id, stored in the call_id column (when type='obs_conversation')"},"test_result_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Test Result Id","description":"sim_conversation_id, stored in the test_result_id column (when type='sim_conversation')"},"agent_id":{"type":"integer","title":"Agent Id","description":"Agent the conversation belongs to (0 if unresolved)","default":0},"start_time_utc":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time Utc","description":"When the conversation started"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms","description":"Duration in ms (calls)"},"duration_s":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration S","description":"Duration in seconds (test results)"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","description":"Conversation status"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Tags (calls only)"}},"type":"object","required":["id","type"],"title":"LabConversationDetail","description":"A conversation attached to the lab, resolved to its obs_conversation or sim_conversation."},"LabDetailResponse":{"properties":{"lab":{"$ref":"#/components/schemas/LabSummary"},"conversations":{"items":{"$ref":"#/components/schemas/LabConversationDetail"},"type":"array","title":"Conversations"},"metrics":{"items":{"$ref":"#/components/schemas/LabMetricDetail"},"type":"array","title":"Metrics"},"human_evaluations":{"items":{"$ref":"#/components/schemas/LabHumanEvaluationDetail"},"type":"array","title":"Human Evaluations"},"ai_evaluations":{"items":{"$ref":"#/components/schemas/LabAnnotateAIEvaluationDetail"},"type":"array","title":"Ai Evaluations"},"metric_revisions":{"items":{"$ref":"#/components/schemas/LabMetricRevisionDetail"},"type":"array","title":"Metric Revisions"},"lab_ai_evaluations":{"items":{"$ref":"#/components/schemas/LabAIEvaluationDetail"},"type":"array","title":"Lab Ai Evaluations"}},"type":"object","required":["lab","conversations","metrics","human_evaluations","ai_evaluations","metric_revisions","lab_ai_evaluations"],"title":"LabDetailResponse","description":"Full state of a lab. Mirrors the frontend LabDetail shape."},"LabHumanEvaluationDetail":{"properties":{"id":{"type":"string","title":"Id"},"custom_metric_id":{"type":"string","title":"Custom Metric Id"},"call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Call Id"},"test_result_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Test Result Id"},"human_response_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Human Response Value"},"human_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Human Reasoning"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","custom_metric_id"],"title":"LabHumanEvaluationDetail","description":"A human label for (metric, conversation) — the ground truth to align against."},"LabListItem":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"conversation_count":{"type":"integer","title":"Conversation Count","default":0},"metric_count":{"type":"integer","title":"Metric Count","default":0},"revision_count":{"type":"integer","title":"Revision Count","default":0}},"type":"object","required":["id","name"],"title":"LabListItem","description":"One lab in the list view, with cheap junction counts."},"LabListResponse":{"properties":{"labs":{"items":{"$ref":"#/components/schemas/LabListItem"},"type":"array","title":"Labs"},"total_count":{"type":"integer","title":"Total Count"}},"type":"object","required":["labs","total_count"],"title":"LabListResponse","description":"Paginated list of labs for the organization, newest first."},"LabMetricDetail":{"properties":{"id":{"type":"string","title":"Id","description":"Custom metric ID (UUID as string)"},"name":{"type":"string","title":"Name","description":"Metric name"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","description":"Metric LLM-judge prompt (legacy alias: description)"},"response_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Response Type","description":"Metric response type"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","description":"Metric category"},"min_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Value","description":"Minimum value (numeric metrics)"},"max_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Value","description":"Maximum value (numeric metrics)"},"enum_options":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enum Options","description":"Enum options (enum metrics)"},"eval_route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eval Route","description":"Evaluation route (renamed column: eval_modality)"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model used for evaluation"},"audio_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Model","description":"Audio model used for evaluation"},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Evaluation temperature"},"allow_not_applicable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow Not Applicable","description":"Whether 'not applicable' is allowed"}},"type":"object","required":["id","name"],"title":"LabMetricDetail","description":"A custom metric attached to the lab (subset of custom_metrics columns)."},"LabMetricRevisionDetail":{"properties":{"id":{"type":"string","title":"Id"},"custom_metric_id":{"type":"string","title":"Custom Metric Id"},"lab_id":{"type":"string","title":"Lab Id"},"revision_number":{"type":"integer","title":"Revision Number"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"eval_route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eval Route"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"audio_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Model"},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature"},"eval_enabled":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eval Enabled"},"allow_not_applicable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow Not Applicable"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","custom_metric_id","lab_id","revision_number"],"title":"LabMetricRevisionDetail","description":"A revision of a metric authored inside the lab."},"LabResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier of the lab"},"name":{"type":"string","title":"Name","description":"Name of the lab"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of the lab"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the lab was created"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At","description":"When the lab was last updated"}},"type":"object","required":["id","name","created_at"],"title":"LabResponse","description":"Response model for lab operations"},"LabSummary":{"properties":{"id":{"type":"string","title":"Id","description":"Lab ID (UUID as string)"},"name":{"type":"string","title":"Name","description":"Name of the lab"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of the lab"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Tags on the lab"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"When the lab was created"}},"type":"object","required":["id","name"],"title":"LabSummary","description":"The lab record itself."},"LabelDeltaRequest":{"properties":{"labels":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Labels"},"override_label":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Override Label","default":false}},"type":"object","title":"LabelDeltaRequest","description":"request body for add/remove label operations.\n\nlabels: list of labels to add or remove. empty/null means no-op for add,\nand clear-all for remove (callers decide the semantics).\noverride_label: when true, adding an existing label moves its association\nto the requested resource; when false, conflicts return 409."},"LabelListResponse":{"properties":{"labels":{"items":{"type":"string"},"type":"array","title":"Labels"}},"type":"object","title":"LabelListResponse","description":"response wrapper for just a list of labels."},"LabelPydantic":{"properties":{"id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Id"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"agent_id":{"type":"integer","title":"Agent Id"},"label_text":{"type":"string","title":"Label Text"},"prompt_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Prompt Id"},"knowledge_base_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Knowledge Base Id"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"}},"type":"object","required":["agent_id","label_text"],"title":"LabelPydantic","description":"Represents a label record stored in the `labels` table."},"LanguageType":{"type":"string","enum":["en","es","pt","ja","tr","hi","ar","he","ru","zh","ml","fr","yue","vi","de","ko","ur","te","ta","mal","kn","mr","gu","tl","ad"],"title":"LanguageType","description":"Enum for supported language types."},"Latency":{"properties":{"avg_agent_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Agent Latency","description":"Average latency","default":0},"max_agent_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Agent Latency","description":"Maximum latency","default":0},"p50_agent_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P50 Agent Latency","description":"50th percentile latency","default":0},"p90_agent_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P90 Agent Latency","description":"90th percentile latency","default":0},"p95_agent_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P95 Agent Latency","description":"95th percentile latency","default":0},"p99_agent_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P99 Agent Latency","description":"99th percentile latency","default":0}},"type":"object","title":"Latency"},"LayoutItem":{"properties":{"widget_id":{"type":"string","title":"Widget Id"},"layout":{"$ref":"#/components/schemas/WidgetLayoutModel"}},"type":"object","required":["widget_id","layout"],"title":"LayoutItem"},"ListCronJobsResponse":{"properties":{"schedules":{"items":{"$ref":"#/components/schemas/GetCronJobResponse"},"type":"array","title":"Schedules","description":"List of cron jobs for the organization."}},"type":"object","required":["schedules"],"title":"ListCronJobsResponse"},"MatchType":{"type":"string","enum":["exact","context"],"title":"MatchType","description":"Enum for scripted response match types."},"MentionInput":{"properties":{"type":{"type":"string","title":"Type"},"id":{"title":"Id"}},"type":"object","required":["type","id"],"title":"MentionInput"},"Metric":{"properties":{"name":{"type":"string","title":"Name"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"metric_type":{"type":"string","title":"Metric Type","default":"llm_judge"},"eval_method":{"type":"string","title":"Eval Method","default":"llm_judge"},"settings":{"additionalProperties":true,"type":"object","title":"Settings"},"source":{"type":"string","title":"Source","default":"custom"},"eval_segment":{"type":"string","title":"Eval Segment","default":"all"},"scope":{"type":"string","title":"Scope","default":"all"},"response_type":{"$ref":"#/components/schemas/src__models__metric__ResponseType"},"min_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Value"},"max_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Value"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"updated_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Updated By"},"created_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By"},"id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Id","description":"Unique identifier for the metric"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"scoring_guidance":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scoring Guidance"},"eval_modality":{"anyOf":[{"$ref":"#/components/schemas/EvalRoute"},{"type":"null"}],"default":"AUTO"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"audio_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Model"},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature"},"enum_options":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enum Options"},"json_schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Json Schema"},"organization_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Organization Id"},"workspace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Id"},"allow_not_applicable":{"type":"boolean","title":"Allow Not Applicable","default":false},"template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Id"}},"type":"object","required":["name","response_type"],"title":"Metric","description":"Represents a metric entry in the database."},"MetricEvaluationItem":{"properties":{"type":{"type":"string","title":"Type","description":"Type of metric: 'custom_metric' or 'custom_metric_revision'"},"id":{"type":"string","title":"Id","description":"Metric ID (custom_metric_id or custom_metric_revision_id)"},"eval_id":{"type":"string","title":"Eval Id","description":"Evaluation ID (lab_annotate_ai_evaluation_id or lab_ai_evaluation_id)"}},"type":"object","required":["type","id","eval_id"],"title":"MetricEvaluationItem","description":"Pydantic model for a single metric evaluation item in response"},"MetricResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier for the custom metric"},"bluejay_as_code_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bluejay As Code Id","description":"Stable code-addressable identifier (same as id for custom metrics)"},"name":{"type":"string","title":"Name","description":"Name of the custom metric"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","description":"LLM-judge system prompt for this metric (null for non-judge types)"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Deprecated: same value as prompt"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary","description":"Short plain-English description of the metric (LLM-generated)"},"metric_type":{"type":"string","title":"Metric Type","description":"Specific metric kind","default":"llm_judge"},"eval_method":{"type":"string","title":"Eval Method","description":"Evaluation category (llm_judge|statistical|ml_model|deterministic)","default":"llm_judge"},"settings":{"additionalProperties":true,"type":"object","title":"Settings","description":"Type-specific config"},"eval_segment":{"type":"string","title":"Eval Segment","description":"Which side of the conversation is evaluated (agent|user|all)","default":"all"},"scope":{"type":"string","title":"Scope","description":"Which pipeline runs this metric (observability|simulations|all)","default":"all"},"response_type":{"$ref":"#/components/schemas/src__models__metric__ResponseType","description":"Type of response expected"},"agent_ids":{"items":{"type":"integer"},"type":"array","title":"Agent Ids","description":"List of agent IDs this metric belongs to"},"min_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Value","description":"Minimum value for quantitative metrics"},"max_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Value","description":"Maximum value for quantitative metrics"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","description":"Category for organizing metrics"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Tags for categorizing the metric"},"scoring_guidance":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scoring Guidance","description":"Guidance on how to score this metric"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When this metric was created"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At","description":"When this metric was last updated"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By","description":"User who last updated this metric"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By","description":"User who created this metric"},"eval_modality":{"anyOf":[{"$ref":"#/components/schemas/EvalRoute"},{"type":"null"}],"description":"Evaluation modality AUTO/TEXT/AUDIO"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model to use for text evaluation of the metric"},"audio_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Model","description":"Model to use for audio evaluation of the metric"},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature for evaluating the metric"},"enum_options":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enum Options","description":"Options for enum metrics"},"tool_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tool Names","description":"Deprecated: mirror of settings.tool_names for tool_call metrics"},"json_schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Json Schema","description":"JSON Schema describing the object the judge must return (json metrics only)"},"allow_not_applicable":{"type":"boolean","title":"Allow Not Applicable","description":"Whether this metric allows 'not applicable' responses.","default":false},"eval_modality_auto_selected":{"type":"boolean","title":"Eval Modality Auto Selected","description":"Deprecated: always false (column removed).","default":false},"template_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Id","description":"Library template this metric was created from"}},"type":"object","required":["id","name","response_type","created_at"],"title":"MetricResponse","description":"Response model for custom metric operations"},"MetricResult":{"properties":{"metric_name":{"type":"string","title":"Metric Name","description":"Stable name of the metric, e.g. 'user_perceived_loudness'"},"metric_type":{"type":"string","title":"Metric Type","description":"One of int, float, boolean, enum, qualitative, json, pass_fail, yes_no"},"value":{"type":"string","title":"Value","description":"The effective value as a string: the human correction when one was applied, otherwise the model's"},"human_edited":{"type":"boolean","title":"Human Edited","description":"Whether a reviewer overrode this result","default":false},"reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reasoning","description":"Reasoning behind the effective value"}},"type":"object","required":["metric_name","metric_type","value"],"title":"MetricResult","description":"One metric scored on a conversation, read from `metric_results`.\n\nEverything the platform scores lands here, including the audio measurements that have\nno column on `evaluations` (perceived loudness, clipping, dropouts). `value` is a\nstring for every metric_type so results of mixed types can come back in one list,\nmatching GET /v1/observability/conversations/{id}."},"MetricResultItem":{"properties":{"metric_id":{"type":"string","title":"Metric Id","description":"Stable UUID of the metric definition"},"name":{"type":"string","title":"Name","description":"Metric name, e.g. answer_latency, duration, num_turns"},"type":{"type":"string","title":"Type","description":"Value type: int, float, boolean, enum, qualitative, json, pass_fail or yes_no"},"value":{"anyOf":[{},{"type":"null"}],"title":"Value","description":"Metric value; null when not applicable (e.g. answer_latency when the agent never answered)"},"not_applicable":{"type":"boolean","title":"Not Applicable","description":"True when the metric could not be computed for this conversation","default":false},"reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reasoning","description":"Grader reasoning, when the metric is LLM-judged"}},"type":"object","required":["metric_id","name","type"],"title":"MetricResultItem"},"MetricRevisionResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Revision ID (UUID as string)"},"lab_id":{"type":"string","title":"Lab Id","description":"Lab ID (UUID as string)"},"custom_metric_id":{"type":"string","title":"Custom Metric Id","description":"Custom metric ID (UUID as string)"},"revision_number":{"type":"integer","title":"Revision Number","description":"Revision number (auto-incremented)"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of the metric revision"},"scoring_guidance":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scoring Guidance","description":"Scoring guidance for the metric revision"},"eval_route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eval Route","description":"Evaluation route"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model to use for evaluation"},"audio_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Model","description":"Audio model to use for evaluation"},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature for evaluation"},"allow_not_applicable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow Not Applicable","description":"Whether to allow 'not applicable' responses"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the revision was created"}},"type":"object","required":["id","lab_id","custom_metric_id","revision_number","created_at"],"title":"MetricRevisionResponse","description":"Response model for metric revision operations"},"MetricSettingEntry":{"properties":{"metric_id":{"type":"string","format":"uuid","title":"Metric Id"},"is_enabled":{"type":"boolean","title":"Is Enabled"},"override_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Override Prompt"}},"type":"object","required":["metric_id","is_enabled"],"title":"MetricSettingEntry"},"MetricSettingsResponse":{"properties":{"settings":{"items":{"$ref":"#/components/schemas/MetricSettingEntry"},"type":"array","title":"Settings"}},"type":"object","required":["settings"],"title":"MetricSettingsResponse"},"MetricUpdates":{"properties":{"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"agent_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Agent Ids"},"eval_modality":{"anyOf":[{"$ref":"#/components/schemas/EvalRoute"},{"type":"null"}]},"eval_segment":{"anyOf":[{"type":"string","enum":["agent","user","all"]},{"type":"null"}],"title":"Eval Segment"},"scope":{"anyOf":[{"type":"string","enum":["observability","simulations","all"]},{"type":"null"}],"title":"Scope"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"audio_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Model"},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature"},"allow_not_applicable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow Not Applicable"}},"type":"object","title":"MetricUpdates","description":"Patch payload; only keys that are present are applied; each value (including null) is written."},"MetricsListResponse":{"properties":{"metrics":{"items":{"$ref":"#/components/schemas/MetricResponse"},"type":"array","title":"Metrics","description":"List of custom metrics"},"total_count":{"type":"integer","title":"Total Count","description":"Total number of metrics across all pages"},"page":{"type":"integer","title":"Page","description":"Current page number"},"page_size":{"type":"integer","title":"Page Size","description":"Requested number of items per page"},"items_in_page":{"type":"integer","title":"Items In Page","description":"Actual number of items in current page"},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages"},"data":{"items":{"$ref":"#/components/schemas/MetricResponse"},"type":"array","title":"Data","readOnly":true}},"type":"object","required":["metrics","total_count","page","page_size","items_in_page","total_pages","data"],"title":"MetricsListResponse","description":"Response model for listing custom metrics"},"MetricsRequest":{"properties":{"type":{"type":"string","enum":["custom_metric","custom_metric_revision"],"title":"Type","description":"Type of metrics: 'custom_metric' or 'custom_metric_revision'"},"custom_metric_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Custom Metric Ids","description":"List of custom metric IDs (required when type is 'custom_metric')"},"custom_metric_revision_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Metric Revision Id","description":"Custom metric revision ID (required when type is 'custom_metric_revision')"}},"type":"object","required":["type"],"title":"MetricsRequest","description":"Pydantic model for metrics in evaluate-conversation request"},"MinEventsType":{"type":"string","enum":["events","percentage"],"title":"MinEventsType","description":"Whether min_events is an absolute count or a percentage of total events."},"MintTokenRequest":{"properties":{"organization_id":{"type":"string","title":"Organization Id"},"test_result_id":{"type":"integer","title":"Test Result Id"}},"type":"object","required":["organization_id","test_result_id"],"title":"MintTokenRequest"},"MonthlySchedule":{"properties":{"time":{"type":"string","pattern":"^\\d{2}:\\d{2}$","title":"Time","description":"HH:MM 24hr time"},"frequency":{"type":"string","const":"monthly","title":"Frequency"},"day_of_month":{"type":"integer","maximum":31.0,"minimum":1.0,"title":"Day Of Month"}},"type":"object","required":["time","frequency","day_of_month"],"title":"MonthlySchedule"},"MoveAgentRequest":{"properties":{"agent_id":{"type":"integer","title":"Agent Id","description":"ID of the agent to move"},"folder_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Folder Id","description":"ID of the target folder (null to disassociate from any folder)"}},"type":"object","required":["agent_id"],"title":"MoveAgentRequest"},"MoveAgentResponse":{"properties":{"agent_id":{"type":"integer","title":"Agent Id","description":"ID of the agent"},"folder_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Folder Id","description":"ID of the folder (null if disassociated)"},"status":{"type":"string","title":"Status","description":"Status of the operation","default":"success"}},"type":"object","required":["agent_id"],"title":"MoveAgentResponse"},"NodeCreate":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["name"],"title":"NodeCreate","description":"Universal node-creation spec. Same field set as :class:`NodePatch` but ``name`` is required."},"NodePatch":{"properties":{"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","title":"NodePatch","description":"Universal node patch. Pass only the fields you want to change; ``None`` leaves them as-is.\n\nProvider-specific fields (e.g. ElevenLabs voice / llm / eagerness) live on provider-named\ntools, NOT on this universal shape."},"NotificationChannel":{"properties":{"type":{"$ref":"#/components/schemas/NotificationChannelType","description":"Channel type: email or slack"},"target":{"type":"string","title":"Target","description":"Email address, or Slack channel id"}},"type":"object","required":["type","target"],"title":"NotificationChannel"},"NotificationChannelRequest":{"properties":{"type":{"type":"string","title":"Type","description":"Type of notification: 'email', 'slack', 'webhook', or 'pagerduty'"},"target":{"type":"string","title":"Target","description":"Target for the notification (email address, slack channel, webhook URL, or PagerDuty routing/integration key)"}},"type":"object","required":["type","target"],"title":"NotificationChannelRequest","description":"Notification channel configuration"},"NotificationChannelType":{"type":"string","enum":["email","slack"],"title":"NotificationChannelType"},"ObsConversation":{"properties":{"obs_conversation_id":{"type":"string","format":"uuid","title":"Obs Conversation Id"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"agent_id":{"type":"integer","title":"Agent Id"},"workspace_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Workspace Id"},"label_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Label Id"},"status":{"anyOf":[{"$ref":"#/components/schemas/ConversationStatus"},{"type":"null"}]},"multichannel_requested":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Multichannel Requested"},"tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ConversationToolCalls"},"type":"array"},{"type":"null"}],"title":"Tool Calls"},"initiation_direction":{"anyOf":[{"$ref":"#/components/schemas/CallDirection"},{"type":"null"}]},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"interface":{"anyOf":[{"$ref":"#/components/schemas/CallInterface"},{"type":"null"}],"default":"PHONE"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"events":{"anyOf":[{"items":{"$ref":"#/components/schemas/Event"},"type":"array"},{"type":"null"}],"title":"Events"},"conversation_ended_by":{"anyOf":[{"$ref":"#/components/schemas/ParticipantRole"},{"type":"null"}]},"trace_ids":{"items":{"type":"string"},"type":"array","title":"Trace Ids"},"start_time_utc":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time Utc"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms"},"participants":{"anyOf":[{"items":{"$ref":"#/components/schemas/Participant"},"type":"array"},{"type":"null"}],"title":"Participants"},"submitted_recording_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Submitted Recording Url"},"submitted_transcript_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Submitted Transcript Url"},"submitted_transcript":{"anyOf":[{"items":{"$ref":"#/components/schemas/TranscriptEntry"},"type":"array"},{"type":"null"}],"title":"Submitted Transcript"},"bluejay_recording_filepath":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bluejay Recording Filepath"},"bluejay_transcript_filepath":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bluejay Transcript Filepath"},"bluejay_transcript":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Bluejay Transcript"},"bluejay_translated_transcript":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Bluejay Translated Transcript"},"bluejay_words_transcript":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Bluejay Words Transcript"},"bluejay_reference_transcript":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Bluejay Reference Transcript"},"bluejay_translated_transcript_filepath":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bluejay Translated Transcript Filepath"},"bluejay_words_transcript_filepath":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bluejay Words Transcript Filepath"},"bluejay_reference_transcript_filepath":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bluejay Reference Transcript Filepath"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"error_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Error Details"}},"type":"object","required":["obs_conversation_id","organization_id","agent_id"],"title":"ObsConversation","description":"Observability conversation, persisted to the Postgres `obs_conversations`\ntable (source of truth, dual-written alongside `calls`, obs_conversation_id == calls.id)."},"OccurrenceMode":{"type":"string","enum":["always","first_n"],"title":"OccurrenceMode","description":"Enum for scripted response occurrence modes."},"Operator":{"type":"string","enum":["equals","not_equals","greater_than","less_than","greater_than_or_equal","less_than_or_equal","contains","not_contains"],"title":"Operator","description":"Enum representing the comparison operators for alerts."},"OptimizeMetricPromptRequest":{"properties":{"name":{"type":"string","minLength":1,"title":"Name","description":"The name of the custom metric to optimize."},"prompt":{"type":"string","minLength":1,"title":"Prompt","description":"The current evaluation system prompt to optimize."},"additional_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Additional Instructions","description":"Additional instructions for the optimization."}},"type":"object","required":["name","prompt"],"title":"OptimizeMetricPromptRequest","description":"Request body for optimizing a metric prompt (no evaluation diffs)."},"OptimizeMetricPromptResponse":{"properties":{"optimized_prompt":{"type":"string","title":"Optimized Prompt","description":"The optimized version of the custom metric prompt."}},"type":"object","required":["optimized_prompt"],"title":"OptimizeMetricPromptResponse","description":"Response containing the optimized prompt."},"OptimizeMetricPromptWithDiffRequest":{"properties":{"name":{"type":"string","minLength":1,"title":"Name","description":"The name of the custom metric to optimize."},"prompt":{"type":"string","minLength":1,"title":"Prompt","description":"The current evaluation system prompt to optimize."},"additional_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Additional Instructions","description":"Additional instructions for the optimization."},"evaluation_diffs":{"anyOf":[{"items":{"$ref":"#/components/schemas/EvaluationDiffItem"},"type":"array"},{"type":"null"}],"title":"Evaluation Diffs","description":"List of human vs AI evaluation comparisons. Required and must not be empty."},"diff_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Diff Prompt","description":"System/instruction for how to use evaluation_diffs. If omitted, a default is used."}},"type":"object","required":["name","prompt"],"title":"OptimizeMetricPromptWithDiffRequest","description":"Request body for optimizing a metric prompt using evaluation diffs."},"OrganizationSpendOut":{"properties":{"minutes":{"type":"number","title":"Minutes","default":0.0},"spent_credits":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spent Credits"},"unattributed_credits":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Unattributed Credits"}},"type":"object","title":"OrganizationSpendOut","description":"The whole organization's burn, including what no workspace owns."},"OverrideCustomMetricRequest":{"properties":{"response_value":{"type":"string","title":"Response Value","description":"The manually overridden response value for the custom metric"},"reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reasoning","description":"The manually provided reasoning for the override"},"override_reason_code":{"type":"string","title":"Override Reason Code","description":"Structured reason for the override (one of VALID_OVERRIDE_REASON_CODES)"},"override_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Override Notes","description":"Freeform notes from the reviewer"}},"type":"object","required":["response_value","override_reason_code"],"title":"OverrideCustomMetricRequest"},"OverrideGoalRequest":{"properties":{"goal_success":{"type":"boolean","title":"Goal Success","description":"The manually overridden goal success value"},"goal_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Goal Reasoning","description":"The manually provided reasoning for the goal override"},"override_reason_code":{"type":"string","title":"Override Reason Code","description":"Structured reason for the override (one of VALID_OVERRIDE_REASON_CODES)"},"override_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Override Notes","description":"Freeform notes from the reviewer"}},"type":"object","required":["goal_success","override_reason_code"],"title":"OverrideGoalRequest"},"OverrideHallucinationRequest":{"properties":{"hallucination":{"type":"boolean","title":"Hallucination","description":"The manually overridden hallucination verdict"},"hallucination_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hallucination Reasoning","description":"The manually provided reasoning for the hallucination override"},"override_reason_code":{"type":"string","title":"Override Reason Code","description":"Structured reason for the override (one of VALID_OVERRIDE_REASON_CODES)"},"override_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Override Notes","description":"Freeform notes from the reviewer"}},"type":"object","required":["hallucination","override_reason_code"],"title":"OverrideHallucinationRequest"},"OverridePronunciationRequest":{"properties":{"pronunciation_score":{"type":"number","title":"Pronunciation Score","description":"The manually overridden pronunciation score"},"pronunciation_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pronunciation Reasoning","description":"The manually provided reasoning for the pronunciation override"},"override_reason_code":{"type":"string","title":"Override Reason Code","description":"Structured reason for the override (one of VALID_OVERRIDE_REASON_CODES)"},"override_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Override Notes","description":"Freeform notes from the reviewer"}},"type":"object","required":["pronunciation_score","override_reason_code"],"title":"OverridePronunciationRequest"},"OverrideRedundancyRequest":{"properties":{"redundancy":{"type":"boolean","title":"Redundancy","description":"The manually overridden redundancy verdict"},"redundancy_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Redundancy Reasoning","description":"The manually provided reasoning for the redundancy override"},"override_reason_code":{"type":"string","title":"Override Reason Code","description":"Structured reason for the override (one of VALID_OVERRIDE_REASON_CODES)"},"override_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Override Notes","description":"Freeform notes from the reviewer"}},"type":"object","required":["redundancy","override_reason_code"],"title":"OverrideRedundancyRequest"},"PaginatedDigitalHumansResponse":{"properties":{"digital_humans":{"items":{"$ref":"#/components/schemas/DigitalHumanResponseData"},"type":"array","title":"Digital Humans","description":"List of digital humans"},"total_count":{"type":"integer","title":"Total Count","description":"Total number of digital humans in the org"},"page":{"type":"integer","title":"Page","description":"Current page (1-based)"},"page_size":{"type":"integer","title":"Page Size","description":"Page size"},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages"}},"type":"object","required":["digital_humans","total_count","page","page_size","total_pages"],"title":"PaginatedDigitalHumansResponse","description":"Response model for paginated listing of all digital humans for an org."},"Participant":{"properties":{"role":{"$ref":"#/components/schemas/ParticipantRole","default":"AGENT"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"spoke_first":{"type":"boolean","title":"Spoke First","default":false},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number"}},"type":"object","title":"Participant","description":"Participant on a call or conversation."},"ParticipantResponse":{"properties":{"role":{"$ref":"#/components/schemas/ParticipantRole","description":"Role of the participant in the call"},"spoke_first":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Spoke First","description":"Whether the participant spoke first in the call"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Name of the participant"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number","description":"Phone number of the participant (if applicable)"}},"type":"object","required":["role"],"title":"ParticipantResponse","description":"Pydantic model for participant data"},"ParticipantRole":{"type":"string","enum":["AGENT","USER","DIGITAL_HUMAN","agent","digital_human"],"title":"ParticipantRole","description":"Role of a participant in a call or simulated conversation."},"PhoneNumberResponse":{"properties":{"id":{"type":"integer","title":"Id","description":"Unique identifier for the phone number record"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Timestamp when the record was created"},"phone_number":{"type":"string","title":"Phone Number","description":"The phone number in text format"},"purchase_date":{"type":"string","format":"date","title":"Purchase Date","description":"Date when the phone number was purchased"},"price":{"type":"integer","title":"Price","description":"Price of the phone number in cents or smallest currency unit"},"organization_id":{"type":"string","format":"uuid","title":"Organization Id","description":"Organization ID"}},"type":"object","required":["id","created_at","phone_number","purchase_date","price","organization_id"],"title":"PhoneNumberResponse","description":"Response schema for phone number data.\nBased on the database table structure with columns:\n- id: int8 (primary key)\n- created_at: timestamptz\n- phone_number: text\n- purchase_date: date\n- price: int8\n- organization_id: uuid"},"PresignDownloadRequest":{"properties":{"s3_key":{"type":"string","minLength":1,"title":"S3 Key"}},"type":"object","required":["s3_key"],"title":"PresignDownloadRequest"},"PresignUploadRequest":{"properties":{"filename":{"type":"string","minLength":1,"title":"Filename"},"content_type":{"type":"string","minLength":1,"title":"Content Type"},"size_bytes":{"type":"integer","exclusiveMinimum":0.0,"title":"Size Bytes"}},"type":"object","required":["filename","content_type","size_bytes"],"title":"PresignUploadRequest"},"PreviewChatBody":{"properties":{"message":{"type":"string","minLength":1,"title":"Message","description":"The user turn to send to the draft agent"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"Continue a multi-turn preview; omit to start a fresh draft session"}},"type":"object","required":["message"],"title":"PreviewChatBody"},"PromoteRequest":{"properties":{"environment_name":{"type":"string","minLength":1,"title":"Environment Name","description":"DFCX environment resource name (…/environments/{id}), or 'production' / 'staging' for Bland"},"flow_version_names":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Flow Version Names","description":"Versions to deploy: DFCX flow version resource names, or one Bland version number"}},"type":"object","required":["environment_name","flow_version_names"],"title":"PromoteRequest"},"PromptResponse":{"properties":{"id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Id","description":"the id of the prompt"},"prompt_text":{"type":"string","title":"Prompt Text","description":"the prompt content"},"commit_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Commit Message"},"labels":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Labels","description":"labels associated with the prompt"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"arbitrary JSON metadata"},"version":{"type":"integer","title":"Version","description":"the version number of the prompt"},"agent_id":{"type":"integer","title":"Agent Id","description":"id of the agent that owns this prompt"}},"type":"object","required":["prompt_text","version","agent_id"],"title":"PromptResponse","description":"response model for prompt without created_at."},"Provider":{"type":"string","enum":["CUSTOM","ELEVENLABS","VAPI","RETELL","GOOGLE_CES_VOICE","GOOGLE_CES_CHAT","GOOGLE_DFCX_VOICE","GOOGLE_DFCX_CHAT","AMELIA","BLAND"],"title":"Provider","description":"Source platform the agent's definition (system prompt, workflow) comes from.\n\nDistinct from `voice_provider` (TTS/STT vendor) and `provider_id` (handle on that vendor) —\nthis identifies where the agent's *behavior* (prompt, multi-agent graph) is authored."},"ProvisionMeteringResponse":{"properties":{"success":{"type":"boolean","title":"Success","description":"Whether the org is provisioned (or already was)"},"status":{"type":"string","title":"Status","description":"Provisioning outcome for diagnostics"}},"type":"object","required":["success","status"],"title":"ProvisionMeteringResponse"},"PushResponse":{"properties":{"valid":{"type":"boolean","title":"Valid"},"errors":{"items":{"$ref":"#/components/schemas/EntityValidationError"},"type":"array","title":"Errors"},"actions":{"items":{"type":"string"},"type":"array","title":"Actions","default":[]},"simulation_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Simulation Id"}},"type":"object","required":["valid","errors"],"title":"PushResponse"},"ReEvaluateCallResponse":{"properties":{"status":{"type":"string","title":"Status"},"call_id":{"type":"string","title":"Call Id"},"message":{"type":"string","title":"Message"}},"type":"object","required":["status","call_id","message"],"title":"ReEvaluateCallResponse"},"ReEvaluateSimulationResultResponse":{"properties":{"status":{"type":"string","title":"Status"},"simulation_result_id":{"type":"integer","title":"Simulation Result Id"},"message":{"type":"string","title":"Message"}},"type":"object","required":["status","simulation_result_id","message"],"title":"ReEvaluateSimulationResultResponse"},"RecalculateAlignedDiffResponse":{"properties":{"status":{"type":"string","title":"Status"},"test_result_id":{"type":"integer","title":"Test Result Id"},"message":{"type":"string","title":"Message"}},"type":"object","required":["status","test_result_id","message"],"title":"RecalculateAlignedDiffResponse"},"RedeemCodeRequest":{"properties":{"code":{"type":"string","maxLength":64,"minLength":1,"title":"Code","description":"Credit code to redeem"}},"type":"object","required":["code"],"title":"RedeemCodeRequest"},"RedeemCodeResponse":{"properties":{"success":{"type":"boolean","title":"Success","description":"Whether the redemption succeeded"},"message":{"type":"string","title":"Message","description":"Response message for the frontend"},"credits_granted":{"type":"integer","title":"Credits Granted","description":"Credits added to the org's balance"}},"type":"object","required":["success","message","credits_granted"],"title":"RedeemCodeResponse"},"RegenerateLiveKitTokenResponse":{"properties":{"livekit_webhook_token":{"type":"string","title":"Livekit Webhook Token","description":"The freshly minted per-org webhook token"}},"type":"object","required":["livekit_webhook_token"],"title":"RegenerateLiveKitTokenResponse"},"ReleasePhoneNumberResponse":{"properties":{"phone_number":{"type":"string","title":"Phone Number","description":"Released E.164 phone number"},"released":{"type":"boolean","title":"Released","description":"Whether the Twilio release was performed"}},"type":"object","required":["phone_number","released"],"title":"ReleasePhoneNumberResponse","description":"Response schema after releasing a Twilio number."},"RemoveConversationsFromLabRequest":{"properties":{"lab_id":{"type":"string","title":"Lab Id","description":"Lab ID (UUID as string)"},"conversations":{"items":{"$ref":"#/components/schemas/ConversationItem"},"type":"array","minItems":1,"title":"Conversations","description":"List of conversations to remove from the lab"}},"type":"object","required":["lab_id","conversations"],"title":"RemoveConversationsFromLabRequest","description":"Request model for removing conversations from a lab"},"RemoveDigitalHumansFromSimulationRequest":{"properties":{"digital_human_ids":{"items":{"type":"integer"},"type":"array","title":"Digital Human Ids","description":"array of digital human IDs to remove from this simulation"}},"type":"object","required":["digital_human_ids"],"title":"RemoveDigitalHumansFromSimulationRequest","description":"request body for removing digital humans from a simulation (unlink only)."},"RemoveDigitalHumansFromSimulationResponse":{"properties":{"message":{"type":"string","title":"Message","description":"success message"}},"type":"object","required":["message"],"title":"RemoveDigitalHumansFromSimulationResponse","description":"response body for removing digital humans from a simulation (does not delete the digital humans)."},"ReplayTranscriptFromConversation":{"properties":{"conversation_id":{"type":"string","title":"Conversation Id","description":"ID of an existing conversation log to retrieve transcript from"},"success_criteria":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Success Criteria","description":"Success criteria for the scenario (auto-generated if not provided)"},"mode":{"type":"string","enum":["strict","smart","persona"],"title":"Mode","description":"Mode for transcript replay: 'strict', 'smart' (default), or 'persona'","default":"smart"}},"type":"object","required":["conversation_id"],"title":"Replay Transcript From Conversation ID","description":"Replay transcript by referencing an existing conversation ID."},"ReplayTranscriptFromText":{"properties":{"transcript":{"type":"string","title":"Transcript","description":"The transcript text to analyze and replay"},"success_criteria":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Success Criteria","description":"Success criteria for the scenario (auto-generated if not provided)"},"mode":{"type":"string","enum":["strict","smart","persona"],"title":"Mode","description":"Mode for transcript replay: 'strict', 'smart' (default), or 'persona'","default":"smart"}},"type":"object","required":["transcript"],"title":"Replay Transcript From Text","description":"Replay transcript by providing the transcript text directly."},"RerunSimulationResultsRequest":{"properties":{"simulation_id":{"type":"string","title":"Simulation Id","description":"ID of the simulation the test_results belong to"},"test_result_ids":{"items":{"type":"integer"},"type":"array","minItems":1,"title":"Test Result Ids","description":"IDs of existing test_results to rerun in their same simulation run."},"force":{"type":"boolean","title":"Force","description":"When True, bypass the simulation's rerun settings gates (enable_rerun_failed_test_results / enable_rerun_on_custom_error). Structural checks (retry cap, idempotency) still apply. Use for manual UI-triggered reruns.","default":false}},"type":"object","required":["simulation_id","test_result_ids"],"title":"RerunSimulationResultsRequest"},"RerunSimulationResultsResponse":{"properties":{"simulation_run_id":{"type":"string","title":"Simulation Run Id","description":"ID of the existing simulation run the reruns were added to"},"simulation_result_ids":{"items":{"type":"string"},"type":"array","title":"Simulation Result Ids","description":"IDs of the newly created rerun test_results"},"agent_id":{"type":"string","title":"Agent Id","description":"ID of the agent associated with the simulation run"},"status":{"type":"string","title":"Status","default":"success"}},"type":"object","required":["simulation_run_id","simulation_result_ids","agent_id"],"title":"RerunSimulationResultsResponse"},"ResolveReferencesRequest":{"properties":{"mentions":{"items":{"$ref":"#/components/schemas/MentionInput"},"type":"array","maxItems":100,"title":"Mentions"}},"type":"object","title":"ResolveReferencesRequest"},"ResolveReferencesResponse":{"properties":{"resolved":{"additionalProperties":{"additionalProperties":true,"type":"object"},"type":"object","title":"Resolved"},"unresolved":{"items":{"$ref":"#/components/schemas/UnresolvedMention"},"type":"array","title":"Unresolved"}},"type":"object","title":"ResolveReferencesResponse"},"ResolveToolResponseRequest":{"properties":{"test_result_id":{"type":"integer","title":"Test Result Id"},"tool_name":{"type":"string","title":"Tool Name"},"args":{"additionalProperties":true,"type":"object","title":"Args","default":{}}},"type":"object","required":["test_result_id","tool_name"],"title":"ResolveToolResponseRequest"},"ResolveToolResponseResponse":{"properties":{"output":{"additionalProperties":true,"type":"object","title":"Output"}},"type":"object","required":["output"],"title":"ResolveToolResponseResponse"},"RetrieveCallLogResponse":{"properties":{"call_log":{"$ref":"#/components/schemas/CallLog","description":"Details of the retrieved call log"},"status":{"type":"string","title":"Status","description":"Status of the response","default":"200"}},"type":"object","required":["call_log"],"title":"RetrieveCallLogResponse"},"RetrieveCallLogsResponse":{"properties":{"call_logs":{"items":{"$ref":"#/components/schemas/CallLog"},"type":"array","title":"Call Logs","description":"List of calls retrieved from the database"},"total_count":{"type":"integer","title":"Total Count","description":"Total number of calls for this agent"},"page":{"type":"integer","title":"Page","description":"Current page (1-based)"},"page_size":{"type":"integer","title":"Page Size","description":"Page size"},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages"}},"type":"object","required":["total_count","page","page_size","total_pages"],"title":"RetrieveCallLogsResponse"},"RunAutosyncRequest":{"properties":{"organization_id":{"type":"string","title":"Organization Id"},"provider":{"type":"string","title":"Provider"}},"type":"object","required":["organization_id","provider"],"title":"RunAutosyncRequest"},"RunScheduledSimulationRequest":{"properties":{"simulation_id":{"type":"string","title":"Simulation Id"},"uptime_check_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uptime Check Id"}},"type":"object","required":["simulation_id"],"title":"RunScheduledSimulationRequest"},"SaveWorkflowRequest":{"properties":{"workflow":{"additionalProperties":true,"type":"object","title":"Workflow","description":"Scenario-graph blob: {nodes: [{id, type, data}], edges: [{id, source, target, sourceHandle?}], is_ivr_flow?}"}},"type":"object","required":["workflow"],"title":"SaveWorkflowRequest"},"ScheduleWindow":{"properties":{"days":{"items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"type":"array","title":"Days","description":"Days to run on; empty means every day"},"start_time":{"anyOf":[{"type":"string","pattern":"^\\d{2}:\\d{2}$"},{"type":"null"}],"title":"Start Time","description":"HH:MM start of the daily window"},"end_time":{"anyOf":[{"type":"string","pattern":"^\\d{2}:\\d{2}$"},{"type":"null"}],"title":"End Time","description":"HH:MM end of the daily window"}},"type":"object","title":"ScheduleWindow","description":"Restricts a recurring schedule to certain days and/or a daily time range —\n\"Mondays and Fridays\", \"weekdays 9am-5pm\". Times are read in the schedule's timezone."},"ScriptedResponse":{"properties":{"match_type":{"$ref":"#/components/schemas/MatchType","description":"Type of match: 'exact' or 'context'"},"match_phrase":{"type":"string","title":"Match Phrase","description":"The phrase to match against"},"response_type":{"$ref":"#/components/schemas/src__models__digital_humans__enums__ResponseType","description":"Type of response: 'phrase', 'silence', 'dtmf', or 'audio'"},"response_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Response Value","description":"The response text (required for 'phrase' and 'dtmf', optional for 'silence', unused for 'audio')"},"scripted_response_audio_snippet_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scripted Response Audio Snippet Url","description":"Skywatch bucket path of an uploaded audio file. AUDIO rows only — the agent downloads and plays this verbatim."},"occurrence_mode":{"$ref":"#/components/schemas/OccurrenceMode","description":"When to apply: 'always' or 'first_n'"},"occurrence_n":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Occurrence N","description":"Number of times to apply (required if occurrence_mode is 'first_n', must be > 0)"},"silence_duration":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Silence Duration","description":"Duration in seconds for silence period (only used when response_type is 'silence', must be > 0 if provided)"}},"type":"object","required":["match_type","match_phrase","response_type","occurrence_mode"],"title":"ScriptedResponse","description":"Model for a scripted response configuration."},"SearchReferencesResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/SearchResultItem"},"type":"array","title":"Results"}},"type":"object","required":["results"],"title":"SearchReferencesResponse"},"SearchResultItem":{"properties":{"type":{"type":"string","title":"Type"},"id":{"title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["type","id","name"],"title":"SearchResultItem"},"SeedBbbRequest":{"properties":{"organization_id":{"type":"string","title":"Organization Id"}},"type":"object","required":["organization_id"],"title":"SeedBbbRequest"},"SendHttpTextMessageRequest":{"oneOf":[{"$ref":"#/components/schemas/HttpTextAgentUserMessageRequest"},{"$ref":"#/components/schemas/HttpTextAgentToolCallRequest"}],"title":"SendHttpTextMessageRequest","description":"Request wrapper that defaults missing ``type`` to ``message``.","discriminator":{"propertyName":"type","mapping":{"message":"#/components/schemas/HttpTextAgentUserMessageRequest","tool_call":"#/components/schemas/HttpTextAgentToolCallRequest"}}},"SetSimulationAlwaysOnRequest":{"properties":{"always_on":{"type":"boolean","title":"Always On","description":"when true, enable always-on for the simulation and all its digital humans; when false, disable"},"override_conflict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Override Conflict","description":"when true, deactivate always-on digital humans outside this simulation that share a phone number instead of returning 409","default":false}},"type":"object","required":["always_on"],"title":"SetSimulationAlwaysOnRequest","description":"request body for cascading always-on across a simulation's digital humans."},"SetSimulationAlwaysOnResponse":{"properties":{"simulation_id":{"type":"integer","title":"Simulation Id","description":"ID of the simulation"},"always_on":{"type":"boolean","title":"Always On","description":"resulting always-on state of the simulation"},"digital_humans_updated":{"type":"integer","title":"Digital Humans Updated","description":"number of digital humans whose always-on flags were updated"}},"type":"object","required":["simulation_id","always_on","digital_humans_updated"],"title":"SetSimulationAlwaysOnResponse","description":"response body for the simulation-level always-on cascade."},"SignupRequest":{"properties":{"payment_method_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Method Id","description":"Stripe payment method ID; omit to reuse the org's existing default card"},"package_id":{"type":"string","title":"Package Id","description":"Metronome Package ID"}},"type":"object","required":["package_id"],"title":"SignupRequest"},"SignupResponse":{"properties":{"success":{"type":"boolean","title":"Success","description":"Whether the signup was successful"},"message":{"type":"string","title":"Message","description":"Response message"},"effective_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Effective At","description":"When a scheduled plan change takes effect (ISO 8601); null means immediate"}},"type":"object","required":["success","message"],"title":"SignupResponse"},"SimpleInterruptionConfig":{"properties":{"type":{"type":"string","enum":["none","low","medium","high"],"title":"Type","description":"Interruption level: none, low, medium, or high"}},"type":"object","required":["type"],"title":"Default","description":"Simple interruption configuration with predefined levels."},"SimulationPydantic":{"properties":{"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"bluejay_as_code_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Bluejay As Code Id"},"agent_id":{"type":"integer","title":"Agent Id"},"name":{"type":"string","title":"Name"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"updated_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Updated By"},"created_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By"},"settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Settings"},"type":{"$ref":"#/components/schemas/SimulationType"},"max_concurrent":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Concurrent"},"max_turns":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Turns"},"ringing_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ringing Timeout"},"inactivity_timeout_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Inactivity Timeout Seconds"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Pinned"},"always_on":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Always On"}},"type":"object","required":["agent_id","name","type"],"title":"SimulationPydantic"},"SimulationRequest":{"properties":{"agent_id":{"type":"string","title":"Agent Id","description":"ID of the agent to be used in the simulation"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Name of the simulation"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of the simulation"},"prompt_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Prompt Id","description":"Optional default prompt UUID for this simulation"},"knowledge_base_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Knowledge Base Id","description":"Optional default knowledge base UUID for this simulation"},"max_concurrent":{"anyOf":[{"type":"integer","maximum":500.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"Max Concurrent","description":"Maximum number of concurrent calls in the simulation (max 500)"},"hangup_on_transfer":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Hangup On Transfer","description":"Whether to hang up the call on transfer","default":false},"max_call_duration":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Call Duration","description":"Maximum duration of each call (default is 10). Units specified by max_call_duration_units","default":10},"max_call_duration_units":{"anyOf":[{"type":"string","enum":["minutes","seconds"]},{"type":"null"}],"title":"Max Call Duration Units","description":"Units for max_call_duration: 'minutes' (default) or 'seconds'","default":"minutes"},"ringing_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ringing Timeout","description":"Ringing timeout in seconds for SIP trunks (default 300s)","default":300},"digital_humans_settings":{"anyOf":[{"$ref":"#/components/schemas/DigitalHumansSettings"},{"type":"null"}],"description":"Settings for digital humans in the simulation"},"selected_custom_metrics":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Selected Custom Metrics","description":"Custom metric IDs to enable for this simulation"},"custom_metrics_failing_threshold":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Custom Metrics Failing Threshold","description":"Score threshold below which a custom metric is considered failing (0-100)"},"custom_metrics_passing_threshold":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Custom Metrics Passing Threshold","description":"Score threshold at or above which a custom metric is considered passing (0-100)"},"runs_per_digital_human":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Runs Per Digital Human","description":"Number of simulation runs to execute per digital human (defaults to 1 when omitted)"},"delay_between_tests_seconds":{"anyOf":[{"type":"number","maximum":300.0,"minimum":0.0},{"type":"null"}],"title":"Delay Between Tests Seconds","description":"seconds to wait after a test completes before the next launches (0 = off)"},"inactivity_timeout_seconds":{"anyOf":[{"type":"integer","maximum":1800.0,"minimum":300.0},{"type":"null"}],"title":"Inactivity Timeout Seconds","description":"seconds to wait for an agent reply before ending a text conversation (300-1800 = 5-30 min); defaults to 300 when unset"},"always_on":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Always On","description":"When true, simulation has always-on digital humans configured","default":false}},"type":"object","required":["agent_id"],"title":"SimulationRequest","description":"Pydantic model for simulation request"},"SimulationRes":{"properties":{"id":{"type":"integer","title":"Id","description":"ID of the simulation"},"name":{"type":"string","title":"Name","description":"Name of the simulation"},"agent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Id","description":"ID of the agent associated with the simulation"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the simulation was created"},"settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Settings","description":"Settings of the simulation"},"selected_custom_metrics":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Selected Custom Metrics","description":"Custom metric IDs selected for this simulation (null means all agent metrics)"}},"type":"object","required":["id","name","created_at"],"title":"SimulationRes"},"SimulationResponse":{"properties":{"simulation_id":{"type":"integer","title":"Simulation Id","description":"ID of the created simulation"},"status":{"type":"string","title":"Status","description":"Status of the response","default":"200"}},"type":"object","required":["simulation_id"],"title":"SimulationResponse"},"SimulationResultResponse":{"properties":{"id":{"type":"integer","title":"Id","description":"ID of the simulation result"},"digital_human_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Digital Human Id","description":"ID of the digital human associated with the simulation result"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result","description":"Result of the simulation run"},"duration":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration","description":"Duration of the simulation run in milliseconds"},"start_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time","description":"Start time of the simulation run"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time","description":"End time of the simulation run"},"custom_metrics":{"anyOf":[{"additionalProperties":true,"type":"object"},{"items":{},"type":"array"},{"type":"null"}],"title":"Custom Metrics","description":"Custom metrics associated with the simulation result","deprecated":true},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","description":"Current status of the simulation result"},"latency":{"anyOf":[{"additionalProperties":true,"type":"object"},{"items":{},"type":"array"},{"type":"null"}],"title":"Latency","description":"Average latency of the simulation run"},"events":{"anyOf":[{"items":{"$ref":"#/components/schemas/Event"},"type":"array"},{"type":"null"}],"title":"Events","description":"Events of the simulation run"},"transcript_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transcript Url","description":"URL to the transcript file of the simulation run"},"audio_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Url","description":"URL to the audio file of the simulation run"},"evaluations":{"anyOf":[{"items":{"$ref":"#/components/schemas/Evaluation"},"type":"array"},{"type":"null"}],"title":"Evaluations","description":"Evaluations of the simulation result"},"tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolCallComparisonGroup"},"type":"array"},{"type":"null"}],"title":"Tool Calls","description":"Expected vs actual tool calls grouped by tool name"},"trace_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Trace Ids","description":"Trace IDs associated with this simulation result"},"metrics":{"anyOf":[{"items":{"$ref":"#/components/schemas/MetricResultItem"},"type":"array"},{"type":"null"}],"title":"Metrics","description":"All computed metric results for this conversation (builtin and custom), e.g. answer_latency, duration, avg_agent_latency"}},"type":"object","required":["id"],"title":"SimulationResultResponse"},"SimulationResultsResponse":{"properties":{"simulation_run":{"$ref":"#/components/schemas/SimulationRunResultResponse","description":"Details of the simulation run"},"simulation_results":{"anyOf":[{"items":{"$ref":"#/components/schemas/SimulationResultResponse"},"type":"array"},{"type":"null"}],"title":"Simulation Results","description":"List of results from the simulation run"},"status":{"type":"string","title":"Status","description":"Status of the response","default":"200"}},"type":"object","required":["simulation_run"],"title":"SimulationResultsResponse"},"SimulationRunRequestUsingBACId":{"properties":{"bluejay_as_code_id":{"type":"string","format":"uuid","title":"Bluejay As Code Id","description":"Bluejay-as-Code ID of the simulation to run"},"prompt_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Prompt Id","description":"Prompt UUID associated with this run"},"knowledge_base_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Knowledge Base Id","description":"Knowledge base UUID associated with this run"},"digital_human_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Digital Human Ids","description":"Digital human IDs to be used in the simulation"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number","description":"Optional phone number to be used in this simulation run (overrides the agent phone number)"},"sip_uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sip Uri","description":"Optional SIP URI to be used in this simulation run (overrides the agent SIP URI)"},"livekit_agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Livekit Agent Name","description":"Optional agent name to be used by user's livekit, an empty string will use the default agent"},"livekit_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Livekit Metadata","description":"metadata to be passed to the livekit room"},"pipecat_agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pipecat Agent Name","description":"Pipecat agent name"},"pipecat_agent_configuration":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pipecat Agent Configuration","description":"Pipecat agent configuration"},"pipecat_room_properties":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pipecat Room Properties","description":"Pipecat room properties"},"eleven_labs_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eleven Labs Agent Id","description":"Optional ElevenLabs Convai agent_id (overrides the agent's eleven_labs_agent_id for this run)"},"retell_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retell Agent Id","description":"Optional Retell agent_id (overrides the agent's retell_agent_id for this run)"},"vapi_assistant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vapi Assistant Id","description":"Optional Vapi assistant_id (overrides the agent's vapi_assistant_id for this run)"},"runs_per_digital_human":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Runs Per Digital Human","description":"Optional per-run override for how many test_results to spawn per selected digital human."}},"type":"object","required":["bluejay_as_code_id"],"title":"SimulationRunRequestUsingBACId","description":"Queue a simulation run using the simulation's bluejay_as_code_id."},"SimulationRunRes":{"properties":{"id":{"type":"integer","title":"Id","description":"ID of the simulation run"},"experiment_id":{"type":"integer","title":"Experiment Id","description":"ID of the simulation associated with the run"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary","description":"Summary of the simulation run"},"tests_passed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tests Passed","description":"Number of tests that passed in the simulation run"},"tests_failed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tests Failed","description":"Status-level failure count (dropped calls, infra errors) - NOT eval-grade failures. See eval_failed for that."},"total_tests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Tests","description":"Total number of tests in the simulation run"},"tests_completed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tests Completed","description":"Number of tests that were completed in the simulation run"},"curr_step_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Curr Step Id","description":"Current step ID of the simulation run"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the simulation run was created"},"status":{"$ref":"#/components/schemas/SimulationRunStatus","description":"Current status of the simulation run"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number","description":"Phone number of the simulation run"},"eval_failed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Eval Failed","description":"Eval-grade failure count (tests_completed - tests_passed) - what most consumers mean by 'failed'. tests_failed only counts status-level failures.","readOnly":true}},"type":"object","required":["id","experiment_id","created_at","status","eval_failed"],"title":"SimulationRunRes"},"SimulationRunResultResponse":{"properties":{"id":{"type":"string","title":"Id","description":"ID of the simulation run"},"simulation_id":{"type":"string","title":"Simulation Id","description":"ID of the simulation associated with the run"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary","description":"Summary of the simulation run"},"status":{"anyOf":[{"$ref":"#/components/schemas/SimulationRunStatus"},{"type":"null"}],"description":"Current status of the simulation run"},"total_tests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Tests","description":"Total number of tests in the simulation run"},"tests_passed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tests Passed","description":"Number of tests that passed in the simulation run"},"tests_failed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tests Failed","description":"Status-level failure count (dropped calls, infra errors) - NOT eval-grade failures. See eval_failed for that."},"tests_completed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tests Completed","description":"Number of tests that were completed in the simulation run"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the simulation run was created"},"eval_failed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Eval Failed","description":"Eval-grade failure count (tests_completed - tests_passed) - what most consumers mean by 'failed'. tests_failed only counts status-level failures.","readOnly":true}},"type":"object","required":["id","simulation_id","created_at","eval_failed"],"title":"SimulationRunResultResponse"},"SimulationRunStatus":{"type":"string","enum":["RUNNING","COMPLETED"],"title":"SimulationRunStatus","description":"Enum representing the possible states of a simulation run.\n\nThe taxonomy is intentionally minimal: a sim_run is either in-flight\n(RUNNING) or terminal (COMPLETED). The pass/fail/cancel distinction lives\nentirely on child test_result counters and statuses, not on sim_run.\n\nSee livekit_agent/docs/test_result_status_redesign.md §2.2 for the full taxonomy."},"SimulationType":{"type":"string","enum":["max_concurrent","parallel"],"title":"SimulationType"},"SingleSimulationResultResponse":{"properties":{"simulation_result":{"$ref":"#/components/schemas/SimulationResultResponse","description":"The requested simulation result"},"status":{"type":"string","title":"Status","description":"Status of the response","default":"200"}},"type":"object","required":["simulation_result"],"title":"SingleSimulationResultResponse"},"SmsEnabledPhoneNumbersResponse":{"properties":{"numbers":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Numbers","description":"E.164 phone number -> True when the number can send and receive SMS"}},"type":"object","required":["numbers"],"title":"SmsEnabledPhoneNumbersResponse","description":"Response schema mapping each of the org's numbers to whether it can text."},"SmsTestingRequestBody":{"properties":{"message_details":{"type":"string","title":"Message Details","description":"Free-text description of the message types/use-cases to send"},"monthly_volume":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Monthly Volume"}},"type":"object","required":["message_details"],"title":"SmsTestingRequestBody"},"SmsTestingRequestResponse":{"properties":{"id":{"type":"string","title":"Id"},"status":{"type":"string","title":"Status"}},"type":"object","required":["id","status"],"title":"SmsTestingRequestResponse"},"SmsTestingReviewBody":{"properties":{"status":{"type":"string","title":"Status","description":"approved | rejected"},"review_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Notes"}},"type":"object","required":["status"],"title":"SmsTestingReviewBody"},"SmsTestingStatusResponse":{"properties":{"allowed":{"type":"boolean","title":"Allowed"},"enabled":{"type":"boolean","title":"Enabled"},"request_status":{"type":"string","title":"Request Status","description":"none | pending | approved | rejected"}},"type":"object","required":["allowed","enabled","request_status"],"title":"SmsTestingStatusResponse"},"SocialEngineeringRedTeamConfig":{"properties":{"batches":{"items":{"$ref":"#/components/schemas/AttackBatch"},"type":"array","title":"Batches"}},"type":"object","title":"SocialEngineeringRedTeamConfig"},"SourceScope":{"type":"string","enum":["all","observability","simulation"],"title":"SourceScope","description":"Allowed data source scope for when an alert fires: all, observability only, or simulation only."},"SpeaksFirstConfig":{"properties":{"speaks_first":{"type":"boolean","title":"Speaks First","description":"Whether the digital human speaks first in the call"},"mode":{"anyOf":[{"type":"string","enum":["custom","ai_generated"]},{"type":"null"}],"title":"Mode","description":"When speaks_first is true: 'custom' (user-provided message) or 'ai_generated' (no message)"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","description":"When mode is 'custom', the message the digital human says first"},"dynamic":{"type":"boolean","title":"Dynamic","description":"When speaks_first is true: wait up to 5s for the agent to open; speak first only if it stays quiet. Defaults on, so configs saved before this field existed become dynamic","default":true}},"type":"object","required":["speaks_first"],"title":"SpeaksFirstConfig","description":"Configuration for whether the digital human speaks first and how.\nStored as JSONB in Supabase (speaks_first_config)."},"StartContractRequest":{"properties":{"payment_method_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Method Id","description":"Stripe payment method ID; omit to reuse the org's existing default card"}},"type":"object","title":"StartContractRequest"},"StartSelfImproveRequest":{"properties":{"agent_id":{"type":"integer","title":"Agent Id","description":"VAPI agent to self-improve in place (prompt iterated; one new 'latest' version written at the end)."},"simulation_id":{"type":"integer","title":"Simulation Id","description":"Simulation (digital humans + metrics) to run each round against the agent."},"target_pass_rate":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Target Pass Rate","default":0.9},"max_iterations":{"type":"integer","maximum":20.0,"minimum":1.0,"title":"Max Iterations","default":5},"min_improvement":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Min Improvement","description":"Minimum pass-rate gain to keep an iteration; non-negative so worse prompts are never kept.","default":0.02},"metric_count":{"type":"integer","maximum":20.0,"minimum":1.0,"title":"Metric Count","default":5},"success_metric_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Success Metric Ids","description":"Reuse these metrics instead of generating new ones."},"confirmed":{"type":"boolean","title":"Confirmed","default":false}},"type":"object","required":["agent_id","simulation_id"],"title":"StartSelfImproveRequest"},"StartSimulationRequest":{"properties":{"agent_id":{"type":"integer","title":"Agent Id","description":"Target agent to red-team."},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config","description":"Overrides for max_levels/max_branches_per_node/max_total_dhs/max_call_duration_minutes/recon_count/objective/extension/harm_categories/harm_first. Clamped to the mandatory ceilings. Content-safety probes run by default; pass harm_categories=[] for an OWASP-only test."},"confirmed":{"type":"boolean","title":"Confirmed","default":false}},"type":"object","required":["agent_id"],"title":"StartSimulationRequest"},"StartTrialRequest":{"properties":{"payment_method_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Method Id","description":"Optional Stripe payment method ID; trial can start without a card"}},"type":"object","title":"StartTrialRequest"},"SubmitExtractionRequest":{"properties":{"s3_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"S3 Key","description":"Key returned by POST /workflow-extraction/uploads"},"input_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Url","description":"Presigned GET URL of the document"},"correlation_id":{"type":"string","minLength":1,"title":"Correlation Id","description":"Caller's correlation id (e.g. upload id), echoed back"}},"type":"object","required":["correlation_id"],"title":"SubmitExtractionRequest","description":"Start extraction for a document, referenced either by the s3 key of a\nchat upload (preferred — the URL is presigned here) or by a caller-supplied\npresigned https URL."},"SyncBlandAgentsRequest":{"properties":{"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"dry_run":{"type":"boolean","title":"Dry Run","default":true}},"type":"object","title":"SyncBlandAgentsRequest"},"SyncElevenLabsAgentsRequest":{"properties":{"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"dry_run":{"type":"boolean","title":"Dry Run","default":true}},"type":"object","title":"SyncElevenLabsAgentsRequest"},"SyncRetellAgentsRequest":{"properties":{"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"dry_run":{"type":"boolean","title":"Dry Run","default":true}},"type":"object","title":"SyncRetellAgentsRequest"},"SyncSingleAgentFromElevenLabsRequest":{"properties":{"agent_id":{"type":"integer","title":"Agent Id"}},"type":"object","required":["agent_id"],"title":"SyncSingleAgentFromElevenLabsRequest"},"SyncSingleAgentFromRetellRequest":{"properties":{"agent_id":{"type":"integer","title":"Agent Id"}},"type":"object","required":["agent_id"],"title":"SyncSingleAgentFromRetellRequest"},"SyncSingleAgentFromVapiRequest":{"properties":{"agent_id":{"type":"integer","title":"Agent Id"}},"type":"object","required":["agent_id"],"title":"SyncSingleAgentFromVapiRequest"},"SyncVapiAgentsRequest":{"properties":{"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"dry_run":{"type":"boolean","title":"Dry Run","default":true}},"type":"object","title":"SyncVapiAgentsRequest"},"TemplateListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/TemplateResponse"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["data","total","page","page_size"],"title":"TemplateListResponse"},"TemplateResponse":{"properties":{"id":{"type":"string","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"name":{"type":"string","title":"Name"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"metric_type":{"type":"string","title":"Metric Type","default":"llm_judge"},"eval_method":{"type":"string","title":"Eval Method","default":"llm_judge"},"eval_segment":{"type":"string","title":"Eval Segment","default":"all"},"scope":{"type":"string","title":"Scope","default":"all"},"settings":{"additionalProperties":true,"type":"object","title":"Settings"},"response_type":{"$ref":"#/components/schemas/src__models__metric__ResponseType"},"min_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Value"},"max_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Value"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"scoring_guidance":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scoring Guidance"},"eval_modality":{"anyOf":[{"$ref":"#/components/schemas/EvalRoute"},{"type":"null"}]},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"audio_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Model"},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature"},"enum_options":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enum Options"},"tool_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tool Names"},"json_schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Json Schema"},"allow_not_applicable":{"type":"boolean","title":"Allow Not Applicable","default":false}},"type":"object","required":["id","created_at","name","response_type"],"title":"TemplateResponse","description":"Public library view of a Bluejay-authored template."},"TestNotificationRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Alert name shown in the notification"},"notification_channels":{"items":{"$ref":"#/components/schemas/NotificationChannelRequest"},"type":"array","minItems":1,"title":"Notification Channels","description":"Channels to send the test to"},"alert_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alert Id","description":"Existing alert id, so the notification links back to it"}},"type":"object","required":["name","notification_channels"],"title":"TestNotificationRequest","description":"Request model for sending a test alert notification."},"TestNotificationResponse":{"properties":{"queued":{"type":"integer","title":"Queued","description":"Number of notification messages enqueued"}},"type":"object","required":["queued"],"title":"TestNotificationResponse"},"TextDocumentRequest":{"properties":{"kind":{"type":"string","const":"text","title":"Kind","default":"text"},"knowledge_base_id":{"type":"string","format":"uuid","title":"Knowledge Base Id"},"name":{"type":"string","title":"Name"},"content":{"type":"string","title":"Content"}},"type":"object","required":["knowledge_base_id","name","content"],"title":"TextDocumentRequest"},"TextProcessorRequest":{"properties":{"redis_key":{"type":"string","title":"Redis Key","description":"redis key for conversation history"},"test_case_id":{"type":"string","title":"Test Case Id","description":"ID of the test case"},"response_format":{"type":"string","enum":["chirp","text"],"title":"Response Format","description":"response format","default":"chirp"}},"type":"object","required":["redis_key","test_case_id"],"title":"TextProcessorRequest","description":"Pydantic model for text processor request body"},"ToolCallComparisonGroup":{"properties":{"name":{"type":"string","title":"Name","description":"Tool name"},"expected":{"items":{"$ref":"#/components/schemas/ExpectedToolCallDetail"},"type":"array","title":"Expected","description":"Expected invocations of this tool"},"actual":{"items":{"$ref":"#/components/schemas/ActualToolCallDetail"},"type":"array","title":"Actual","description":"Actual invocations of this tool during the simulation"}},"type":"object","required":["name"],"title":"ToolCallComparisonGroup"},"ToolCallData":{"properties":{"name":{"type":"string","title":"Name"},"start_offset_ms":{"type":"integer","title":"Start Offset Ms"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters"},"output":{"anyOf":[{},{"type":"null"}],"title":"Output"}},"type":"object","required":["name","start_offset_ms"],"title":"ToolCallData","description":"Tool call as stored on calls, jobs, and test results (API and database)."},"Trait-Output":{"properties":{"trait_name":{"type":"string","title":"Trait Name","description":"Name of the trait"},"trait_data_type":{"$ref":"#/components/schemas/TraitDataType","description":"Data type of the trait"},"value":{"title":"Value","description":"Value of the trait (stored as JSONB)"},"is_sip_header":{"type":"boolean","title":"Is Sip Header","description":"Whether this trait is a SIP header","default":false}},"type":"object","required":["trait_name","trait_data_type","value"],"title":"Trait","description":"Model for a single trait."},"TraitDataType":{"type":"string","enum":["BOOLEAN","STRING","DATE","NUMBER"],"title":"TraitDataType","description":"Enum for trait data types."},"TraitInput":{"properties":{"name":{"type":"string","title":"Name","description":"Name of the trait"},"data_type":{"$ref":"#/components/schemas/TraitDataType","description":"Data type of the trait (BOOLEAN, STRING, NUMBER, DATE)"}},"type":"object","required":["name","data_type"],"title":"TraitInput","description":"One trait to generate values for."},"TranscriptEntry":{"properties":{"start_offset_ms":{"type":"integer","title":"Start Offset Ms"},"end_offset_ms":{"type":"integer","title":"End Offset Ms"},"speaker":{"type":"string","title":"Speaker"},"utterance":{"type":"string","title":"Utterance"},"filler_utterance":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Filler Utterance"}},"type":"object","required":["start_offset_ms","end_offset_ms","speaker","utterance"],"title":"TranscriptEntry"},"TranscriptEntryRequest":{"properties":{"start_offset_ms":{"type":"integer","title":"Start Offset Ms","description":"Start offset of the utterance in milliseconds"},"end_offset_ms":{"type":"integer","title":"End Offset Ms","description":"End offset of the utterance in milliseconds"},"speaker":{"$ref":"#/components/schemas/ParticipantRole","description":"Identifier for the speaker (e.g., 'AGENT', 'USER')"},"utterance":{"type":"string","title":"Utterance","description":"Transcribed text of the utterance"},"filler_utterance":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Filler Utterance","description":"Whether the utterance is a filler utterance"}},"type":"object","required":["start_offset_ms","end_offset_ms","speaker","utterance"],"title":"TranscriptEntryRequest"},"TranslateObservabilityTranscriptRequest":{"properties":{"conversation_id":{"type":"string","title":"Conversation Id","description":"ID of the production conversation (call_id) to translate"},"target_language":{"type":"string","maxLength":10,"minLength":2,"title":"Target Language","description":"Target language code (e.g., 'en', 'es', 'fr', 'de'). Defaults to 'en' (English).","default":"en"}},"type":"object","required":["conversation_id"],"title":"Translate Observability Transcript","description":"Translate a production conversation transcript by providing the conversation ID"},"TranslateSimulationTranscriptRequest":{"properties":{"simulation_result_id":{"type":"integer","title":"Simulation Result Id","description":"ID of the simulation result (test_result) to translate"},"target_language":{"type":"string","maxLength":10,"minLength":2,"title":"Target Language","description":"Target language code (e.g., 'en', 'es', 'fr', 'de'). Defaults to 'en' (English).","default":"en"}},"type":"object","required":["simulation_result_id"],"title":"Translate Simulation Transcript","description":"Translate a simulation transcript by providing the simulation result ID"},"TranslateTranscriptResponse":{"properties":{"translated_transcript_url":{"type":"string","title":"Translated Transcript Url","description":"URL to the translated transcript file"},"target_language":{"type":"string","title":"Target Language","description":"The target language used for translation"},"success":{"type":"boolean","title":"Success","description":"Whether the translation was successful","default":true}},"type":"object","required":["translated_transcript_url","target_language"],"title":"TranslateTranscriptResponse","description":"Response model for translated transcript."},"UnresolvedMention":{"properties":{"type":{"type":"string","title":"Type"},"id":{"title":"Id"},"reason":{"type":"string","title":"Reason"}},"type":"object","required":["type","id","reason"],"title":"UnresolvedMention"},"UpdateAlertRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Name of the alert"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of the alert"},"is_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Enabled","description":"Whether the alert is enabled"},"entity_type":{"anyOf":[{"$ref":"#/components/schemas/EntityType"},{"type":"null"}],"description":"Type of entity being monitored"},"entity_field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Field","description":"The specific field/metric being monitored"},"operator":{"anyOf":[{"$ref":"#/components/schemas/Operator"},{"type":"null"}],"description":"Comparison operator"},"comparison_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comparison Value","description":"Value to compare against"},"notification_channels":{"anyOf":[{"items":{"$ref":"#/components/schemas/NotificationChannelRequest"},"type":"array"},{"type":"null"}],"title":"Notification Channels","description":"Notification channels configuration"},"applies_to_all_agents":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Applies To All Agents","description":"Whether the alert applies to all agents"},"agent_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Agent Ids","description":"Agent IDs to associate with this alert"},"simulation_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Simulation Id","description":"Optional experiments.id (simulation) to scope simulation alerts to. Set to null to clear and make the alert agent-scoped."},"evaluation_scope":{"anyOf":[{"type":"string","enum":["per_test_result","per_simulation_run","per_simulation_run_window"]},{"type":"null"}],"title":"Evaluation Scope","description":"How this alert is evaluated. Only 'per_simulation_run' is supported."},"aggregation":{"anyOf":[{"type":"string","enum":["none","avg","max","min","count"]},{"type":"null"}],"title":"Aggregation","description":"Aggregation mode used to compute the per-run metric value from test results within the run."},"threshold_time_interval":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Threshold Time Interval","description":"Number of recent completed runs (K). Alert fires if all K runs individually met the condition."},"min_events":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Events","description":"Minimum number of events to trigger the alert"},"min_events_type":{"anyOf":[{"$ref":"#/components/schemas/MinEventsType"},{"type":"null"}],"description":"Whether min_events is an absolute count ('events') or a percentage ('percentage')"},"source_scope":{"anyOf":[{"$ref":"#/components/schemas/SourceScope"},{"type":"null"}],"description":"Which data source fires this alert: 'all', 'observability', or 'simulation'"}},"type":"object","title":"UpdateAlertRequest","description":"Request model for updating an alert"},"UpdateCommunityRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title","description":"Title of the community"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of the community"},"digital_human_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Digital Human Ids","description":"List of digital human (test case) IDs to associate this community with (replaces existing associations)"}},"type":"object","title":"UpdateCommunityRequest"},"UpdateCronJobRequest":{"properties":{"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone the cron expression is read in. Null means UTC."},"schedule":{"anyOf":[{"$ref":"#/components/schemas/EveryNMinutesSchedule"},{"$ref":"#/components/schemas/EveryNHoursSchedule"},{"$ref":"#/components/schemas/DailySchedule"},{"$ref":"#/components/schemas/WeeklySchedule"},{"$ref":"#/components/schemas/MonthlySchedule"},{"$ref":"#/components/schemas/CronSchedule"},{"type":"null"}],"title":"Schedule","description":"The new schedule for the cron job."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Whether to enable or disable the cron job."}},"type":"object","title":"UpdateCronJobRequest"},"UpdateCronJobResponse":{"properties":{"id":{"type":"string","title":"Id","description":"The unique identifier for the updated cron job."},"simulation_id":{"type":"string","title":"Simulation Id","description":"The unique identifier for the associated simulation."},"cron_expression":{"type":"string","title":"Cron Expression","description":"The cron expression defining the job schedule."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Whether the cron job is enabled."},"created_at":{"type":"string","title":"Created At","description":"The timestamp when the cron job was created."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone the cron expression is read in. Null means UTC."}},"type":"object","required":["id","simulation_id","cron_expression","created_at"],"title":"UpdateCronJobResponse"},"UpdateCustomBackgroundNoiseRequest":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"UpdateCustomBackgroundNoiseRequest"},"UpdateCustomerPersonaRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Name of the customer persona"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of the customer persona"},"goal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Goal","description":"Goal of the customer persona"}},"type":"object","title":"UpdateCustomerPersonaRequest"},"UpdateCustomerTraitRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Name of the trait"},"data_type":{"anyOf":[{"$ref":"#/components/schemas/TraitDataType"},{"type":"null"}],"description":"Data type of the trait"},"default_value":{"anyOf":[{},{"type":"null"}],"title":"Default Value","description":"Default value for this trait (will be converted based on data_type)"},"sync_existing":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Sync Existing","description":"If True, sync changes to existing digital humans' customer_trait_values records","default":false}},"type":"object","title":"UpdateCustomerTraitRequest","description":"Request model for updating a customer trait definition."},"UpdateDashboardBody":{"properties":{"name":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Empty string clears the description"}},"type":"object","title":"UpdateDashboardBody"},"UpdateDigitalHumanRequest":{"properties":{"intent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Intent","description":"Description of the digital human"},"success_criteria":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Success Criteria","description":"Success criteria for the digital human"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Name of the digital human"},"tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tag","description":"Tag for categorizing the digital human"},"language":{"anyOf":[{"$ref":"#/components/schemas/LanguageType"},{"type":"null"}],"description":"Language the digital human speaks"},"accent":{"anyOf":[{"$ref":"#/components/schemas/AccentType"},{"type":"null"}],"description":"Accent of the digital human"},"gender":{"anyOf":[{"$ref":"#/components/schemas/GenderType"},{"type":"null"}],"description":"Gender of the digital human"},"custom_voice_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Voice Id","description":"ElevenLabs voice_id of a cloned voice. Send empty string or null to clear and revert to the stock accent voice."},"background_noise":{"anyOf":[{"$ref":"#/components/schemas/BackgroundNoiseType"},{"type":"null"}],"description":"Type of background noise"},"custom_background_noise_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Background Noise Url","description":"Bucket-relative path of the uploaded custom background noise audio; required when background_noise is 'custom'"},"voice_speed":{"anyOf":[{"$ref":"#/components/schemas/VoiceSpeedType"},{"type":"null"}],"description":"Speed of the digital human's voice"},"audio_quality":{"anyOf":[{"$ref":"#/components/schemas/AudioQualityType"},{"type":"null"}],"description":"Audio quality of the digital human's voice"},"fluency":{"anyOf":[{"$ref":"#/components/schemas/FluencyType"},{"type":"null"}],"description":"Fluency level of the digital human's speech"},"verbosity":{"anyOf":[{"$ref":"#/components/schemas/VerbosityType"},{"type":"null"}],"description":"Verbosity level of the digital human's responses"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number","description":"Phone number for the digital human"},"extension":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Extension","description":"Extension dialed as DTMF after connecting when this DH calls an inbound agent. Send null or an empty string to clear it."},"outbound_text_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outbound Text Number","description":"Outbound text number"},"follow_up_sms_success_criteria":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Follow Up Sms Success Criteria","description":"Criteria the captured follow-up SMS is graded against"},"background_noise_volume":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Background Noise Volume","description":"Volume of background noise"},"expected_tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ExpectedToolCall"},"type":"array"},{"type":"null"}],"title":"Expected Tool Calls","description":"Expected tool call outputs"},"allow_end_call_tool":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow End Call Tool","description":"Allow the digital human to end the tool call"},"allow_silence_tool":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow Silence Tool","description":"Allow the digital human to use the silence tool"},"allow_dtmf_tool":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow Dtmf Tool","description":"Allow the digital human to use the DTMF tool"},"default_dtmf_or_voiced":{"anyOf":[{"$ref":"#/components/schemas/DtmfOrVoicedType"},{"type":"null"}],"description":"Controls whether the agent submits numerical values via DTMF or voice. 'voiced' = speak numbers (default), 'dtmf' = use DTMF tones for eligible numerical inputs"},"silence_tool_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Silence Tool Instructions","description":"Tool instructions; set to \"default\" for built-in behavior or custom text"},"endpointing_delay":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Endpointing Delay","description":"Delay for endpointing"},"creativity":{"anyOf":[{"type":"number","maximum":2.0,"minimum":0.0},{"type":"null"}],"title":"Creativity","description":"How creative the digital human is (Model temperature)"},"hangup_phrases":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Hangup Phrases","description":"Phrases that trigger hangup"},"hangup_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hangup Instructions","description":"Freeform instructions for how/when to hang up"},"silence_timeout":{"anyOf":[{"type":"integer","minimum":15.0},{"type":"null"}],"title":"Silence Timeout","description":"Silence timeout in seconds"},"simulation_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Simulation Ids","description":"Array of simulation IDs to associate with this digital human. If provided, completely replaces existing associations."},"traits":{"anyOf":[{"items":{"$ref":"#/components/schemas/src__models__traits__trait__Trait"},"type":"array"},{"type":"null"}],"title":"Traits","description":"List of traits associated with this digital human. If provided, completely replaces existing traits."},"interruptions":{"anyOf":[{"$ref":"#/components/schemas/SimpleInterruptionConfig"},{"$ref":"#/components/schemas/KeywordsInterruptionConfig"},{"$ref":"#/components/schemas/ContextualInterruptionConfig"},{"type":"null"}],"title":"Interruptions","description":"Interruption configuration for the digital human. If provided, completely replaces existing interruption config."},"scripted_responses":{"anyOf":[{"items":{"$ref":"#/components/schemas/ScriptedResponse"},"type":"array"},{"type":"null"}],"title":"Scripted Responses","description":"List of scripted responses for the digital human. If provided, completely replaces existing scripted responses."},"scripted_responses_ordered":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Scripted Responses Ordered","description":"When true, scripted_responses run as a script in list order: only the next unfired one is armed, each fires once, and a blank match_phrase fires on the digital human's next turn. When false any scripted response fires whenever its match_phrase comes up."},"role_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role Description","description":"Description of the role for the digital human"},"speaks_first_config":{"anyOf":[{"$ref":"#/components/schemas/SpeaksFirstConfig"},{"type":"null"}],"description":"Speaks first configuration for the digital human. If provided, completely replaces existing speaks first config."},"original_transcript":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Transcript","description":"Original transcript text. If changed from the current value, utterances are re-extracted and the intent is regenerated."},"formatted_transcript":{"anyOf":[{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array"},{"type":"null"}],"title":"Formatted Transcript","description":"Pre-computed structured transcript as [{role, utterance}]. When provided alongside original_transcript, skips the LLM formatting call."},"enriched_playback":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Enriched Playback","description":"Optional enriched playback stored as JSONB: a list of turn objects"},"num_runs":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Num Runs","description":"Number of times this digital human is run per simulation run (run count)."},"livekit_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Livekit Metadata","description":"LiveKit-specific configuration and metadata for this digital human. If provided, completely replaces existing metadata."},"always_on_mode":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Always On Mode","description":"Whether always-on mode is enabled for this digital human"},"always_on_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Always On Active","description":"When true, this DH actively receives calls on phone_number; when false, number is assigned but inactive"},"test_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Test Name","description":"User-facing label for this digital human"},"journey_steps":{"anyOf":[{"items":{"$ref":"#/components/schemas/JourneyStep"},"type":"array"},{"type":"null"}],"title":"Journey Steps","description":"Ordered journey steps. If provided, completely replaces existing journey steps."},"override_conflict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Override Conflict","description":"When true, allows activation to replace an existing always-on active DH using the same phone number.","default":false}},"type":"object","title":"UpdateDigitalHumanRequest","description":"Request model for updating a digital human — only provided fields are changed.\n\nEvery field must default to None: a non-None default gets filled in by Pydantic\non partial payloads and silently overwrites the stored value on every update\n(MCP, bluejay-as-code, and FE bulk edits all send partial payloads)."},"UpdateDocumentContentRequest":{"properties":{"content":{"type":"string","title":"Content"}},"type":"object","required":["content"],"title":"UpdateDocumentContentRequest"},"UpdateIssueBody":{"properties":{"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","description":"open, in_progress, resolved or ignored"},"priority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Priority","description":"low, medium, high or urgent. null leaves it untriaged."},"assignee_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Assignee Id","description":"a user in your organization. null unassigns."},"due_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Due Date","description":"YYYY-MM-DD. null removes the date."}},"type":"object","title":"UpdateIssueBody","description":"Send a field to set it, send it as null to unset it. Anything you leave out is untouched."},"UpdateKnowledgeBaseRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","title":"UpdateKnowledgeBaseRequest"},"UpdateLabRequest":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name","description":"New name for the lab"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"New description for the lab"}},"type":"object","title":"UpdateLabRequest","description":"Request model for updating a lab"},"UpdateLabSettingsRequest":{"properties":{"fuzzy_alignment":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Fuzzy Alignment","description":"Fuzzy alignment settings (nested object)"}},"additionalProperties":true,"type":"object","title":"UpdateLabSettingsRequest","description":"Request model for updating lab settings"},"UpdateLabSettingsResponse":{"properties":{"success":{"type":"boolean","title":"Success","description":"Indicates if the operation was successful"},"message":{"type":"string","title":"Message","description":"A descriptive message about the operation"}},"type":"object","required":["success","message"],"title":"UpdateLabSettingsResponse","description":"Response model for updating lab settings"},"UpdateLabelBody":{"properties":{"label_text":{"type":"string","title":"Label Text","description":"new text for the label"}},"type":"object","required":["label_text"],"title":"UpdateLabelBody"},"UpdateLayoutBody":{"properties":{"layouts":{"items":{"$ref":"#/components/schemas/LayoutItem"},"type":"array","title":"Layouts","description":"Layout per widget already linked to the dashboard"}},"type":"object","required":["layouts"],"title":"UpdateLayoutBody"},"UpdateMetricRequest":{"properties":{"bluejay_as_code_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bluejay As Code Id","description":"Stable code-addressable identifier"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Name of the custom metric"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","description":"LLM-judge system prompt for this metric (legacy alias: description)"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary","description":"Short plain-English description of the metric (LLM-generated)"},"metric_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metric Type","description":"Specific metric kind (llm_judge, tool_call, audio_*, vocal_fry); legacy alias: type"},"settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Settings","description":"Type-specific config (e.g. tool_call: {tool_names: [...]})"},"eval_segment":{"anyOf":[{"type":"string","enum":["agent","user","all"]},{"type":"null"}],"title":"Eval Segment","description":"Which side of the conversation is evaluated"},"scope":{"anyOf":[{"type":"string","enum":["observability","simulations","all"]},{"type":"null"}],"title":"Scope","description":"Which pipeline runs this metric"},"response_type":{"anyOf":[{"$ref":"#/components/schemas/src__models__metric__ResponseType"},{"type":"null"}],"description":"Type of response expected"},"agent_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Agent Ids","description":"List of agent IDs to associate this metric with (replaces existing associations)"},"min_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Value","description":"Minimum value for quantitative metrics"},"max_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Value","description":"Maximum value for quantitative metrics"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","description":"Category for organizing metrics"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Tags for categorizing the metric"},"scoring_guidance":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scoring Guidance","description":"Guidance on how to score this metric"},"eval_modality":{"anyOf":[{"$ref":"#/components/schemas/EvalRoute"},{"type":"null"}],"description":"Evaluation modality AUTO/TEXT/AUDIO; legacy alias: eval_route"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model to use for text evaluation of the metric"},"audio_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Model","description":"Model to use for audio evaluation of the metric"},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature for evaluating the metric"},"enum_options":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enum Options","description":"Options for enum metrics"},"tool_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tool Names","description":"Expected tool names for tool_call metrics"},"json_schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Json Schema","description":"JSON Schema describing the object the judge must return (required for json metrics)"},"allow_not_applicable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow Not Applicable","description":"Whether this metric allows 'not applicable' responses."}},"type":"object","title":"UpdateMetricRequest","description":"Request model for updating a custom metric"},"UpdateMetricSettingsRequest":{"properties":{"settings":{"items":{"$ref":"#/components/schemas/MetricSettingEntry"},"type":"array","maxItems":200,"minItems":1,"title":"Settings"}},"type":"object","required":["settings"],"title":"UpdateMetricSettingsRequest"},"UpdateSimulationResponse":{"properties":{"status":{"type":"string","title":"Status","description":"Status of the response","default":"success"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","description":"Optional message providing additional information about the response"}},"type":"object","title":"UpdateSimulationResponse"},"UpdateUptimeMonitorRequest":{"properties":{"agent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Id"},"frequency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Frequency"},"active_window":{"anyOf":[{"$ref":"#/components/schemas/ActiveWindow"},{"type":"null"}],"description":"Days/hours the monitor may run, e.g. {\"days\": [\"monday\"], \"start_time\": \"09:00\", \"end_time\": \"17:00\", \"timezone\": \"America/Los_Angeles\"}. Null runs it around the clock."},"checks":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Checks"},"notifications":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Notifications"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"start_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start At","description":"ISO 8601 first-check time; defaults to now()."}},"type":"object","title":"UpdateUptimeMonitorRequest"},"UpdateWidgetBody":{"properties":{"name":{"type":"string","minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"chart_type":{"type":"string","enum":["line","bar","pie","table","kpi","pivot_table","histogram"],"title":"Chart Type"},"chart_mode":{"anyOf":[{"type":"string","enum":["time_series","categorical"]},{"type":"null"}],"title":"Chart Mode"},"bar_mode":{"anyOf":[{"type":"string","enum":["stacked","side_by_side"]},{"type":"null"}],"title":"Bar Mode"},"aggregation":{"items":{"type":"string","enum":["count","average","sum","percent_of_total","p50","p90","p95","p99","percentiles","breakdown","distribution"]},"type":"array","title":"Aggregation"},"time_bucket":{"anyOf":[{"type":"string","enum":["hour","day","week","month"]},{"type":"null"}],"title":"Time Bucket"},"group_by":{"anyOf":[{"type":"string","enum":["agent","labels","tool_call","age","gender","simulation"]},{"type":"string","pattern":"^metadata:[A-Za-z0-9_-]+(\\.[A-Za-z0-9_-]+)*$"},{"type":"null"}],"title":"Group By"},"simulation_ids":{"items":{"type":"integer"},"type":"array","title":"Simulation Ids"},"show_indeterminate":{"type":"boolean","title":"Show Indeterminate","default":false},"filters":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Filters"},"column_visibility":{"anyOf":[{"additionalProperties":{"type":"boolean"},"type":"object"},{"type":"null"}],"title":"Column Visibility"},"color_overrides":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Color Overrides"},"center_label":{"anyOf":[{"$ref":"#/components/schemas/WidgetCenterLabelModel"},{"type":"null"}]},"show_legend":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Show Legend"},"metrics":{"items":{"$ref":"#/components/schemas/WidgetMetricInput"},"type":"array","title":"Metrics"}},"type":"object","required":["name","chart_type"],"title":"UpdateWidgetBody","description":"Full-replace update (mirrors the dashboard editor): name, chart_type and\nmetrics must always be sent; metrics replace the existing set. data_type is\nimmutable after creation."},"UpdateWorkflowV2Request":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name","description":"New name for the workflow"},"agent_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Agent Ids","description":"Set owning agents, or null to clear agent links (must belong to your organization when set)."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"New description (set empty string to clear if your client sends it)"},"definition":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Definition","description":"Full React Flow definition when replacing the graph. Same shape as create: each node needs a top-level `id`; each edge needs a top-level `id` unique among edges."}},"type":"object","title":"UpdateWorkflowV2Request","description":"Partial update for workflows_v2."},"UpdateWorkspaceRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"usage_limit_credits":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Usage Limit Credits"}},"type":"object","title":"UpdateWorkspaceRequest"},"UrlDocumentRequest":{"properties":{"kind":{"type":"string","const":"url","title":"Kind","default":"url"},"knowledge_base_id":{"type":"string","format":"uuid","title":"Knowledge Base Id"},"url":{"type":"string","title":"Url"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","required":["knowledge_base_id","url"],"title":"UrlDocumentRequest"},"UsageAlertResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"metronome_alert_id":{"type":"string","title":"Metronome Alert Id"},"notification_channels":{"items":{"$ref":"#/components/schemas/NotificationChannel"},"type":"array","title":"Notification Channels"},"is_enabled":{"type":"boolean","title":"Is Enabled"},"threshold":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Threshold"},"alert_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alert Type"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},"type":"object","required":["id","name","metronome_alert_id","notification_channels","is_enabled"],"title":"UsageAlertResponse"},"UsageAlertType":{"type":"string","enum":["low_remaining_contract_credit_percentage_reached","low_remaining_contract_credit_balance_reached","spend_threshold_reached"],"title":"UsageAlertType","description":"the native Metronome alert types we expose, as-is, for usage alerts.\n\ncontracts are credits-only, so we alert on remaining balance: percentage (running-low and\nexhaustion at 0%) and absolute credit balance. spend is kept for legacy/overage-depth alerts."},"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"},"VerbosityType":{"type":"string","enum":["low","medium","high"],"title":"VerbosityType","description":"Enum for verbosity level options."},"VoiceSpeedType":{"type":"string","enum":["slowest","slow","normal","fast","fastest"],"title":"VoiceSpeedType","description":"Enum for voice speed options."},"WebhookKeyRequest":{"properties":{"webhook_id":{"type":"string","format":"uuid","title":"Webhook Id","description":"ID of the webhook"}},"type":"object","required":["webhook_id"],"title":"WebhookKeyRequest","description":"Request model for creating a webhook"},"WebhookKeyResponse":{"properties":{"signing_key":{"type":"string","title":"Signing Key","description":"Signing key"},"message":{"type":"string","title":"Message","description":"Message"}},"type":"object","required":["signing_key","message"],"title":"WebhookKeyResponse","description":"Response model for creating a webhook"},"WeeklyNotificationTarget":{"properties":{"type":{"type":"string","enum":["email","slack"],"title":"Type","description":"Channel type"},"target":{"type":"string","minLength":1,"title":"Target","description":"Email address or Slack channel ID"}},"type":"object","required":["type","target"],"title":"WeeklyNotificationTarget"},"WeeklyNotificationsBody":{"properties":{"targets":{"items":{"$ref":"#/components/schemas/WeeklyNotificationTarget"},"type":"array","title":"Targets","description":"List of notification targets (alarm-style). Required to avoid accidentally overwriting with an empty list."},"preferred_send_time_utc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preferred Send Time Utc","description":"UTC clock time when the weekly job runs, HH:MM:SS (e.g. 17:00:00). Must be sent together with day_of_week unless using clear_schedule."},"day_of_week":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Day Of Week","description":"UTC weekday for the weekly instant: 0=Monday .. 6=Sunday (cron-style in UTC)."},"clear_schedule":{"type":"boolean","title":"Clear Schedule","description":"If true, reset weekly send to the default (Monday 9:00 AM PST → UTC); still updates targets. Do not send with preferred_send_time_utc or day_of_week.","default":false}},"additionalProperties":false,"type":"object","required":["targets"],"title":"WeeklyNotificationsBody"},"WeeklyNotificationsPostResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"first_generate_at_utc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Generate At Utc","description":"From summaries-cron: first generate job fire (ISO UTC), if registered."},"first_notify_at_utc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Notify At Utc","description":"From summaries-cron: first notify job fire (ISO UTC), if registered."},"deferred":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Deferred","description":"True if first fire was deferred by at least one week for lead-time safety."}},"type":"object","title":"WeeklyNotificationsPostResponse"},"WeeklySchedule":{"properties":{"time":{"type":"string","pattern":"^\\d{2}:\\d{2}$","title":"Time","description":"HH:MM 24hr time"},"frequency":{"type":"string","const":"weekly","title":"Frequency"},"day_of_week":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"],"title":"Day Of Week"}},"type":"object","required":["time","frequency","day_of_week"],"title":"WeeklySchedule"},"WidgetCenterLabelModel":{"properties":{"slice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slice","description":"Slice whose share fills the hole. Omit for the largest slice."},"clamp_pct":{"anyOf":[{"type":"number","exclusiveMaximum":50.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"Clamp Pct","description":"Collapses the rounding edges: 1 turns 99.6% into '>99%' and 0.4% into '<1%'. An exact 0 or 100 is left alone."},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label","description":"Caption under the percentage"}},"type":"object","title":"WidgetCenterLabelModel","description":"Pie only: what the donut hole says."},"WidgetLayoutModel":{"properties":{"x":{"type":"integer","minimum":1.0,"title":"X","description":"Row, 1-based, top to bottom"},"y":{"type":"integer","maximum":6.0,"minimum":1.0,"title":"Y","description":"Column within the row, 1..6"},"w":{"type":"integer","maximum":6.0,"minimum":1.0,"title":"W","description":"Width in columns, 1..6"},"h":{"type":"integer","maximum":18.0,"minimum":2.0,"title":"H","description":"Height in 50px steps, 2..18 (100px..900px)"}},"type":"object","required":["x","y","w","h"],"title":"WidgetLayoutModel","description":"Where a widget sits on a dashboard and how big it is.\n\nThe field names are older than the grid they describe: x is the row and y is the column, both\n1-based. The dashboard is six columns wide, and height is counted in 50px steps, so h=6 is the\n300px a widget used to be and the range 2..18 is 100px..900px."},"WidgetMetricInput":{"properties":{"metric":{"type":"string","title":"Metric","description":"Metric key, e.g. 'call_count', 'latency', 'custom_metric', 'goal', 'tool_call', 'trace_attribute'"},"custom_metric_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Metric Id","description":"Required when metric='custom_metric': id from the custom metrics API"},"goal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Goal","description":"Goal text when metric='goal'"},"tool_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Call Id","description":"Required when metric='tool_call'"},"metadata_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metadata Path","description":"Trace attribute path when metric='trace_attribute'"},"threshold_operator":{"anyOf":[{"type":"string","enum":["lt","lte","gt","gte"]},{"type":"null"}],"title":"Threshold Operator","description":"With threshold_value: graph the share of conversations meeting the condition instead of the metric's own value"},"threshold_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Threshold Value","description":"Compared against the metric's per-conversation value; set together with threshold_operator"},"metadata_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metadata Type","description":"Trace attribute value type when metric='trace_attribute'"}},"type":"object","required":["metric"],"title":"WidgetMetricInput","description":"One metric plotted by a widget."},"WidgetMetricModel":{"properties":{"metric":{"type":"string","title":"Metric","description":"Metric key, e.g. 'call_count', 'latency', 'custom_metric', 'goal', 'tool_call', 'trace_attribute'"},"custom_metric_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Metric Id","description":"Required when metric='custom_metric': id from the custom metrics API"},"goal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Goal","description":"Goal text when metric='goal'"},"tool_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Call Id","description":"Required when metric='tool_call'"},"metadata_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metadata Path","description":"Trace attribute path when metric='trace_attribute'"},"threshold_operator":{"anyOf":[{"type":"string","enum":["lt","lte","gt","gte"]},{"type":"null"}],"title":"Threshold Operator","description":"With threshold_value: graph the share of conversations meeting the condition instead of the metric's own value"},"threshold_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Threshold Value","description":"Compared against the metric's per-conversation value; set together with threshold_operator"},"metadata_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metadata Type","description":"Trace attribute value type when metric='trace_attribute'"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"widget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Widget Id"}},"type":"object","required":["metric"],"title":"WidgetMetricModel"},"WidgetModel":{"properties":{"id":{"type":"string","title":"Id"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"chart_type":{"type":"string","title":"Chart Type"},"chart_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chart Mode"},"data_type":{"type":"string","title":"Data Type"},"applies_to_all_agents":{"type":"boolean","title":"Applies To All Agents","default":true},"bar_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bar Mode"},"aggregation":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Aggregation"},"time_bucket":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Bucket"},"group_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group By"},"simulation_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Simulation Ids"},"show_indeterminate":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Show Indeterminate"},"filters":{"anyOf":[{},{"type":"null"}],"title":"Filters","description":"Extra conversation filters applied on top of the dashboard scope"},"column_visibility":{"anyOf":[{},{"type":"null"}],"title":"Column Visibility","description":"Table (observability) widgets only: column visibility map"},"color_overrides":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Color Overrides","description":"The colour the chart draws each series or slice in, keyed by its label lowercased. Written whole when a widget is saved, so it names every label rather than only the ones a person changed."},"center_label":{"anyOf":[{"$ref":"#/components/schemas/WidgetCenterLabelModel"},{"type":"null"}],"description":"Pie only: what the donut hole says"},"show_legend":{"type":"boolean","title":"Show Legend","description":"Whether the chart draws its colour key","default":true},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"},"widget_metrics":{"items":{"$ref":"#/components/schemas/WidgetMetricModel"},"type":"array","title":"Widget Metrics","default":[]},"layout":{"anyOf":[{"$ref":"#/components/schemas/WidgetLayoutModel"},{"type":"null"}],"description":"Only populated when returned as part of a dashboard"}},"type":"object","required":["id","name","chart_type","data_type"],"title":"WidgetModel"},"WorkflowV2Response":{"properties":{"id":{"type":"string","title":"Id","description":"Workflow ID"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id","description":"Owning organization ID (set by middleware on create)"},"agent_ids":{"items":{"type":"integer"},"type":"array","title":"Agent Ids","description":"Linked agent ids when the workflow is agent-scoped","default":[]},"name":{"type":"string","title":"Name","description":"Name of the workflow"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description"},"definition":{"additionalProperties":true,"type":"object","title":"Definition","description":"Stored React Flow graph (`start` / `single` / `options` nodes). Nodes and edges use top-level string `id` fields; edge `id` values are unique within the graph."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Creation timestamp"},"dh_sync_summary":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Dh Sync Summary","description":"Present on PUT responses when the definition was updated. Keys: updated, created, marked_stale, skipped, errors."},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings","description":"Non-blocking lint warnings emitted at save time (e.g. node text referencing an unknown ``{{trait_name}}``). Empty when the definition is clean or no agents are linked."}},"type":"object","required":["id","name","definition","created_at"],"title":"WorkflowV2Response","description":"Single workflows_v2 row."},"WorkflowValidateDefinitionRequest":{"properties":{"definition":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Definition","description":"React Flow graph as a JSON object (same shape as create ``definition``)."},"json_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Json Text","description":"Alternatively, the full graph as a JSON string."}},"type":"object","title":"WorkflowValidateDefinitionRequest","description":"Validate and normalize a React Flow graph from JSON (object or string). Same rules as ``POST /v1/scenario`` create."},"WorkflowValidateDefinitionResponse":{"properties":{"success":{"type":"boolean","title":"Success","description":"True when the definition passes validation","default":true}},"type":"object","title":"WorkflowValidateDefinitionResponse","description":"Validation passed; same rules as ``POST /v1/scenario`` create (graph is not persisted)."},"WorkflowsV2ListResponse":{"properties":{"workflows":{"items":{"$ref":"#/components/schemas/WorkflowV2Response"},"type":"array","title":"Workflows","description":"Workflows"},"total_count":{"type":"integer","title":"Total Count","description":"Number of workflows returned"}},"type":"object","required":["workflows","total_count"],"title":"WorkflowsV2ListResponse","description":"List workflows_v2 for the organization."},"WorkspaceMemberOut":{"properties":{"user_id":{"type":"string","title":"User Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"}},"type":"object","required":["user_id"],"title":"WorkspaceMemberOut"},"WorkspaceMembersResponse":{"properties":{"members":{"items":{"$ref":"#/components/schemas/WorkspaceMemberOut"},"type":"array","title":"Members"}},"type":"object","required":["members"],"title":"WorkspaceMembersResponse"},"WorkspaceOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_default":{"type":"boolean","title":"Is Default"},"usage_limit_credits":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Usage Limit Credits"},"member_count":{"type":"integer","title":"Member Count"},"key_count":{"type":"integer","title":"Key Count"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","name","is_default","member_count","key_count","created_at"],"title":"WorkspaceOut"},"WorkspaceSpendOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"is_default":{"type":"boolean","title":"Is Default"},"allocated_credits":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Allocated Credits"},"minutes":{"type":"number","title":"Minutes","default":0.0},"spent_credits":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spent Credits"},"remaining_credits":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Remaining Credits"},"agents":{"items":{"$ref":"#/components/schemas/AgentSpendOut"},"type":"array","title":"Agents","default":[]}},"type":"object","required":["id","name","is_default"],"title":"WorkspaceSpendOut"},"WorkspaceSpendResponse":{"properties":{"period_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period Start"},"credits_available":{"type":"boolean","title":"Credits Available","default":false},"minute_charges_configured":{"type":"boolean","title":"Minute Charges Configured"},"org_limit_credits":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Org Limit Credits"},"allocated_credits":{"type":"number","title":"Allocated Credits"},"spent_credits":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spent Credits"},"organization":{"anyOf":[{"$ref":"#/components/schemas/OrganizationSpendOut"},{"type":"null"}]},"workspaces":{"items":{"$ref":"#/components/schemas/WorkspaceSpendOut"},"type":"array","title":"Workspaces","default":[]}},"type":"object","required":["minute_charges_configured","allocated_credits"],"title":"WorkspaceSpendResponse"},"WorkspacesListResponse":{"properties":{"workspaces":{"items":{"$ref":"#/components/schemas/WorkspaceOut"},"type":"array","title":"Workspaces"}},"type":"object","required":["workspaces"],"title":"WorkspacesListResponse"},"src__api__integrations__google_ces__google_ces__MintTokenResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"expires_at":{"type":"number","title":"Expires At"},"app_id":{"type":"string","title":"App Id"},"deployment_id":{"type":"string","title":"Deployment Id"},"project_id":{"type":"string","title":"Project Id"},"location":{"type":"string","title":"Location"},"ces_host":{"type":"string","title":"Ces Host"},"session_id":{"type":"string","title":"Session Id"}},"type":"object","required":["access_token","expires_at","app_id","deployment_id","project_id","location","ces_host","session_id"],"title":"MintTokenResponse"},"src__api__integrations__google_dfcx__google_dfcx__MintTokenResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"expires_at":{"type":"number","title":"Expires At"},"project_id":{"type":"string","title":"Project Id"},"location":{"type":"string","title":"Location"},"agent_id":{"type":"string","title":"Agent Id"},"dfcx_host":{"type":"string","title":"Dfcx Host"},"session_id":{"type":"string","title":"Session Id"}},"type":"object","required":["access_token","expires_at","project_id","location","agent_id","dfcx_host","session_id"],"title":"MintTokenResponse"},"src__api__queue_simulation_run__SimulationRunRequest":{"properties":{"simulation_id":{"type":"string","title":"Simulation Id","description":"ID of the simulation to be run"},"prompt_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Prompt Id","description":"Prompt UUID associated with this run"},"knowledge_base_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Knowledge Base Id","description":"Knowledge base UUID associated with this run"},"digital_human_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Digital Human Ids","description":"Digital human IDs to be used in the simulation"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number","description":"Optional phone number to be used in this simulation run (overrides the agent phone number)"},"sip_uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sip Uri","description":"Optional SIP URI to be used in this simulation run (overrides the agent SIP URI)"},"livekit_agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Livekit Agent Name","description":"Optional agent name to be used by user's livekit, an empty string will use the default agent"},"livekit_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Livekit Metadata","description":"metadata to be passed to the livekit room"},"pipecat_agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pipecat Agent Name","description":"Pipecat agent name"},"pipecat_agent_configuration":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pipecat Agent Configuration","description":"Pipecat agent configuration"},"pipecat_room_properties":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pipecat Room Properties","description":"Pipecat room properties"},"eleven_labs_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eleven Labs Agent Id","description":"Optional ElevenLabs Convai agent_id (overrides the agent's eleven_labs_agent_id for this run)"},"retell_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retell Agent Id","description":"Optional Retell agent_id (overrides the agent's retell_agent_id for this run)"},"vapi_assistant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vapi Assistant Id","description":"Optional Vapi assistant_id (overrides the agent's vapi_assistant_id for this run)"},"runs_per_digital_human":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Runs Per Digital Human","description":"Optional per-run override for how many test_results to spawn per selected digital human. Falls back to experiments.settings.runs_per_digital_human, then to 1."}},"type":"object","required":["simulation_id"],"title":"SimulationRunRequest","description":"Pydantic model for simulation run request"},"src__api__queue_simulation_run__SimulationRunResponse":{"properties":{"simulation_run_id":{"type":"string","title":"Simulation Run Id","description":"ID of the created simulation run"},"simulation_result_ids":{"items":{"type":"string"},"type":"array","title":"Simulation Result Ids","description":"IDs of the created simulation results (test results)"},"agent_id":{"type":"string","title":"Agent Id","description":"ID of the agent associated with the simulation run"},"status":{"type":"string","title":"Status","description":"Status of the response","default":"success"}},"type":"object","required":["simulation_run_id","simulation_result_ids","agent_id"],"title":"SimulationRunResponse"},"src__api__simulations__UpdateSimulationRequest":{"properties":{"bluejay_as_code_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Bluejay As Code Id","description":"Stable code-addressable identifier"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"updated simulation name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"human‑readable description of the simulation"},"prompt_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Prompt Id","description":"optional default prompt UUID for this simulation"},"knowledge_base_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Knowledge Base Id","description":"optional default knowledge base UUID for this simulation"},"max_concurrent":{"anyOf":[{"type":"integer","maximum":500.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"Max Concurrent","description":"maximum number of concurrent runs (max 500)"},"hangup_on_transfer":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Hangup On Transfer","description":"whether to hang up the call on transfer"},"max_call_duration":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Call Duration","description":"maximum duration of each call. units specified by max_call_duration_units"},"max_call_duration_units":{"anyOf":[{"type":"string","enum":["minutes","seconds"]},{"type":"null"}],"title":"Max Call Duration Units","description":"units for max_call_duration: 'minutes' or 'seconds'"},"max_turns":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Turns","description":"maximum number of turns per simulation run"},"ringing_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ringing Timeout","description":"ringing timeout in seconds before abandoning"},"digital_humans_settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Digital Humans Settings","description":"settings for digital humans in the simulation"},"selected_custom_metrics":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Selected Custom Metrics","description":"array of custom metric IDs to be saved in settings"},"custom_metrics_failing_threshold":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Custom Metrics Failing Threshold","description":"score threshold below which a custom metric is considered failing (0-100)"},"custom_metrics_passing_threshold":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Custom Metrics Passing Threshold","description":"score threshold at or above which a custom metric is considered passing (0-100)"},"outcome_failing_threshold":{"anyOf":[{"type":"integer","maximum":99.0,"minimum":0.0},{"type":"null"}],"title":"Outcome Failing Threshold","description":"outcome score threshold below which the simulation is considered failing (0-99)"},"outcome_passing_threshold":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":1.0},{"type":"null"}],"title":"Outcome Passing Threshold","description":"outcome score threshold at or above which the simulation is considered passing (1-100)"},"runs_per_digital_human":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Runs Per Digital Human","description":"number of simulation runs to execute per digital human"},"delay_between_tests_seconds":{"anyOf":[{"type":"number","maximum":300.0,"minimum":0.0},{"type":"null"}],"title":"Delay Between Tests Seconds","description":"seconds to wait after a test completes before the next launches (0 = off)"},"inactivity_timeout_seconds":{"anyOf":[{"type":"integer","maximum":1800.0,"minimum":300.0},{"type":"null"}],"title":"Inactivity Timeout Seconds","description":"seconds to wait for an agent reply before ending a text conversation (300-1800 = 5-30 min); defaults to 300 when unset"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"array of tags for the simulation"},"pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Pinned","description":"whether the simulation is pinned"},"custom_error_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Custom Error Enabled","description":"enable custom-error detection for this simulation"},"custom_error_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Error Prompt","description":"custom-error definition prompt; overrides the org default when set"},"enable_rerun_failed_test_results":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Rerun Failed Test Results","description":"per-sim override of the org rerun-on-failure flag"},"enable_rerun_on_custom_error":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Rerun On Custom Error","description":"per-sim override of the org rerun-on-custom-error flag"},"rerun_max_retries":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rerun Max Retries","description":"max same-run reruns of a failed result (1-5)"}},"type":"object","title":"UpdateSimulationRequest","description":"request body for updating a simulation.\n\nall fields are optional; only provided fields will be updated."},"src__api__update_simulation_result__UpdateSimulationRequest":{"properties":{"simulation_result_id":{"type":"string","title":"Simulation Result Id","description":"Simulation result ID provided via SIP for the specific call"},"events":{"anyOf":[{"items":{"$ref":"#/components/schemas/Event"},"type":"array"},{"type":"null"}],"title":"Events","description":"List of events that occurred during the call"},"tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolCallData"},"type":"array"},{"type":"null"}],"title":"Tool Calls","description":"List of tool calls made during the call"},"recorded_transcript":{"anyOf":[{"items":{"$ref":"#/components/schemas/TranscriptEntryRequest"},"type":"array"},{"type":"null"}],"title":"Recorded Transcript","description":"Recorded transcript of the call (utilized to analyze STT accuracy)"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"List of tags associated with the call"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional metadata associated with the call"},"trace_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Trace Ids","description":"Trace IDs to associate with this simulation result"}},"type":"object","required":["simulation_result_id"],"title":"UpdateSimulationRequest"},"src__models__digital_humans__digital_human_response__DigitalHumanResponse":{"properties":{"digital_human":{"$ref":"#/components/schemas/DigitalHumanResponseData","description":"The digital human data"},"simulation_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Simulation Ids","description":"List of simulation IDs associated with this digital human"},"simulation_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Simulation Id","description":"ID of the associated simulation. Use simulation_ids instead.","deprecated":true}},"type":"object","required":["digital_human"],"title":"DigitalHumanResponse","description":"Response model for digital human operations with clear separation of digital human data and simulation context."},"src__models__digital_humans__enums__ResponseType":{"type":"string","enum":["phrase","silence","dtmf","audio"],"title":"ResponseType","description":"Enum for scripted response types."},"src__models__digital_humans__generate_digital_human_request__DigitalHumanResponse":{"properties":{"digital_humans":{"items":{},"type":"array","title":"Digital Humans","description":"List of digital humans created for the simulation"},"status":{"type":"string","title":"Status","description":"Status of the response","default":"200"},"success":{"type":"boolean","title":"Success","description":"Whether the generation succeeded","default":true},"test_scenarios":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Test Scenarios","description":"Scenario view of created digital humans (includes original_transcript and formatted_transcript for transcript replays)"},"warning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Warning","description":"Warning message if the request was modified (e.g. truncated due to exceeding the max limit)"}},"type":"object","title":"DigitalHumanResponse"},"src__models__digital_humans__red_team_attack__Trait":{"properties":{"name":{"type":"string","title":"Name","description":"Free-form trait label, e.g. 'SSN', 'Date of Birth'."},"data_type":{"type":"string","enum":["string","number","boolean","date"],"title":"Data Type","description":"Data type of the trait value."},"value":{"anyOf":[{},{"type":"null"}],"title":"Value","description":"Concrete value. '__random__' = LLM fabricates full value. '__partial_random__' = BE applies name-based heuristic and stamps completeness."},"completeness":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completeness","description":"e.g. 'last_4', 'year_only', 'full'. May be stamped by partial-autogen heuristic server-side."}},"type":"object","required":["name","data_type"],"title":"Trait"},"src__models__metric__ResponseType":{"type":"string","enum":["pass_fail","yes_no","qualitative","quantitative","json","enum","int","float","boolean","tool_call"],"title":"ResponseType","description":"Enum representing the possible response types for custom metrics."},"src__models__traits__trait__Trait":{"properties":{"trait_name":{"type":"string","title":"Trait Name","description":"Name of the trait"},"trait_data_type":{"$ref":"#/components/schemas/TraitDataType","description":"Data type of the trait"},"value":{"title":"Value","description":"Value of the trait (stored as JSONB)"},"is_sip_header":{"type":"boolean","title":"Is Sip Header","description":"Whether this trait is a SIP header","default":false}},"type":"object","required":["trait_name","trait_data_type","value"],"title":"Trait","description":"Model for a single trait."},"src__text_agents__sms_text_agent_api__SimulationRunRequest":{"properties":{"simulation_id":{"type":"string","title":"Simulation Id","description":"ID of the simulation to be run"},"prompt_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Prompt Id","description":"Prompt UUID associated with this run"},"knowledge_base_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Knowledge Base Id","description":"Knowledge base UUID associated with this run"},"digital_human_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Digital Human Ids","description":"Digital human IDs to be used in the simulation"},"terminate_overlapping_simulations":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Terminate Overlapping Simulations","description":"If true, all overlapping conversations with same pair of phone numbers will be ended","default":false},"runs_per_digital_human":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Runs Per Digital Human","description":"Optional per-run override for how many test_results to spawn per selected digital human. Falls back to experiments.settings.runs_per_digital_human, then to 1."}},"type":"object","required":["simulation_id"],"title":"SimulationRunRequest","description":"Pydantic model for simulation run request"},"src__text_agents__sms_text_agent_api__SimulationRunResponse":{"properties":{"simulation_run_id":{"type":"string","title":"Simulation Run Id","description":"ID of the created simulation run"},"simulation_result_ids":{"items":{"type":"string"},"type":"array","title":"Simulation Result Ids","description":"IDs of the created simulation results (test results)"},"agent_id":{"type":"string","title":"Agent Id","description":"ID of the agent associated with the simulation run"},"status":{"type":"string","title":"Status","description":"Status of the response","default":"success"},"terminated_conversations":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Terminated Conversations","description":"List of conversations that were terminated due to overlapping phone numbers"}},"type":"object","required":["simulation_run_id","simulation_result_ids","agent_id"],"title":"SimulationRunResponse"},"WebhookSimulationResultEvaluated":{"$defs":{"CustomMetric":{"properties":{"name":{"description":"The name of the custom metric","title":"Name","type":"string"},"description":{"description":"The description of the custom metric","title":"Description","type":"string"},"response_type":{"description":"The response type of the custom metric","title":"Response Type","type":"string"},"response_value":{"description":"The response value of the custom metric","title":"Response Value","type":"string"},"reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The reasoning of the custom metric","title":"Reasoning"},"min_value":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"The minimum value of the custom metric","title":"Min Value"},"max_value":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"The maximum value of the custom metric","title":"Max Value"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The category of the custom metric","title":"Category"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"The tags of the custom metric","title":"Tags"},"scoring_guidance":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The scoring guidance of the custom metric","title":"Scoring Guidance"},"enum_options":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"The enum options of the custom metric","title":"Enum Options"},"human_edited":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether this metric result was manually overridden by a human","title":"Human Edited"},"human_response_value":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Human-overridden response_value; null when no override applied","title":"Human Response Value"},"human_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Human-overridden reasoning; null when no override applied","title":"Human Reasoning"},"override_reason_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Structured reason for the latest human override. One of: ai_hallucination, overly_strict_success_criteria, overly_strict_system_prompt, other.","title":"Override Reason Code"},"override_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Freeform notes from the human reviewer accompanying the latest override","title":"Override Notes"},"last_edited_by":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"User id of the most recent human reviewer","title":"Last Edited By"},"last_edited_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"description":"Timestamp of the most recent human override","title":"Last Edited At"}},"required":["name","description","response_type","response_value"],"title":"Custom Metric","type":"object"},"Evaluation":{"description":"Pydantic model for evaluation result","properties":{"id":{"description":"Unique identifier for the evaluation result","title":"Id","type":"string"},"created_at":{"description":"When this evaluation result was created (defaults to now in UTC)","format":"date-time","title":"Created At","type":"string"},"hallucination":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the agent exhibited hallucination during the call","title":"Hallucination"},"hallucination_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Reasoning behind the hallucination, if applicable","title":"Hallucination Reasoning"},"redundancy":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the agent exhibited redundancy during the call","title":"Redundancy"},"redundancy_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Reasoning behind the redundancy, if applicable","title":"Redundancy Reasoning"},"agent_speak_percentage":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Percentage of the call where the agent was speaking","title":"Agent Speak Percentage"},"avg_agent_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Average latency of the agent's responses during the call","title":"Avg Agent Latency"},"latency":{"anyOf":[{"$ref":"#/components/schemas/Latency"},{"type":"null"}],"description":"Latency metrics for the agent's responses"},"filler_ignored_latency":{"anyOf":[{"$ref":"#/components/schemas/FillerIgnoredLatency"},{"type":"null"}],"description":"Filler ignored latency metrics"},"num_turns":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Total number of turns taken by the agent during the call","title":"Num Turns"},"call_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Summary of the call, if applicable","title":"Call Summary"},"custom_evals":{"anyOf":[{"items":{},"type":"array"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"List of custom evaluations performed during the call","title":"Custom Evals"},"custom_evals_success_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Success rate of the custom evaluations performed during the call","title":"Custom Evals Success Rate"},"goal_success":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the goal was successfully achieved during the call","title":"Goal Success"},"goal_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Reasoning behind the goal success, if applicable","title":"Goal Reasoning"},"pronunciation_score":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Pronunciation score of the agent during the call","title":"Pronunciation Score"},"pronunciation_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Reasoning behind the pronunciation score, if applicable","title":"Pronunciation Reasoning"},"sentiment_label":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Overall sentiment label for customer utterances","title":"Sentiment Label"},"sentiment_score":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Overall sentiment score for customer utterances","title":"Sentiment Score"},"sentiment_scores":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"default":null,"description":"Per-label sentiment scores for customer utterances","title":"Sentiment Scores"},"custom_metrics":{"anyOf":[{"items":{"$ref":"#/components/schemas/CustomMetric"},"type":"array"},{"type":"null"}],"default":null,"description":"Custom metrics associated with the evaluation","title":"Custom Metrics"},"human_edited":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether any result in this evaluation was manually overridden by a human","title":"Human Edited"},"human_goal_success":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Human-overridden goal_success; null when no override applied","title":"Human Goal Success"},"human_goal_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Human-overridden goal_reasoning; null when no override applied","title":"Human Goal Reasoning"},"human_hallucination":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Human-overridden hallucination verdict; null when no override applied","title":"Human Hallucination"},"human_hallucination_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Human-overridden hallucination reasoning; null when no override applied","title":"Human Hallucination Reasoning"},"human_redundancy":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Human-overridden redundancy verdict; null when no override applied","title":"Human Redundancy"},"human_redundancy_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Human-overridden redundancy reasoning; null when no override applied","title":"Human Redundancy Reasoning"},"human_pronunciation_score":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Human-overridden pronunciation score; null when no override applied","title":"Human Pronunciation Score"},"human_pronunciation_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Human-overridden pronunciation reasoning; null when no override applied","title":"Human Pronunciation Reasoning"},"override_goal_reason_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Reason for the human override of goal_success.","title":"Override Goal Reason Code"},"override_goal_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Freeform notes from the reviewer for the goal override.","title":"Override Goal Notes"},"override_hallucination_reason_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Reason for the human override of hallucination.","title":"Override Hallucination Reason Code"},"override_hallucination_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Freeform notes from the reviewer for the hallucination override.","title":"Override Hallucination Notes"},"override_redundancy_reason_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Reason for the human override of redundancy.","title":"Override Redundancy Reason Code"},"override_redundancy_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Freeform notes from the reviewer for the redundancy override.","title":"Override Redundancy Notes"},"override_pronunciation_reason_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Reason for the human override of pronunciation_score.","title":"Override Pronunciation Reason Code"},"override_pronunciation_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Freeform notes from the reviewer for the pronunciation override.","title":"Override Pronunciation Notes"},"last_edited_by":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"User id of the most recent human reviewer","title":"Last Edited By"},"last_edited_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"description":"Timestamp of the most recent human override","title":"Last Edited At"},"predicted_age":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Estimated age of the caller in years, from their audio","title":"Predicted Age"},"customer_gender":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Predicted gender of the caller: 'male', 'female', or 'indeterminate' when confidence is at or below 0.7","title":"Customer Gender"},"gender_confidence":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Confidence 0-1 behind customer_gender; null when the prediction is 'indeterminate'","title":"Gender Confidence"},"detected_language":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Language detected on the call","title":"Detected Language"},"language_confidence":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Confidence 0-1 behind detected_language","title":"Language Confidence"},"agent_audio_clarity":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Agent audio: audio clarity score 0-100 (higher better)","title":"Agent Audio Clarity"},"user_audio_clarity":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"User audio: audio clarity score 0-100 (higher better)","title":"User Audio Clarity"}},"required":["agent_speak_percentage","avg_agent_latency"],"title":"Evaluation","type":"object"},"Event":{"description":"Pydantic model for event data","properties":{"title":{"description":"Title of the event","title":"Title","type":"string"},"start_offset_ms":{"description":"Start offset of the event in milliseconds","title":"Start Offset Ms","type":"integer"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Description of the event","title":"Description"},"end_offset_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"End offset of the event in milliseconds","title":"End Offset Ms"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"description":"List of tags associated with the event","title":"Tags"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Additional metadata associated with the event","title":"Metadata"}},"required":["title","start_offset_ms"],"title":"Event","type":"object"},"FillerIgnoredLatency":{"properties":{"avg_filler_ignored_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"default":0,"description":"Average filler ignored latency","title":"Avg Filler Ignored Latency"},"p50_filler_ignored_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"default":0,"description":"50th percentile filler ignored latency","title":"P50 Filler Ignored Latency"},"p90_filler_ignored_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"default":0,"description":"90th percentile filler ignored latency","title":"P90 Filler Ignored Latency"},"p95_filler_ignored_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"default":0,"description":"95th percentile filler ignored latency","title":"P95 Filler Ignored Latency"},"p99_filler_ignored_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"default":0,"description":"99th percentile filler ignored latency","title":"P99 Filler Ignored Latency"}},"title":"FillerIgnoredLatency","type":"object"},"Latency":{"properties":{"avg_agent_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"default":0,"description":"Average latency","title":"Avg Agent Latency"},"max_agent_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"default":0,"description":"Maximum latency","title":"Max Agent Latency"},"p50_agent_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"default":0,"description":"50th percentile latency","title":"P50 Agent Latency"},"p90_agent_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"default":0,"description":"90th percentile latency","title":"P90 Agent Latency"},"p95_agent_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"default":0,"description":"95th percentile latency","title":"P95 Agent Latency"},"p99_agent_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"default":0,"description":"99th percentile latency","title":"P99 Agent Latency"}},"title":"Latency","type":"object"},"TestResultStatus":{"description":"Enum representing the possible states of a test result.\n\nCanonical taxonomy lives in livekit_agent/docs/test_result_status_redesign.md.\nKept in sync across livekit_agent, bluejay_middleware, evals, and text_agent.","enum":["INITIALIZING","QUEUED","READY","DISPATCHED","RUNNING","CONVERSATION_ENDED","EVALUATING","COMPLETED","NO_CONNECTION","NO_ANSWER","CALL_DROPPED","OUT_OF_FUNDS","SYSTEM_ERROR","CUSTOM_ERROR","CANCELLED"],"title":"TestResultStatus","type":"string"},"ToolCallData":{"description":"Tool call as stored on calls, jobs, and test results (API and database).","properties":{"name":{"title":"Name","type":"string"},"start_offset_ms":{"title":"Start Offset Ms","type":"integer"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Description"},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Parameters"},"output":{"anyOf":[{},{"type":"null"}],"default":null,"title":"Output"}},"required":["name","start_offset_ms"],"title":"ToolCallData","type":"object"}},"description":"Represents a simulation result evaluated event.","properties":{"type":{"default":"simulation_result_evaluated","description":"Type of webhook payload","title":"Type","type":"string"},"id":{"description":"The ID of the simulation result","title":"Id","type":"integer"},"digital_human_id":{"description":"The ID of the digital human","title":"Digital Human Id","type":"integer"},"status":{"$ref":"#/components/schemas/TestResultStatus","default":"COMPLETED","description":"The status of the simulation result"},"simulation_run_id":{"description":"The ID of the simulation run that this simulation result belongs to","title":"Simulation Run Id","type":"integer"},"simulation_id":{"description":"The ID of the simulation that this simulation result belongs to","title":"Simulation Id","type":"integer"},"agent_id":{"description":"The ID of the agent that this simulation result belongs to","title":"Agent Id","type":"integer"},"folder_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"description":"The ID of the folder that the agent belongs to","title":"Folder Id"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"deprecated":true,"description":"Please use the evaluations instead","title":"Result"},"custom_metrics":{"anyOf":[{"items":{"$ref":"#/components/schemas/CustomMetric"},"type":"array"},{"type":"null"}],"deprecated":true,"description":"Please use the custom metrics in the evaluations instead","title":"Custom Metrics"},"evaluations":{"anyOf":[{"items":{"$ref":"#/components/schemas/Evaluation"},"type":"array"},{"type":"null"}],"description":"The evaluations of the simulation result","title":"Evaluations"},"created_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"description":"The creation time of the simulation result","title":"Created At"},"start_time":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"description":"The start time of the simulation result","title":"Start Time"},"end_time":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"description":"The end time of the simulation result","title":"End Time"},"duration":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"The duration of the simulation result","title":"Duration"},"latency":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"description":"The latency of the simulation result","title":"Latency"},"events":{"anyOf":[{"items":{"$ref":"#/components/schemas/Event"},"type":"array"},{"type":"null"}],"description":"The events of the simulation result","title":"Events"},"tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolCallData"},"type":"array"},{"type":"null"}],"description":"The tool calls of the simulation result","title":"Tool Calls"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"description":"The tags of the simulation result","title":"Tags"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"The metadata of the simulation result","title":"Metadata"}},"required":["id","digital_human_id","simulation_run_id","simulation_id","agent_id"],"title":"Simulation Result Evaluated","type":"object"},"TestResultStatus":{"description":"Enum representing the possible states of a test result.\n\nCanonical taxonomy lives in livekit_agent/docs/test_result_status_redesign.md.\nKept in sync across livekit_agent, bluejay_middleware, evals, and text_agent.","enum":["INITIALIZING","QUEUED","READY","DISPATCHED","RUNNING","CONVERSATION_ENDED","EVALUATING","COMPLETED","NO_CONNECTION","NO_ANSWER","CALL_DROPPED","OUT_OF_FUNDS","SYSTEM_ERROR","CUSTOM_ERROR","CANCELLED"],"title":"TestResultStatus","type":"string"},"WebhookObservabilityCallEvaluated":{"$defs":{"CallDirection":{"description":"Enum representing the direction of a call.","enum":["INBOUND","OUTBOUND"],"title":"CallDirection","type":"string"},"CallInterface":{"description":"Enum representing the interface used for a call.","enum":["PHONE","WEB"],"title":"CallInterface","type":"string"},"CallStatus":{"description":"Enum representing the possible states of a call.","enum":["INITIALIZING","QUEUED","EVALUATING","COMPLETED","INCOMPLETED"],"title":"CallStatus","type":"string"},"CustomMetric":{"properties":{"name":{"description":"The name of the custom metric","title":"Name","type":"string"},"description":{"description":"The description of the custom metric","title":"Description","type":"string"},"response_type":{"description":"The response type of the custom metric","title":"Response Type","type":"string"},"response_value":{"description":"The response value of the custom metric","title":"Response Value","type":"string"},"reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The reasoning of the custom metric","title":"Reasoning"},"min_value":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"The minimum value of the custom metric","title":"Min Value"},"max_value":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"The maximum value of the custom metric","title":"Max Value"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The category of the custom metric","title":"Category"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"The tags of the custom metric","title":"Tags"},"scoring_guidance":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The scoring guidance of the custom metric","title":"Scoring Guidance"},"enum_options":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"The enum options of the custom metric","title":"Enum Options"},"human_edited":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether this metric result was manually overridden by a human","title":"Human Edited"},"human_response_value":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Human-overridden response_value; null when no override applied","title":"Human Response Value"},"human_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Human-overridden reasoning; null when no override applied","title":"Human Reasoning"},"override_reason_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Structured reason for the latest human override. One of: ai_hallucination, overly_strict_success_criteria, overly_strict_system_prompt, other.","title":"Override Reason Code"},"override_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Freeform notes from the human reviewer accompanying the latest override","title":"Override Notes"},"last_edited_by":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"User id of the most recent human reviewer","title":"Last Edited By"},"last_edited_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"description":"Timestamp of the most recent human override","title":"Last Edited At"}},"required":["name","description","response_type","response_value"],"title":"Custom Metric","type":"object"},"Evaluation":{"description":"Pydantic model for evaluation result","properties":{"id":{"description":"Unique identifier for the evaluation result","title":"Id","type":"string"},"created_at":{"description":"When this evaluation result was created (defaults to now in UTC)","format":"date-time","title":"Created At","type":"string"},"hallucination":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the agent exhibited hallucination during the call","title":"Hallucination"},"hallucination_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Reasoning behind the hallucination, if applicable","title":"Hallucination Reasoning"},"redundancy":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the agent exhibited redundancy during the call","title":"Redundancy"},"redundancy_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Reasoning behind the redundancy, if applicable","title":"Redundancy Reasoning"},"agent_speak_percentage":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Percentage of the call where the agent was speaking","title":"Agent Speak Percentage"},"avg_agent_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Average latency of the agent's responses during the call","title":"Avg Agent Latency"},"latency":{"anyOf":[{"$ref":"#/components/schemas/Latency"},{"type":"null"}],"description":"Latency metrics for the agent's responses"},"filler_ignored_latency":{"anyOf":[{"$ref":"#/components/schemas/FillerIgnoredLatency"},{"type":"null"}],"description":"Filler ignored latency metrics"},"num_turns":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Total number of turns taken by the agent during the call","title":"Num Turns"},"call_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Summary of the call, if applicable","title":"Call Summary"},"custom_evals":{"anyOf":[{"items":{},"type":"array"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"List of custom evaluations performed during the call","title":"Custom Evals"},"custom_evals_success_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Success rate of the custom evaluations performed during the call","title":"Custom Evals Success Rate"},"goal_success":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the goal was successfully achieved during the call","title":"Goal Success"},"goal_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Reasoning behind the goal success, if applicable","title":"Goal Reasoning"},"pronunciation_score":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Pronunciation score of the agent during the call","title":"Pronunciation Score"},"pronunciation_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Reasoning behind the pronunciation score, if applicable","title":"Pronunciation Reasoning"},"sentiment_label":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Overall sentiment label for customer utterances","title":"Sentiment Label"},"sentiment_score":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Overall sentiment score for customer utterances","title":"Sentiment Score"},"sentiment_scores":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"default":null,"description":"Per-label sentiment scores for customer utterances","title":"Sentiment Scores"},"custom_metrics":{"anyOf":[{"items":{"$ref":"#/components/schemas/CustomMetric"},"type":"array"},{"type":"null"}],"default":null,"description":"Custom metrics associated with the evaluation","title":"Custom Metrics"},"human_edited":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether any result in this evaluation was manually overridden by a human","title":"Human Edited"},"human_goal_success":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Human-overridden goal_success; null when no override applied","title":"Human Goal Success"},"human_goal_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Human-overridden goal_reasoning; null when no override applied","title":"Human Goal Reasoning"},"human_hallucination":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Human-overridden hallucination verdict; null when no override applied","title":"Human Hallucination"},"human_hallucination_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Human-overridden hallucination reasoning; null when no override applied","title":"Human Hallucination Reasoning"},"human_redundancy":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Human-overridden redundancy verdict; null when no override applied","title":"Human Redundancy"},"human_redundancy_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Human-overridden redundancy reasoning; null when no override applied","title":"Human Redundancy Reasoning"},"human_pronunciation_score":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Human-overridden pronunciation score; null when no override applied","title":"Human Pronunciation Score"},"human_pronunciation_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Human-overridden pronunciation reasoning; null when no override applied","title":"Human Pronunciation Reasoning"},"override_goal_reason_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Reason for the human override of goal_success.","title":"Override Goal Reason Code"},"override_goal_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Freeform notes from the reviewer for the goal override.","title":"Override Goal Notes"},"override_hallucination_reason_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Reason for the human override of hallucination.","title":"Override Hallucination Reason Code"},"override_hallucination_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Freeform notes from the reviewer for the hallucination override.","title":"Override Hallucination Notes"},"override_redundancy_reason_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Reason for the human override of redundancy.","title":"Override Redundancy Reason Code"},"override_redundancy_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Freeform notes from the reviewer for the redundancy override.","title":"Override Redundancy Notes"},"override_pronunciation_reason_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Reason for the human override of pronunciation_score.","title":"Override Pronunciation Reason Code"},"override_pronunciation_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Freeform notes from the reviewer for the pronunciation override.","title":"Override Pronunciation Notes"},"last_edited_by":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"User id of the most recent human reviewer","title":"Last Edited By"},"last_edited_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"description":"Timestamp of the most recent human override","title":"Last Edited At"},"predicted_age":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Estimated age of the caller in years, from their audio","title":"Predicted Age"},"customer_gender":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Predicted gender of the caller: 'male', 'female', or 'indeterminate' when confidence is at or below 0.7","title":"Customer Gender"},"gender_confidence":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Confidence 0-1 behind customer_gender; null when the prediction is 'indeterminate'","title":"Gender Confidence"},"detected_language":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Language detected on the call","title":"Detected Language"},"language_confidence":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Confidence 0-1 behind detected_language","title":"Language Confidence"},"agent_audio_clarity":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Agent audio: audio clarity score 0-100 (higher better)","title":"Agent Audio Clarity"},"user_audio_clarity":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"User audio: audio clarity score 0-100 (higher better)","title":"User Audio Clarity"}},"required":["agent_speak_percentage","avg_agent_latency"],"title":"Evaluation","type":"object"},"Event":{"description":"Pydantic model for event data","properties":{"title":{"description":"Title of the event","title":"Title","type":"string"},"start_offset_ms":{"description":"Start offset of the event in milliseconds","title":"Start Offset Ms","type":"integer"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Description of the event","title":"Description"},"end_offset_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"End offset of the event in milliseconds","title":"End Offset Ms"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"description":"List of tags associated with the event","title":"Tags"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Additional metadata associated with the event","title":"Metadata"}},"required":["title","start_offset_ms"],"title":"Event","type":"object"},"FillerIgnoredLatency":{"properties":{"avg_filler_ignored_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"default":0,"description":"Average filler ignored latency","title":"Avg Filler Ignored Latency"},"p50_filler_ignored_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"default":0,"description":"50th percentile filler ignored latency","title":"P50 Filler Ignored Latency"},"p90_filler_ignored_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"default":0,"description":"90th percentile filler ignored latency","title":"P90 Filler Ignored Latency"},"p95_filler_ignored_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"default":0,"description":"95th percentile filler ignored latency","title":"P95 Filler Ignored Latency"},"p99_filler_ignored_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"default":0,"description":"99th percentile filler ignored latency","title":"P99 Filler Ignored Latency"}},"title":"FillerIgnoredLatency","type":"object"},"Latency":{"properties":{"avg_agent_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"default":0,"description":"Average latency","title":"Avg Agent Latency"},"max_agent_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"default":0,"description":"Maximum latency","title":"Max Agent Latency"},"p50_agent_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"default":0,"description":"50th percentile latency","title":"P50 Agent Latency"},"p90_agent_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"default":0,"description":"90th percentile latency","title":"P90 Agent Latency"},"p95_agent_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"default":0,"description":"95th percentile latency","title":"P95 Agent Latency"},"p99_agent_latency":{"anyOf":[{"type":"number"},{"type":"null"}],"default":0,"description":"99th percentile latency","title":"P99 Agent Latency"}},"title":"Latency","type":"object"},"MetricResult":{"description":"One metric scored on a conversation, read from `metric_results`.\n\nEverything the platform scores lands here, including the audio measurements that have\nno column on `evaluations` (perceived loudness, clipping, dropouts). `value` is a\nstring for every metric_type so results of mixed types can come back in one list,\nmatching GET /v1/observability/conversations/{id}.","properties":{"metric_name":{"description":"Stable name of the metric, e.g. 'user_perceived_loudness'","title":"Metric Name","type":"string"},"metric_type":{"description":"One of int, float, boolean, enum, qualitative, json, pass_fail, yes_no","title":"Metric Type","type":"string"},"value":{"description":"The effective value as a string: the human correction when one was applied, otherwise the model's","title":"Value","type":"string"},"human_edited":{"default":false,"description":"Whether a reviewer overrode this result","title":"Human Edited","type":"boolean"},"reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Reasoning behind the effective value","title":"Reasoning"}},"required":["metric_name","metric_type","value"],"title":"MetricResult","type":"object"},"ParticipantResponse":{"description":"Pydantic model for participant data","properties":{"role":{"$ref":"#/components/schemas/ParticipantRole","description":"Role of the participant in the call"},"spoke_first":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the participant spoke first in the call","title":"Spoke First"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Name of the participant","title":"Name"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Phone number of the participant (if applicable)","title":"Phone Number"}},"required":["role"],"title":"ParticipantResponse","type":"object"},"ParticipantRole":{"description":"Role of a participant in a call or simulated conversation.","enum":["AGENT","USER","DIGITAL_HUMAN","agent","digital_human"],"title":"ParticipantRole","type":"string"},"ToolCallData":{"description":"Tool call as stored on calls, jobs, and test results (API and database).","properties":{"name":{"title":"Name","type":"string"},"start_offset_ms":{"title":"Start Offset Ms","type":"integer"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Description"},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Parameters"},"output":{"anyOf":[{},{"type":"null"}],"default":null,"title":"Output"}},"required":["name","start_offset_ms"],"title":"ToolCallData","type":"object"}},"description":"Represents an observability call evaluated event.","properties":{"id":{"description":"Unique identifier for the call","title":"Id","type":"string"},"agent_id":{"description":"ID of the agent associated with the call","title":"Agent Id","type":"string"},"external_agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"External ID of the agent associated with the call","title":"External Agent Id"},"recording_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"URL to the recording file (supported formats: .mp4, .wav, .m4a)","title":"Recording Url"},"start_time_utc":{"description":"When the call started, in UTC","title":"Start Time Utc","type":"string"},"participants":{"description":"List of call participants","items":{"$ref":"#/components/schemas/ParticipantResponse"},"title":"Participants","type":"array"},"call_direction":{"$ref":"#/components/schemas/CallDirection","default":"INBOUND","description":"Direction of the call from the Agent's perspective (INBOUND or OUTBOUND)"},"interface":{"$ref":"#/components/schemas/CallInterface","default":"PHONE","description":"Interface used for the call"},"status":{"$ref":"#/components/schemas/CallStatus","description":"Current status of the call"},"created_at":{"description":"When this request was created (defaults to now in UTC)","format":"date-time","title":"Created At","type":"string"},"transcript_url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"URL to the transcript file (supported formats: .txt, .json)","title":"Transcript Url"},"tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolCallData"},"type":"array"},{"type":"null"}],"description":"List of tool calls made during the call","title":"Tool Calls"},"events":{"anyOf":[{"items":{"$ref":"#/components/schemas/Event"},"type":"array"},{"type":"null"}],"description":"List of events that occurred during the call","title":"Events"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"description":"List of tags associated with the call","title":"Tags"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":0,"description":"Duration of the call in milliseconds","title":"Duration Ms"},"evaluations":{"anyOf":[{"items":{"$ref":"#/components/schemas/Evaluation"},"type":"array"},{"type":"null"}],"description":"List of evaluations associated with the call","title":"Evaluations"},"metrics":{"anyOf":[{"items":{"$ref":"#/components/schemas/MetricResult"},"type":"array"},{"type":"null"}],"description":"Metric results scored on this call. Includes the audio measurements that have no evaluations column, such as user_perceived_loudness, user_audio_clipping and user_audio_dropouts","title":"Metrics"},"annotations":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"default":null,"description":"Annotations associated with the call","title":"Annotations"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Additional metadata associated with the call","title":"Metadata"},"custom_metrics":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"default":null,"deprecated":true,"description":"Please use the custom metrics in the evaluations instead","title":"Custom Metrics"},"conversation_ended_by":{"anyOf":[{"$ref":"#/components/schemas/ParticipantRole"},{"type":"null"}],"default":null,"description":"Which participant role ended the conversation: 'USER' or 'AGENT'"},"type":{"default":"observability_call_evaluated","description":"Type of webhook payload","title":"Type","type":"string"}},"required":["id","agent_id","recording_url","start_time_utc","participants","status"],"title":"Observability Call Evaluated","type":"object"},"WebhookSimulationResultEnded":{"$defs":{"TestResultStatus":{"description":"Enum representing the possible states of a test result.\n\nCanonical taxonomy lives in livekit_agent/docs/test_result_status_redesign.md.\nKept in sync across livekit_agent, bluejay_middleware, evals, and text_agent.","enum":["INITIALIZING","QUEUED","READY","DISPATCHED","RUNNING","CONVERSATION_ENDED","EVALUATING","COMPLETED","NO_CONNECTION","NO_ANSWER","CALL_DROPPED","OUT_OF_FUNDS","SYSTEM_ERROR","CUSTOM_ERROR","CANCELLED"],"title":"TestResultStatus","type":"string"}},"description":"Represents a simulation result ended event.","properties":{"type":{"default":"simulation_ended","description":"Type of webhook payload","title":"Type","type":"string"},"id":{"description":"The ID of the simulation result","title":"Id","type":"integer"},"digital_human_id":{"description":"The ID of the digital human","title":"Digital Human Id","type":"integer"},"status":{"$ref":"#/components/schemas/TestResultStatus","default":"CONVERSATION_ENDED","description":"The status of the simulation result"},"simulation_run_id":{"description":"The ID of the simulation run that this simulation result belongs to","title":"Simulation Run Id","type":"integer"},"created_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"description":"The creation time of the simulation result","title":"Created At"},"start_time":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"description":"The start time of the simulation result","title":"Start Time"},"end_time":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"description":"The end time of the simulation result","title":"End Time"},"duration":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"The duration of the simulation result","title":"Duration"}},"required":["id","digital_human_id","simulation_run_id"],"title":"Simulation Ended","type":"object"},"WebhookCustomMetric":{"properties":{"name":{"description":"The name of the custom metric","title":"Name","type":"string"},"description":{"description":"The description of the custom metric","title":"Description","type":"string"},"response_type":{"description":"The response type of the custom metric","title":"Response Type","type":"string"},"response_value":{"description":"The response value of the custom metric","title":"Response Value","type":"string"},"reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The reasoning of the custom metric","title":"Reasoning"},"min_value":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"The minimum value of the custom metric","title":"Min Value"},"max_value":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"The maximum value of the custom metric","title":"Max Value"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The category of the custom metric","title":"Category"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"The tags of the custom metric","title":"Tags"},"scoring_guidance":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The scoring guidance of the custom metric","title":"Scoring Guidance"},"enum_options":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"The enum options of the custom metric","title":"Enum Options"},"human_edited":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether this metric result was manually overridden by a human","title":"Human Edited"},"human_response_value":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Human-overridden response_value; null when no override applied","title":"Human Response Value"},"human_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Human-overridden reasoning; null when no override applied","title":"Human Reasoning"},"override_reason_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Structured reason for the latest human override. One of: ai_hallucination, overly_strict_success_criteria, overly_strict_system_prompt, other.","title":"Override Reason Code"},"override_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Freeform notes from the human reviewer accompanying the latest override","title":"Override Notes"},"last_edited_by":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"User id of the most recent human reviewer","title":"Last Edited By"},"last_edited_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"description":"Timestamp of the most recent human override","title":"Last Edited At"}},"required":["name","description","response_type","response_value"],"title":"Custom Metric","type":"object"},"WebhookOutboundSimulationStarted":{"$defs":{"DigitalHuman":{"properties":{"id":{"description":"The ID of the digital human","title":"Id","type":"integer"},"name":{"description":"The name of the digital human","title":"Name","type":"string"},"phone_number":{"description":"The phone number of the digital human","title":"Phone Number","type":"string"},"associated_simulation_result_ids":{"description":"The IDs of the simulation results that were created for this digital human","items":{"type":"integer"},"title":"Associated Simulation Result Ids","type":"array"}},"required":["id","name","phone_number"],"title":"Digital Human","type":"object"}},"description":"Represents an outbound simulation started event.","properties":{"type":{"default":"outbound_simulation_started","description":"Type of webhook payload","title":"Type","type":"string"},"agent_id":{"description":"The ID of the agent that this simulation belongs to","title":"Agent Id","type":"integer"},"simulation_id":{"description":"The ID of the simulation","title":"Simulation Id","type":"integer"},"simulation_run_id":{"description":"The ID of the simulation run","title":"Simulation Run Id","type":"integer"},"digital_humans":{"description":"The digital humans that were run for this simulation run","items":{"$ref":"#/components/schemas/DigitalHuman"},"title":"Digital Humans","type":"array"}},"required":["agent_id","simulation_id","simulation_run_id","digital_humans"],"title":"Outbound Simulation Started","type":"object"},"DigitalHuman":{"properties":{"id":{"description":"The ID of the digital human","title":"Id","type":"integer"},"name":{"description":"The name of the digital human","title":"Name","type":"string"},"phone_number":{"description":"The phone number of the digital human","title":"Phone Number","type":"string"},"associated_simulation_result_ids":{"description":"The IDs of the simulation results that were created for this digital human","items":{"type":"integer"},"title":"Associated Simulation Result Ids","type":"array"}},"required":["id","name","phone_number"],"title":"Digital Human","type":"object"}},"securitySchemes":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API key required to authenticate requests."}}},"webhooks":{"events_webhook":{"post":{"summary":"Webhook: events_webhook","description":"Upon an event on the platform, we'll send you the results to the URL you registered within the dashboard","requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/WebhookSimulationResultEvaluated"},{"$ref":"#/components/schemas/WebhookObservabilityCallEvaluated"},{"$ref":"#/components/schemas/WebhookSimulationResultEnded"},{"$ref":"#/components/schemas/WebhookOutboundSimulationStarted"}],"discriminator":{"propertyName":"type","mapping":{"simulation_result_evaluated":"#/components/schemas/WebhookSimulationResultEvaluated","observability_call_evaluated":"#/components/schemas/WebhookObservabilityCallEvaluated","simulation_ended":"#/components/schemas/WebhookSimulationResultEnded","outbound_simulation_started":"#/components/schemas/WebhookOutboundSimulationStarted"}}}}}},"responses":{"200":{"description":"Webhook received successfully"}}}}},"security":[{"apiKeyAuth":[]}],"servers":[{"url":"https://api.getbluejay.ai","description":"Production server"}]}