{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Hamsa API","colors":{"primary":"#1B5E3A","light":"#B4FD83","dark":"#2D7A4F"},"logo":{"light":"https://mintcdn.com/hamsa-452fa79a/B5KuRhzUCER4_1Wi/logo/hamsa_logo_light.svg?fit=max\u0026auto=format\u0026n=B5KuRhzUCER4_1Wi\u0026q=85\u0026s=2576c2f27fed68b31fa686aca13e6fbf","dark":"https://mintcdn.com/hamsa-452fa79a/B5KuRhzUCER4_1Wi/logo/hamsa_logo_dark.svg?fit=max\u0026auto=format\u0026n=B5KuRhzUCER4_1Wi\u0026q=85\u0026s=b89ad21e4d97ee72de3045482602bf53"},"favicon":"https://mintcdn.com/hamsa-452fa79a/B5KuRhzUCER4_1Wi/favicon.svg?fit=max\u0026auto=format\u0026n=B5KuRhzUCER4_1Wi\u0026q=85\u0026s=f369c0501b06a15339575e7c72e2494a","navbar":{"links":[{"href":"https://tryhamsa.com/contact/","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://agents.tryhamsa.com/"}},"footer":{"socials":{"github":"https://github.com/hamsa-ai","linkedin":"https://www.linkedin.com/company/tryhamsa","website":"https://tryhamsa.com"}},"integrations":{"posthog":{"apiKey":"phc_3TCeimn6ufgVchZQ08TCRlIfu7Lwyaa8xGtBA67ym66","sessionRecording":false}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"hamsa-452fa79a","hasAudioNarration":false,"actualSubdomain":"hamsa-452fa79a","customDomains":["docs.tryhamsa.com"],"gitSource":{"type":"github","owner":"hamsa-dev","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aba7d75e5024a36fdb35844","collectionId":"530fa5de-69cb-481c-80ed-ee186974aa4b","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aba7d75e5024a36fdb35844"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aba7d75e5024a36fdb35844","clientVersion":"0.0.4074","searchFilterCounts":[{"language":"default","tag":"API Reference","count":103},{"language":"default","tag":"Agents Platform","count":77},{"language":"default","tag":"Agents","count":25},{"language":"default","tag":"Overview","count":20},{"language":"default","tag":"Flow Agent","count":18},{"language":"default","tag":"Media Platform","count":15},{"language":"default","tag":"Variables","count":13},{"language":"default","tag":"Developers","count":13},{"language":"default","tag":"Web Tools Routes","count":12},{"language":"default","tag":"Nodes","count":11}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#navbar>div>div>div>div:nth-child(3)>div{display:none!important}[data-theme=\"light\"] nav a[aria-current=\"page\"],[data-theme=\"light\"] nav a.active,[data-theme=\"light\"] .sidebar a[aria-current=\"page\"],[data-theme=\"light\"] .sidebar a.active,[data-theme=\"light\"] [style*=\"background\"][style*=\"#B4FD83\"],[data-theme=\"light\"] [style*=\"background\"][style*=\"rgb(180, 253, 131)\"]{background-color:#2D7A4F!important;color:#ffffff!important}[data-theme=\"dark\"] nav a[aria-current=\"page\"],[data-theme=\"dark\"] nav a.active,[data-theme=\"dark\"] .sidebar a[aria-current=\"page\"],[data-theme=\"dark\"] .sidebar a.active,[data-theme=\"dark\"] [style*=\"background\"][style*=\"#B4FD83\"],[data-theme=\"dark\"] [style*=\"background\"][style*=\"rgb(180, 253, 131)\"]{background-color:#B4FD83!important;color:#1a1a1a!important}[data-theme=\"light\"] button[class*=\"primary\"],[data-theme=\"light\"] .btn-primary{background-color:#2D7A4F!important;color:#ffffff!important}[data-theme=\"dark\"] button[class*=\"primary\"],[data-theme=\"dark\"] .btn-primary{background-color:#B4FD83!important;color:#1a1a1a!important}"}],"page":{"pagePath":"api-reference/endpoint/create-voice-agent-v2","slug":"/api-reference/endpoint/create-voice-agent-v2","pageMetadata":{"title":"Create Voice Agent","description":"Creates a new voice agent using the V2 API with enhanced configuration options.","deprecated":null,"version":null,"sidebarTitle":"Create voice agent v2","openapi":"/api-reference/openapi.json post /v2/voice-agents","href":"/api-reference/endpoint/create-voice-agent-v2","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Creates a new voice agent using the V2 API with enhanced configuration options.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Create Voice Agent","description":"Creates a new voice agent using the V2 API with enhanced configuration options.","deprecated":null,"version":null,"sidebarTitle":"Create voice agent v2","openapi":"/api-reference/openapi.json post /v2/voice-agents","href":"/api-reference/endpoint/create-voice-agent-v2","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Create Voice Agent","description":"Creates a new voice agent using the V2 API with enhanced configuration options.","requestBody":"1e948894-4da0-467a-8fbd-1c42f418e621","responses":{"201":"919e27a7-f949-45bf-8225-98464778b985","400":"0ada9721-d570-4c4b-bbf0-74fbc1040276","401":"a93b1cca-6612-4c63-836e-703e73f5bcab","500":"8cfa817e-6024-424b-80fe-5b1a52f48bc9"},"security":["c518edff-0efd-47f4-81d7-4fdd893088a3"],"x-mint":{"metadata":{"title":"Create Voice Agent"},"href":"/api-reference/endpoint/create-voice-agent-v2"},"method":"post","type":"path","servers":["ff17730e-9c86-4caa-bbcc-7af173285799"],"path":"/v2/voice-agents","baseUrlOptions":["https://api.tryhamsa.com"],"title":"Create Voice Agent","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the voice agent (max 150 characters).","maxLength":150,"example":"Customer Support Agent","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"type":{"type":"string","description":"Type of voice agent.","enum":["Single Prompt","Flow Agent"],"default":"Single Prompt","example":"Single Prompt","uniqueKey":"type","typeLabel":"enum\u003cstring>"},"conversation":{"type":"object","description":"Conversation settings for the voice agent.","properties":{"greetingMessage":{"type":"string","description":"Initial greeting message.","default":"Hello, how can I help you today?","example":"Welcome! How may I assist you?","uniqueKey":"conversation.greetingMessage","typeLabel":"string"},"greetingMessageType":{"oneOf":[{"type":"string","description":"Type of greeting message.","default":null,"example":"TEXT","uniqueKey":"conversation.greetingMessageType.oneOf.0","typeLabel":"string"},{"type":"null","description":"Type of greeting message.","default":null,"example":"TEXT","uniqueKey":"conversation.greetingMessageType.oneOf.1","typeLabel":"null"}],"uniqueKey":"conversation.greetingMessageType","typeLabel":"string | null"},"preamble":{"type":"string","description":"System instruction/prompt for the agent.","default":"You are a helpful assistant that will answer users questions.","example":"You are a customer support assistant.","uniqueKey":"conversation.preamble","typeLabel":"string"},"pokeMessages":{"type":"array","description":"Messages to prompt user engagement.","items":{"type":"string","uniqueKey":"conversation.pokeMessages.items.[INDEX]","typeLabel":"string"},"default":[],"example":["Are you still there?"],"uniqueKey":"conversation.pokeMessages","typeLabel":"string[]"},"params":{"type":"object","description":"Additional conversation parameters.","additionalProperties":{"type":"string","uniqueKey":"conversation.params.additionalProperties","typeLabel":"string"},"default":{},"example":{},"uniqueKey":"conversation.params","typeLabel":"object"},"alignment":{"type":"object","description":"Text alignment settings.","properties":{"greetingMessage":{"type":"string","default":"ltr","example":"ltr","uniqueKey":"conversation.alignment.greetingMessage","typeLabel":"string"},"preamble":{"type":"string","default":"ltr","example":"ltr","uniqueKey":"conversation.alignment.preamble","typeLabel":"string"}},"uniqueKey":"conversation.alignment","typeLabel":"object"}},"uniqueKey":"conversation","typeLabel":"object"},"voice":{"type":"object","description":"Voice settings for the agent.","properties":{"voiceId":{"oneOf":[{"type":"string","description":"TTS voice ID (max 200 characters).","default":null,"example":"en-US-Neural2-A","uniqueKey":"voice.voiceId.oneOf.0","typeLabel":"string"},{"type":"null","description":"TTS voice ID (max 200 characters).","default":null,"example":"en-US-Neural2-A","uniqueKey":"voice.voiceId.oneOf.1","typeLabel":"null"}],"uniqueKey":"voice.voiceId","typeLabel":"string | null"},"lang":{"type":"string","description":"Language code.","default":"ar","example":"en","uniqueKey":"voice.lang","typeLabel":"string"}},"uniqueKey":"voice","typeLabel":"object"},"llm":{"type":"object","description":"LLM configuration.","properties":{"provider":{"type":"string","description":"LLM provider.","enum":["openai","gemini","deepmyst","groq","custom"],"default":"openai","example":"openai","uniqueKey":"llm.provider","typeLabel":"enum\u003cstring>"},"model":{"type":"string","description":"Model name.","default":"gpt-4.1","example":"gpt-4","uniqueKey":"llm.model","typeLabel":"string"},"temperature":{"type":"number","description":"Temperature setting (0-1).","minimum":0,"maximum":1,"default":0.2,"example":0.7,"uniqueKey":"llm.temperature","typeLabel":"number"},"baseUrl":{"type":"string","description":"Custom base URL (required for custom provider).","example":"https://api.example.com","uniqueKey":"llm.baseUrl","typeLabel":"string"},"apiKey":{"type":"string","description":"Custom API key (required for custom provider).","example":"sk-...","uniqueKey":"llm.apiKey","typeLabel":"string"}},"uniqueKey":"llm","typeLabel":"object"},"callSettings":{"type":"object","description":"Call and audio settings.","properties":{"noiseCancellation":{"type":"string","description":"Noise cancellation mode.","enum":["disabled","telephony_optimized"],"default":"telephony_optimized","example":"telephony_optimized","uniqueKey":"callSettings.noiseCancellation","typeLabel":"enum\u003cstring>"},"cancelNoisePer":{"type":"string","description":"When to apply noise cancellation.","enum":["conversation","per_utterance"],"default":"conversation","example":"conversation","uniqueKey":"callSettings.cancelNoisePer","typeLabel":"enum\u003cstring>"},"interrupt":{"type":"boolean","description":"Allow user interruptions.","default":true,"example":true,"uniqueKey":"callSettings.interrupt","typeLabel":"boolean"},"responseDelay":{"type":"number","description":"Response delay in milliseconds (100-1500).","minimum":100,"maximum":1500,"default":400,"example":400,"uniqueKey":"callSettings.responseDelay","typeLabel":"number"},"minInterruptionDuration":{"type":"number","description":"Minimum interruption duration in seconds (0.2-1.5).","minimum":0.2,"maximum":1.5,"default":0.5,"example":0.5,"uniqueKey":"callSettings.minInterruptionDuration","typeLabel":"number"},"vadActivationThreshold":{"type":"number","description":"Voice activity detection threshold (0.2-0.9).","minimum":0.2,"maximum":0.9,"default":0.5,"example":0.5,"uniqueKey":"callSettings.vadActivationThreshold","typeLabel":"number"},"userInactivityTimeout":{"type":"number","description":"User inactivity timeout in seconds (5-30).","minimum":5,"maximum":30,"default":15,"example":15,"uniqueKey":"callSettings.userInactivityTimeout","typeLabel":"number"},"maxCallDuration":{"type":"number","description":"Maximum call duration in seconds (30-600).","minimum":30,"maximum":600,"default":300,"example":300,"uniqueKey":"callSettings.maxCallDuration","typeLabel":"number"},"silenceThreshold":{"type":"number","description":"Silence threshold in milliseconds.","minimum":1,"default":800,"example":800,"uniqueKey":"callSettings.silenceThreshold","typeLabel":"number"},"backgroundNoise":{"type":"boolean","description":"Enable background noise.","default":false,"example":false,"uniqueKey":"callSettings.backgroundNoise","typeLabel":"boolean"},"enableAutoGainControl":{"type":"boolean","description":"Enable automatic gain control.","default":false,"example":false,"uniqueKey":"callSettings.enableAutoGainControl","typeLabel":"boolean"},"sendDenoisedToStt":{"type":"boolean","description":"Send denoised audio to STT.","default":false,"example":false,"uniqueKey":"callSettings.sendDenoisedToStt","typeLabel":"boolean"},"waitForUserToSpeakFirst":{"type":"number","description":"Wait mode (0=disabled, 1=enabled, 2=enhanced).","minimum":0,"maximum":2,"default":0,"example":0,"uniqueKey":"callSettings.waitForUserToSpeakFirst","typeLabel":"number"},"thinkingVoice":{"type":"boolean","description":"Enable thinking voice feature.","default":false,"example":false,"uniqueKey":"callSettings.thinkingVoice","typeLabel":"boolean"},"speakerIdentification":{"type":"boolean","description":"Enable speaker identification.","default":false,"example":false,"uniqueKey":"callSettings.speakerIdentification","typeLabel":"boolean"},"agenticRag":{"type":"boolean","description":"Enable agentic RAG.","default":false,"example":false,"uniqueKey":"callSettings.agenticRag","typeLabel":"boolean"},"languageDialectSwitcher":{"type":"boolean","description":"Enable language dialect switcher.","default":false,"example":false,"uniqueKey":"callSettings.languageDialectSwitcher","typeLabel":"boolean"},"genderDetection":{"type":"boolean","description":"Enable gender detection.","default":false,"example":false,"uniqueKey":"callSettings.genderDetection","typeLabel":"boolean"},"smartCallEnd":{"type":"boolean","description":"Enable smart call end detection.","default":false,"example":false,"uniqueKey":"callSettings.smartCallEnd","typeLabel":"boolean"}},"uniqueKey":"callSettings","typeLabel":"object"},"tools":{"type":"array","description":"Web tools attached to the agent.","items":{"type":"object","properties":{"persistentId":{"type":"string","description":"Persistent identifier for the tool.","example":"tool_123","isRequired":true,"uniqueKey":"tools.items.[INDEX].persistentId","typeLabel":"string"},"toolId":{"type":"string","format":"uuid","description":"UUID of the web tool.","example":"48f7656f-098b-4c43-b165-7cfd2cc8ac30","isRequired":true,"uniqueKey":"tools.items.[INDEX].toolId","typeLabel":"string\u003cuuid>"},"version":{"type":"integer","description":"Tool version number.","minimum":1,"example":1,"isRequired":true,"uniqueKey":"tools.items.[INDEX].version","typeLabel":"integer"},"toolType":{"type":"string","description":"Type of tool.","enum":["FUNCTION","MCP"],"example":"FUNCTION","isRequired":true,"uniqueKey":"tools.items.[INDEX].toolType","typeLabel":"enum\u003cstring>"},"nodeId":{"type":"string","description":"Node ID for flow agents.","example":"node_1","uniqueKey":"tools.items.[INDEX].nodeId","typeLabel":"string"},"testResult":{"type":"object","description":"Test result data.","additionalProperties":true,"uniqueKey":"tools.items.[INDEX].testResult","typeLabel":"object"},"overrides":{"type":"object","description":"Tool override configurations.","additionalProperties":true,"uniqueKey":"tools.items.[INDEX].overrides","typeLabel":"object"}},"required":["persistentId","toolId","version","toolType"],"uniqueKey":"tools.items.[INDEX]","typeLabel":"object"},"default":[],"uniqueKey":"tools","typeLabel":"object[]"},"knowledgeBaseItemsIds":{"type":"array","description":"Array of knowledge base item UUIDs.","items":{"type":"string","format":"uuid","uniqueKey":"knowledgeBaseItemsIds.items.[INDEX]","typeLabel":"string\u003cuuid>"},"default":[],"example":["48f7656f-098b-4c43-b165-7cfd2cc8ac30"],"uniqueKey":"knowledgeBaseItemsIds","typeLabel":"string\u003cuuid>[]"},"voiceDictionaryIds":{"type":"array","description":"Array of voice dictionary UUIDs.","items":{"type":"string","format":"uuid","uniqueKey":"voiceDictionaryIds.items.[INDEX]","typeLabel":"string\u003cuuid>"},"default":[],"example":["48f7656f-098b-4c43-b165-7cfd2cc8ac30"],"uniqueKey":"voiceDictionaryIds","typeLabel":"string\u003cuuid>[]"},"phoneNumber":{"oneOf":[{"type":"object","description":"Phone number configuration.","properties":{"type":{"type":"string","description":"Phone number provider type.","example":"TWILIO","isRequired":true,"uniqueKey":"phoneNumber.oneOf.0.type","typeLabel":"string"},"id":{"type":"string","format":"uuid","description":"Phone number UUID.","example":"48f7656f-098b-4c43-b165-7cfd2cc8ac30","isRequired":true,"uniqueKey":"phoneNumber.oneOf.0.id","typeLabel":"string\u003cuuid>"}},"required":["type","id"],"uniqueKey":"phoneNumber.oneOf.0","typeLabel":"object"},{"type":"null","description":"Phone number configuration.","properties":{"type":{"type":"string","description":"Phone number provider type.","example":"TWILIO"},"id":{"type":"string","format":"uuid","description":"Phone number UUID.","example":"48f7656f-098b-4c43-b165-7cfd2cc8ac30"}},"required":["type","id"],"uniqueKey":"phoneNumber.oneOf.1","typeLabel":"null"}],"uniqueKey":"phoneNumber","typeLabel":"object | null"},"webhookUrl":{"type":"string","format":"uri","description":"Webhook URL for external integrations.","example":"https://example.com/webhook","uniqueKey":"webhookUrl","typeLabel":"string\u003curi>"},"webhookAuth":{"type":"object","description":"Webhook authentication configuration.","additionalProperties":true,"uniqueKey":"webhookAuth","typeLabel":"object"},"workflow":{"oneOf":[{"type":"object","description":"Workflow graph for Flow Agents (`type` = `\"Flow Agent\"`). Ignored for Single Prompt agents.","required":["nodes","edges"],"example":{"nodes":[{"id":"2ZHj3IUpJFc-83H2-f8d3","type":"start","label":"Start","message":"Hello, how can I help you today?","messageType":"prompt","position":{"x":0,"y":0},"metadata":{"version":1},"transitions":[]}],"edges":[],"customVariables":[{"id":"z5QsyxUbrKPjYMGaMj1e1","name":"customer_name","dataType":"string","description":"","defaultValue":"john","extractionPrompt":"","enumValues":[]}]},"properties":{"nodes":{"type":"array","items":{"oneOf":[{"type":"object","description":"A workflow node. The concrete shape depends on the `type` discriminator.","required":["id","type","position","metadata"],"properties":{"id":{"type":"string","description":"Unique node id (nanoid or UUID).","example":"2ZHj3IUpJFc-83H2-f8d3","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.id","typeLabel":"string"},"type":{"type":"string","description":"Node type discriminator.","enum":["conversation"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"metadata":{"type":"object","additionalProperties":false,"description":"Node metadata.","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.metadata.updatedAt","typeLabel":"string\u003cdate-time>"},"version":{"type":"integer","minimum":1,"default":1,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.metadata.version","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.metadata","typeLabel":"object"},"position":{"type":"object","description":"Canvas position of the node.","required":["x","y"],"properties":{"x":{"type":"number","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.position.x","typeLabel":"number"},"y":{"type":"number","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.position.y","typeLabel":"number"}},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.position","typeLabel":"object"},"label":{"type":"string","maxLength":100,"description":"Display label.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.label","typeLabel":"string"},"description":{"type":"string","maxLength":500,"description":"Optional node description.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.description","typeLabel":"string"},"isGlobal":{"type":"boolean","default":false,"description":"Whether this is a global node.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.isGlobal","typeLabel":"boolean"},"globalCondition":{"type":"string","description":"Condition that activates a global node. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.globalCondition","typeLabel":"string"},"globalConditionType":{"type":"string","enum":["prompt","dtmf"],"default":"prompt","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.globalConditionType","typeLabel":"enum\u003cstring>"},"globalDtmfKey":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"description":"DTMF key that triggers the global node when `globalConditionType` is `dtmf`.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.globalDtmfKey","typeLabel":"enum\u003cstring>"},"globalReturnToSource":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.globalReturnToSource","typeLabel":"boolean"},"requiresDoubleConfirm":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.requiresDoubleConfirm","typeLabel":"boolean"},"skipResponse":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.skipResponse","typeLabel":"boolean"},"staticVariables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A statically-set variable.","required":["id","name","dataType","value"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.staticVariables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.staticVariables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.staticVariables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"value":{"description":"The static value (string, number, boolean, array, object, or null).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.staticVariables.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.staticVariables.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.staticVariables.items.[INDEX]","typeLabel":"object"},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.staticVariables","typeLabel":"object[]"},"transitions":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A transition from one node to another, gated by a condition.","required":["id","condition","targetNodeId"],"properties":{"id":{"type":"string","description":"Transition id (nanoid or UUID).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].id","typeLabel":"string"},"condition":{"oneOf":[{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["natural_language"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Natural-language condition prompt.","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.0.prompt","typeLabel":"string"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.0.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.0","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","conditions"],"properties":{"type":{"type":"string","enum":["structured_equation"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"conditions":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"description":"A single equation condition within a structured_equation.","required":["variable","operator","value"],"properties":{"variable":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].variable","typeLabel":"string"},"operator":{"type":"string","enum":["equals","not_equals","greater_than","less_than","greater_than_or_equal","less_than_or_equal","contains","not_contains","exists","not_exists","regex"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Comparison value (string, number, or boolean).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.1.conditions","typeLabel":"object[]"},"logic":{"type":"string","enum":["all","any"],"default":"all","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.1.logic","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.1.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","key"],"properties":{"type":{"type":"string","enum":["dtmf"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.2.type","typeLabel":"enum\u003cstring>"},"key":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.2.key","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.2.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["always"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.3.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Default path","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.3.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.3","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["auto"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.4.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Auto-advance","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.4.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.4","typeLabel":"object"}],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition","typeLabel":"object"},"targetNodeId":{"type":"string","description":"Target node id, or an empty string if unconnected.","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].targetNodeId","typeLabel":"string"},"name":{"type":"string","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].name","typeLabel":"string"},"priority":{"type":"integer","minimum":0,"default":0,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].priority","typeLabel":"integer"},"isEnabled":{"type":"boolean","default":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].isEnabled","typeLabel":"boolean"},"metadata":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].metadata.updatedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].metadata","typeLabel":"object"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX]","typeLabel":"object"},"default":[],"description":"Outgoing transitions to other nodes.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions","typeLabel":"object[]"},"messageType":{"type":"string","enum":["static","prompt"],"default":"prompt","description":"Whether the message is a literal `static` string or a `prompt` for the LLM.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.messageType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Node message. May be empty. Supports `{{variable}}` interpolation.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.message","typeLabel":"string"},"interruptMode":{"type":"string","enum":["inherit","enable","disable"],"default":"inherit","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.interruptMode","typeLabel":"enum\u003cstring>"},"extractVariables":{"type":"object","additionalProperties":false,"description":"Variable extraction config for a node.","properties":{"enabled":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.enabled","typeLabel":"boolean"},"variables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A workflow variable (also used for extracted and nested variables).","required":["id","name","dataType"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","description":"Variable id — nanoid or author slug (e.g. `out_var_flights`).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","description":"Variable name (snake_case).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].description","typeLabel":"string"},"enumValues":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["value"],"properties":{"value":{"type":"string","maxLength":100,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].enumValues.items.[INDEX].value","typeLabel":"string"},"label":{"type":"string","maxLength":100,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].enumValues.items.[INDEX].label","typeLabel":"string"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].enumValues.items.[INDEX]","typeLabel":"object"},"default":[],"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].enumValues","typeLabel":"object[]"},"isEnumEnabled":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].isEnumEnabled","typeLabel":"boolean"},"isRequired":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].isRequired","typeLabel":"boolean"},"defaultValue":{"oneOf":[{"description":"Default value (string, number, boolean, or null).","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].defaultValue.oneOf.0","typeLabel":"any"},{"description":"Default value (string, number, boolean, or null).","type":"null","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].defaultValue.oneOf.1","typeLabel":"null"}],"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].defaultValue","typeLabel":"any | null"},"extractionPrompt":{"type":"string","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].extractionPrompt","typeLabel":"string"},"sourceNodeId":{"type":"string","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].sourceNodeId","typeLabel":"string"},"sourceNodeType":{"type":"string","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].sourceNodeType","typeLabel":"string"},"properties":{"type":"array","items":{"$circularRef":"aa2f421c-029e-4c52-9234-ca4cd0587f85"},"description":"Child variables (for `object` types).","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].properties","typeLabel":"array"},"item":{"$circularRef":"aa2f421c-029e-4c52-9234-ca4cd0587f85","description":"Element schema (for `array` types).","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].item","typeLabel":"any"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX]","typeLabel":"object"},"default":[],"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables","typeLabel":"object[]"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables","typeLabel":"object"},"dtmfInputCapture":{"oneOf":[{"type":"object","description":"DTMF capture config, or null.","properties":{"enabled":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.dtmfInputCapture.oneOf.0.enabled","typeLabel":"boolean"},"variableName":{"type":"string","default":"","description":"Variable to store captured digits (required when `enabled`).","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.dtmfInputCapture.oneOf.0.variableName","typeLabel":"string"},"digitLimit":{"type":"integer","minimum":1,"maximum":20,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.dtmfInputCapture.oneOf.0.digitLimit","typeLabel":"integer"},"terminationKey":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.dtmfInputCapture.oneOf.0.terminationKey","typeLabel":"enum\u003cstring>"},"timeoutMs":{"type":"integer","minimum":1000,"maximum":30000,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.dtmfInputCapture.oneOf.0.timeoutMs","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.dtmfInputCapture.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.dtmfInputCapture.oneOf.1","typeLabel":"null"}],"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.dtmfInputCapture","typeLabel":"object | null"}},"additionalProperties":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"A workflow node. The concrete shape depends on the `type` discriminator.","required":["id","type","position","metadata"],"properties":{"id":{"type":"string","description":"Unique node id (nanoid or UUID).","example":"2ZHj3IUpJFc-83H2-f8d3","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.id","typeLabel":"string"},"type":{"type":"string","description":"Node type discriminator.","enum":["start"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"metadata":{"type":"object","additionalProperties":false,"description":"Node metadata.","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.metadata.updatedAt","typeLabel":"string\u003cdate-time>"},"version":{"type":"integer","minimum":1,"default":1,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.metadata.version","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.metadata","typeLabel":"object"},"position":{"type":"object","description":"Canvas position of the node.","required":["x","y"],"properties":{"x":{"type":"number","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.position.x","typeLabel":"number"},"y":{"type":"number","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.position.y","typeLabel":"number"}},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.position","typeLabel":"object"},"label":{"type":"string","maxLength":100,"description":"Display label.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.label","typeLabel":"string"},"description":{"type":"string","maxLength":500,"description":"Optional node description.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.description","typeLabel":"string"},"isGlobal":{"type":"boolean","default":false,"description":"Whether this is a global node.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.isGlobal","typeLabel":"boolean"},"globalCondition":{"type":"string","description":"Condition that activates a global node. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.globalCondition","typeLabel":"string"},"globalConditionType":{"type":"string","enum":["prompt","dtmf"],"default":"prompt","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.globalConditionType","typeLabel":"enum\u003cstring>"},"globalDtmfKey":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"description":"DTMF key that triggers the global node when `globalConditionType` is `dtmf`.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.globalDtmfKey","typeLabel":"enum\u003cstring>"},"globalReturnToSource":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.globalReturnToSource","typeLabel":"boolean"},"requiresDoubleConfirm":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.requiresDoubleConfirm","typeLabel":"boolean"},"skipResponse":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.skipResponse","typeLabel":"boolean"},"staticVariables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A statically-set variable.","required":["id","name","dataType","value"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.staticVariables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.staticVariables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.staticVariables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"value":{"description":"The static value (string, number, boolean, array, object, or null).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.staticVariables.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.staticVariables.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.staticVariables.items.[INDEX]","typeLabel":"object"},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.staticVariables","typeLabel":"object[]"},"transitions":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A transition from one node to another, gated by a condition.","required":["id","condition","targetNodeId"],"properties":{"id":{"type":"string","description":"Transition id (nanoid or UUID).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].id","typeLabel":"string"},"condition":{"oneOf":[{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["natural_language"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Natural-language condition prompt.","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.0.prompt","typeLabel":"string"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.0.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.0","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","conditions"],"properties":{"type":{"type":"string","enum":["structured_equation"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"conditions":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"description":"A single equation condition within a structured_equation.","required":["variable","operator","value"],"properties":{"variable":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].variable","typeLabel":"string"},"operator":{"type":"string","enum":["equals","not_equals","greater_than","less_than","greater_than_or_equal","less_than_or_equal","contains","not_contains","exists","not_exists","regex"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Comparison value (string, number, or boolean).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.1.conditions","typeLabel":"object[]"},"logic":{"type":"string","enum":["all","any"],"default":"all","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.1.logic","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.1.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","key"],"properties":{"type":{"type":"string","enum":["dtmf"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.2.type","typeLabel":"enum\u003cstring>"},"key":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.2.key","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.2.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["always"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.3.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Default path","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.3.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.3","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["auto"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.4.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Auto-advance","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.4.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.4","typeLabel":"object"}],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition","typeLabel":"object"},"targetNodeId":{"type":"string","description":"Target node id, or an empty string if unconnected.","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].targetNodeId","typeLabel":"string"},"name":{"type":"string","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].name","typeLabel":"string"},"priority":{"type":"integer","minimum":0,"default":0,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].priority","typeLabel":"integer"},"isEnabled":{"type":"boolean","default":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].isEnabled","typeLabel":"boolean"},"metadata":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].metadata.updatedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].metadata","typeLabel":"object"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX]","typeLabel":"object"},"default":[],"description":"Outgoing transitions to other nodes.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions","typeLabel":"object[]"},"subType":{"type":"string","enum":["conversation","tool"],"default":"conversation","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.subType","typeLabel":"enum\u003cstring>"},"messageType":{"type":"string","enum":["static","prompt"],"default":"prompt","description":"Whether the message is a literal `static` string or a `prompt` for the LLM.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.messageType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Node message. May be empty. Supports `{{variable}}` interpolation.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.message","typeLabel":"string"},"interrupt":{"type":"boolean","default":false,"description":"Allow user to interrupt.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.interrupt","typeLabel":"boolean"},"extractVariables":{"type":"object","additionalProperties":false,"description":"Variable extraction config for a node.","properties":{"enabled":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.enabled","typeLabel":"boolean"},"variables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A workflow variable (also used for extracted and nested variables).","required":["id","name","dataType"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","description":"Variable id — nanoid or author slug (e.g. `out_var_flights`).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","description":"Variable name (snake_case).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].description","typeLabel":"string"},"enumValues":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["value"],"properties":{"value":{"type":"string","maxLength":100,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].enumValues.items.[INDEX].value","typeLabel":"string"},"label":{"type":"string","maxLength":100,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].enumValues.items.[INDEX].label","typeLabel":"string"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].enumValues.items.[INDEX]","typeLabel":"object"},"default":[],"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].enumValues","typeLabel":"object[]"},"isEnumEnabled":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].isEnumEnabled","typeLabel":"boolean"},"isRequired":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].isRequired","typeLabel":"boolean"},"defaultValue":{"oneOf":[{"description":"Default value (string, number, boolean, or null).","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].defaultValue.oneOf.0","typeLabel":"any"},{"description":"Default value (string, number, boolean, or null).","type":"null","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].defaultValue.oneOf.1","typeLabel":"null"}],"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].defaultValue","typeLabel":"any | null"},"extractionPrompt":{"type":"string","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].extractionPrompt","typeLabel":"string"},"sourceNodeId":{"type":"string","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].sourceNodeId","typeLabel":"string"},"sourceNodeType":{"type":"string","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].sourceNodeType","typeLabel":"string"},"properties":{"type":"array","items":{"$circularRef":"aa2f421c-029e-4c52-9234-ca4cd0587f85"},"description":"Child variables (for `object` types).","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].properties","typeLabel":"array"},"item":{"$circularRef":"aa2f421c-029e-4c52-9234-ca4cd0587f85","description":"Element schema (for `array` types).","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].item","typeLabel":"any"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX]","typeLabel":"object"},"default":[],"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables","typeLabel":"object[]"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables","typeLabel":"object"},"dtmfInputCapture":{"oneOf":[{"type":"object","description":"Captures DTMF digits into a variable.","properties":{"enabled":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.dtmfInputCapture.oneOf.0.enabled","typeLabel":"boolean"},"variableName":{"type":"string","default":"","description":"Variable to store captured digits (required when `enabled`).","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.dtmfInputCapture.oneOf.0.variableName","typeLabel":"string"},"digitLimit":{"type":"integer","minimum":1,"maximum":20,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.dtmfInputCapture.oneOf.0.digitLimit","typeLabel":"integer"},"terminationKey":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.dtmfInputCapture.oneOf.0.terminationKey","typeLabel":"enum\u003cstring>"},"timeoutMs":{"type":"integer","minimum":1000,"maximum":30000,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.dtmfInputCapture.oneOf.0.timeoutMs","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.dtmfInputCapture.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.dtmfInputCapture.oneOf.1","typeLabel":"null"}],"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.dtmfInputCapture","typeLabel":"object | null"},"timeout":{"type":"integer","minimum":1,"default":30000,"description":"Timeout in milliseconds.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.timeout","typeLabel":"integer"},"overrideResponse":{"type":"boolean","default":false,"description":"Override the default response with `customResponse`.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.overrideResponse","typeLabel":"boolean"},"customResponse":{"type":"string","description":"Custom response shown instead of the default. Required when `overrideResponse` is true. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.customResponse","typeLabel":"string"},"outputMapping":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.outputMapping.additionalProperties","typeLabel":"string"},"default":{},"description":"Maps tool output fields to workflow variables.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.outputMapping","typeLabel":"object"},"onErrorBehavior":{"type":"string","enum":["continue","retry","fail"],"default":"continue","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.onErrorBehavior","typeLabel":"enum\u003cstring>"},"errorMessage":{"type":"string","description":"Message spoken when the node errors. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.errorMessage","typeLabel":"string"},"processingMessage":{"type":"string","description":"Message spoken while the node runs.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.processingMessage","typeLabel":"string"},"processingMessageType":{"type":"string","enum":["static","prompt"],"default":"static","description":"Whether the message is a literal `static` string or a `prompt` for the LLM.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.processingMessageType","typeLabel":"enum\u003cstring>"}},"additionalProperties":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","description":"A workflow node. The concrete shape depends on the `type` discriminator.","required":["id","type","position","metadata"],"properties":{"id":{"type":"string","description":"Unique node id (nanoid or UUID).","example":"2ZHj3IUpJFc-83H2-f8d3","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.id","typeLabel":"string"},"type":{"type":"string","description":"Node type discriminator.","enum":["tool"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"metadata":{"type":"object","additionalProperties":false,"description":"Node metadata.","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.metadata.updatedAt","typeLabel":"string\u003cdate-time>"},"version":{"type":"integer","minimum":1,"default":1,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.metadata.version","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.metadata","typeLabel":"object"},"position":{"type":"object","description":"Canvas position of the node.","required":["x","y"],"properties":{"x":{"type":"number","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.position.x","typeLabel":"number"},"y":{"type":"number","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.position.y","typeLabel":"number"}},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.position","typeLabel":"object"},"label":{"type":"string","maxLength":100,"description":"Display label.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.label","typeLabel":"string"},"description":{"type":"string","maxLength":500,"description":"Optional node description.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.description","typeLabel":"string"},"isGlobal":{"type":"boolean","default":false,"description":"Whether this is a global node.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.isGlobal","typeLabel":"boolean"},"globalCondition":{"type":"string","description":"Condition that activates a global node. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.globalCondition","typeLabel":"string"},"globalConditionType":{"type":"string","enum":["prompt","dtmf"],"default":"prompt","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.globalConditionType","typeLabel":"enum\u003cstring>"},"globalDtmfKey":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"description":"DTMF key that triggers the global node when `globalConditionType` is `dtmf`.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.globalDtmfKey","typeLabel":"enum\u003cstring>"},"globalReturnToSource":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.globalReturnToSource","typeLabel":"boolean"},"requiresDoubleConfirm":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.requiresDoubleConfirm","typeLabel":"boolean"},"skipResponse":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.skipResponse","typeLabel":"boolean"},"staticVariables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A statically-set variable.","required":["id","name","dataType","value"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.staticVariables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.staticVariables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.staticVariables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"value":{"description":"The static value (string, number, boolean, array, object, or null).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.staticVariables.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.staticVariables.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.staticVariables.items.[INDEX]","typeLabel":"object"},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.staticVariables","typeLabel":"object[]"},"transitions":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A transition from one node to another, gated by a condition.","required":["id","condition","targetNodeId"],"properties":{"id":{"type":"string","description":"Transition id (nanoid or UUID).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].id","typeLabel":"string"},"condition":{"oneOf":[{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["natural_language"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Natural-language condition prompt.","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.0.prompt","typeLabel":"string"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.0.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.0","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","conditions"],"properties":{"type":{"type":"string","enum":["structured_equation"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"conditions":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"description":"A single equation condition within a structured_equation.","required":["variable","operator","value"],"properties":{"variable":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].variable","typeLabel":"string"},"operator":{"type":"string","enum":["equals","not_equals","greater_than","less_than","greater_than_or_equal","less_than_or_equal","contains","not_contains","exists","not_exists","regex"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Comparison value (string, number, or boolean).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.1.conditions","typeLabel":"object[]"},"logic":{"type":"string","enum":["all","any"],"default":"all","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.1.logic","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.1.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","key"],"properties":{"type":{"type":"string","enum":["dtmf"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.2.type","typeLabel":"enum\u003cstring>"},"key":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.2.key","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.2.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["always"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.3.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Default path","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.3.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.3","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["auto"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.4.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Auto-advance","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.4.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.4","typeLabel":"object"}],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition","typeLabel":"object"},"targetNodeId":{"type":"string","description":"Target node id, or an empty string if unconnected.","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].targetNodeId","typeLabel":"string"},"name":{"type":"string","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].name","typeLabel":"string"},"priority":{"type":"integer","minimum":0,"default":0,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].priority","typeLabel":"integer"},"isEnabled":{"type":"boolean","default":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].isEnabled","typeLabel":"boolean"},"metadata":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].metadata.updatedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].metadata","typeLabel":"object"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX]","typeLabel":"object"},"default":[],"description":"Outgoing transitions to other nodes.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions","typeLabel":"object[]"},"parameters":{"type":"array","items":{"type":"object","required":["name","value"],"properties":{"name":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.parameters.items.[INDEX].name","typeLabel":"string"},"value":{"type":"string","description":"Parameter value. Supports `{{variable}}` interpolation; may be empty.","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.parameters.items.[INDEX].value","typeLabel":"string"},"type":{"type":"string","enum":["string","number","boolean","object"],"default":"string","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.parameters.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"required":{"type":"boolean","default":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.parameters.items.[INDEX].required","typeLabel":"boolean"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.parameters.items.[INDEX]","typeLabel":"object"},"default":[],"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.parameters","typeLabel":"object[]"},"timeout":{"type":"integer","minimum":1,"default":30000,"description":"Timeout in milliseconds.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.timeout","typeLabel":"integer"},"extractVariables":{"type":"object","additionalProperties":false,"description":"Variable extraction config for a node.","properties":{"enabled":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.enabled","typeLabel":"boolean"},"variables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A workflow variable (also used for extracted and nested variables).","required":["id","name","dataType"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","description":"Variable id — nanoid or author slug (e.g. `out_var_flights`).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","description":"Variable name (snake_case).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].description","typeLabel":"string"},"enumValues":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["value"],"properties":{"value":{"type":"string","maxLength":100,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].enumValues.items.[INDEX].value","typeLabel":"string"},"label":{"type":"string","maxLength":100,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].enumValues.items.[INDEX].label","typeLabel":"string"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].enumValues.items.[INDEX]","typeLabel":"object"},"default":[],"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].enumValues","typeLabel":"object[]"},"isEnumEnabled":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].isEnumEnabled","typeLabel":"boolean"},"isRequired":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].isRequired","typeLabel":"boolean"},"defaultValue":{"oneOf":[{"description":"Default value (string, number, boolean, or null).","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].defaultValue.oneOf.0","typeLabel":"any"},{"description":"Default value (string, number, boolean, or null).","type":"null","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].defaultValue.oneOf.1","typeLabel":"null"}],"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].defaultValue","typeLabel":"any | null"},"extractionPrompt":{"type":"string","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].extractionPrompt","typeLabel":"string"},"sourceNodeId":{"type":"string","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].sourceNodeId","typeLabel":"string"},"sourceNodeType":{"type":"string","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].sourceNodeType","typeLabel":"string"},"properties":{"type":"array","items":{"$circularRef":"aa2f421c-029e-4c52-9234-ca4cd0587f85"},"description":"Child variables (for `object` types).","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].properties","typeLabel":"array"},"item":{"$circularRef":"aa2f421c-029e-4c52-9234-ca4cd0587f85","description":"Element schema (for `array` types).","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].item","typeLabel":"any"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX]","typeLabel":"object"},"default":[],"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables","typeLabel":"object[]"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables","typeLabel":"object"},"overrideResponse":{"type":"boolean","default":false,"description":"Override the default response with `customResponse`.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.overrideResponse","typeLabel":"boolean"},"customResponse":{"type":"string","description":"Custom response shown instead of the default. Required when `overrideResponse` is true. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.customResponse","typeLabel":"string"},"outputMapping":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.outputMapping.additionalProperties","typeLabel":"string"},"default":{},"description":"Maps tool output fields to workflow variables.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.outputMapping","typeLabel":"object"},"onErrorBehavior":{"type":"string","enum":["continue","retry","fail"],"default":"continue","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.onErrorBehavior","typeLabel":"enum\u003cstring>"},"errorMessage":{"type":"string","description":"Message spoken when the node errors. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.errorMessage","typeLabel":"string"},"processingMessage":{"type":"string","description":"Message spoken while the node runs.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.processingMessage","typeLabel":"string"},"processingMessageType":{"type":"string","enum":["static","prompt"],"default":"static","description":"Whether the message is a literal `static` string or a `prompt` for the LLM.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.processingMessageType","typeLabel":"enum\u003cstring>"}},"additionalProperties":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","description":"A workflow node. The concrete shape depends on the `type` discriminator.","required":["id","type","position","metadata"],"properties":{"id":{"type":"string","description":"Unique node id (nanoid or UUID).","example":"2ZHj3IUpJFc-83H2-f8d3","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.id","typeLabel":"string"},"type":{"type":"string","description":"Node type discriminator.","enum":["web_tool"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"metadata":{"type":"object","additionalProperties":false,"description":"Node metadata.","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.metadata.updatedAt","typeLabel":"string\u003cdate-time>"},"version":{"type":"integer","minimum":1,"default":1,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.metadata.version","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.metadata","typeLabel":"object"},"position":{"type":"object","description":"Canvas position of the node.","required":["x","y"],"properties":{"x":{"type":"number","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.position.x","typeLabel":"number"},"y":{"type":"number","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.position.y","typeLabel":"number"}},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.position","typeLabel":"object"},"label":{"type":"string","maxLength":100,"description":"Display label.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.label","typeLabel":"string"},"description":{"type":"string","maxLength":500,"description":"Optional node description.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.description","typeLabel":"string"},"isGlobal":{"type":"boolean","default":false,"description":"Whether this is a global node.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.isGlobal","typeLabel":"boolean"},"globalCondition":{"type":"string","description":"Condition that activates a global node. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.globalCondition","typeLabel":"string"},"globalConditionType":{"type":"string","enum":["prompt","dtmf"],"default":"prompt","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.globalConditionType","typeLabel":"enum\u003cstring>"},"globalDtmfKey":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"description":"DTMF key that triggers the global node when `globalConditionType` is `dtmf`.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.globalDtmfKey","typeLabel":"enum\u003cstring>"},"globalReturnToSource":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.globalReturnToSource","typeLabel":"boolean"},"requiresDoubleConfirm":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.requiresDoubleConfirm","typeLabel":"boolean"},"skipResponse":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.skipResponse","typeLabel":"boolean"},"staticVariables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A statically-set variable.","required":["id","name","dataType","value"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.staticVariables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.staticVariables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.staticVariables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"value":{"description":"The static value (string, number, boolean, array, object, or null).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.staticVariables.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.staticVariables.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.staticVariables.items.[INDEX]","typeLabel":"object"},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.staticVariables","typeLabel":"object[]"},"transitions":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A transition from one node to another, gated by a condition.","required":["id","condition","targetNodeId"],"properties":{"id":{"type":"string","description":"Transition id (nanoid or UUID).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].id","typeLabel":"string"},"condition":{"oneOf":[{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["natural_language"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Natural-language condition prompt.","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.0.prompt","typeLabel":"string"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.0.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.0","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","conditions"],"properties":{"type":{"type":"string","enum":["structured_equation"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"conditions":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"description":"A single equation condition within a structured_equation.","required":["variable","operator","value"],"properties":{"variable":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].variable","typeLabel":"string"},"operator":{"type":"string","enum":["equals","not_equals","greater_than","less_than","greater_than_or_equal","less_than_or_equal","contains","not_contains","exists","not_exists","regex"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Comparison value (string, number, or boolean).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.1.conditions","typeLabel":"object[]"},"logic":{"type":"string","enum":["all","any"],"default":"all","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.1.logic","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.1.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","key"],"properties":{"type":{"type":"string","enum":["dtmf"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.2.type","typeLabel":"enum\u003cstring>"},"key":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.2.key","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.2.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["always"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.3.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Default path","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.3.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.3","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["auto"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.4.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Auto-advance","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.4.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.4","typeLabel":"object"}],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition","typeLabel":"object"},"targetNodeId":{"type":"string","description":"Target node id, or an empty string if unconnected.","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].targetNodeId","typeLabel":"string"},"name":{"type":"string","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].name","typeLabel":"string"},"priority":{"type":"integer","minimum":0,"default":0,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].priority","typeLabel":"integer"},"isEnabled":{"type":"boolean","default":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].isEnabled","typeLabel":"boolean"},"metadata":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].metadata.updatedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].metadata","typeLabel":"object"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX]","typeLabel":"object"},"default":[],"description":"Outgoing transitions to other nodes.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions","typeLabel":"object[]"},"processingMessage":{"type":"string","description":"Message spoken while the web tool runs.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.processingMessage","typeLabel":"string"},"processingMessageType":{"type":"string","enum":["static","prompt"],"default":"static","description":"Whether the message is a literal `static` string or a `prompt` for the LLM.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.processingMessageType","typeLabel":"enum\u003cstring>"}},"additionalProperties":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","description":"A workflow node. The concrete shape depends on the `type` discriminator.","required":["phoneNumber","id","type","position","metadata"],"properties":{"id":{"type":"string","description":"Unique node id (nanoid or UUID).","example":"2ZHj3IUpJFc-83H2-f8d3","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.id","typeLabel":"string"},"type":{"type":"string","description":"Node type discriminator.","enum":["transfer_call"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"metadata":{"type":"object","additionalProperties":false,"description":"Node metadata.","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.metadata.updatedAt","typeLabel":"string\u003cdate-time>"},"version":{"type":"integer","minimum":1,"default":1,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.metadata.version","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.metadata","typeLabel":"object"},"position":{"type":"object","description":"Canvas position of the node.","required":["x","y"],"properties":{"x":{"type":"number","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.position.x","typeLabel":"number"},"y":{"type":"number","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.position.y","typeLabel":"number"}},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.position","typeLabel":"object"},"phoneNumber":{"type":"string","pattern":"^\\+?[1-9]\\d{1,14}$","description":"Destination phone number (E.164).","example":"+14155552671","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.phoneNumber","typeLabel":"string"},"label":{"type":"string","maxLength":100,"description":"Display label.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.label","typeLabel":"string"},"description":{"type":"string","maxLength":500,"description":"Optional node description.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.description","typeLabel":"string"},"isGlobal":{"type":"boolean","default":false,"description":"Whether this is a global node.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.isGlobal","typeLabel":"boolean"},"globalCondition":{"type":"string","description":"Condition that activates a global node. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.globalCondition","typeLabel":"string"},"globalConditionType":{"type":"string","enum":["prompt","dtmf"],"default":"prompt","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.globalConditionType","typeLabel":"enum\u003cstring>"},"globalDtmfKey":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"description":"DTMF key that triggers the global node when `globalConditionType` is `dtmf`.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.globalDtmfKey","typeLabel":"enum\u003cstring>"},"globalReturnToSource":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.globalReturnToSource","typeLabel":"boolean"},"requiresDoubleConfirm":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.requiresDoubleConfirm","typeLabel":"boolean"},"skipResponse":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.skipResponse","typeLabel":"boolean"},"staticVariables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A statically-set variable.","required":["id","name","dataType","value"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.staticVariables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.staticVariables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.staticVariables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"value":{"description":"The static value (string, number, boolean, array, object, or null).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.staticVariables.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.staticVariables.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.staticVariables.items.[INDEX]","typeLabel":"object"},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.staticVariables","typeLabel":"object[]"},"transitions":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A transition from one node to another, gated by a condition.","required":["id","condition","targetNodeId"],"properties":{"id":{"type":"string","description":"Transition id (nanoid or UUID).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].id","typeLabel":"string"},"condition":{"oneOf":[{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["natural_language"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Natural-language condition prompt.","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.0.prompt","typeLabel":"string"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.0.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.0","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","conditions"],"properties":{"type":{"type":"string","enum":["structured_equation"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"conditions":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"description":"A single equation condition within a structured_equation.","required":["variable","operator","value"],"properties":{"variable":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].variable","typeLabel":"string"},"operator":{"type":"string","enum":["equals","not_equals","greater_than","less_than","greater_than_or_equal","less_than_or_equal","contains","not_contains","exists","not_exists","regex"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Comparison value (string, number, or boolean).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.1.conditions","typeLabel":"object[]"},"logic":{"type":"string","enum":["all","any"],"default":"all","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.1.logic","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.1.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","key"],"properties":{"type":{"type":"string","enum":["dtmf"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.2.type","typeLabel":"enum\u003cstring>"},"key":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.2.key","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.2.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["always"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.3.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Default path","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.3.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.3","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["auto"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.4.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Auto-advance","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.4.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.4","typeLabel":"object"}],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition","typeLabel":"object"},"targetNodeId":{"type":"string","description":"Target node id, or an empty string if unconnected.","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].targetNodeId","typeLabel":"string"},"name":{"type":"string","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].name","typeLabel":"string"},"priority":{"type":"integer","minimum":0,"default":0,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].priority","typeLabel":"integer"},"isEnabled":{"type":"boolean","default":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].isEnabled","typeLabel":"boolean"},"metadata":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].metadata.updatedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].metadata","typeLabel":"object"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX]","typeLabel":"object"},"default":[],"description":"Outgoing transitions to other nodes.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions","typeLabel":"object[]"},"transferType":{"type":"string","enum":["warm","cold"],"default":"cold","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transferType","typeLabel":"enum\u003cstring>"},"transferMessage":{"type":"string","description":"Message spoken before transferring. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transferMessage","typeLabel":"string"},"transferMessageType":{"type":"string","enum":["static","prompt"],"default":"prompt","description":"Whether the message is a literal `static` string or a `prompt` for the LLM.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transferMessageType","typeLabel":"enum\u003cstring>"},"timeout":{"type":"integer","minimum":1,"default":30000,"description":"Timeout in milliseconds.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.timeout","typeLabel":"integer"},"sipHeaders":{"type":"array","items":{"type":"object","required":["id","name","value"],"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.sipHeaders.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.sipHeaders.items.[INDEX].name","typeLabel":"string"},"value":{"type":"string","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.sipHeaders.items.[INDEX].value","typeLabel":"string"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.sipHeaders.items.[INDEX]","typeLabel":"object"},"description":"Custom SIP headers to attach to the transfer.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.sipHeaders","typeLabel":"object[]"}},"additionalProperties":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","description":"A workflow node. The concrete shape depends on the `type` discriminator.","required":["id","type","position","metadata"],"properties":{"id":{"type":"string","description":"Unique node id (nanoid or UUID).","example":"2ZHj3IUpJFc-83H2-f8d3","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.id","typeLabel":"string"},"type":{"type":"string","description":"Node type discriminator.","enum":["end_call"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.type","typeLabel":"enum\u003cstring>"},"metadata":{"type":"object","additionalProperties":false,"description":"Node metadata.","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.metadata.updatedAt","typeLabel":"string\u003cdate-time>"},"version":{"type":"integer","minimum":1,"default":1,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.metadata.version","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.metadata","typeLabel":"object"},"position":{"type":"object","description":"Canvas position of the node.","required":["x","y"],"properties":{"x":{"type":"number","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.position.x","typeLabel":"number"},"y":{"type":"number","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.position.y","typeLabel":"number"}},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.position","typeLabel":"object"},"label":{"type":"string","maxLength":100,"description":"Display label.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.label","typeLabel":"string"},"description":{"type":"string","maxLength":500,"description":"Optional node description.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.description","typeLabel":"string"},"isGlobal":{"type":"boolean","default":false,"description":"Whether this is a global node.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.isGlobal","typeLabel":"boolean"},"globalCondition":{"type":"string","description":"Condition that activates a global node. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.globalCondition","typeLabel":"string"},"globalConditionType":{"type":"string","enum":["prompt","dtmf"],"default":"prompt","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.globalConditionType","typeLabel":"enum\u003cstring>"},"globalDtmfKey":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"description":"DTMF key that triggers the global node when `globalConditionType` is `dtmf`.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.globalDtmfKey","typeLabel":"enum\u003cstring>"},"globalReturnToSource":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.globalReturnToSource","typeLabel":"boolean"},"requiresDoubleConfirm":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.requiresDoubleConfirm","typeLabel":"boolean"},"skipResponse":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.skipResponse","typeLabel":"boolean"},"staticVariables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A statically-set variable.","required":["id","name","dataType","value"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.staticVariables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.staticVariables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.staticVariables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"value":{"description":"The static value (string, number, boolean, array, object, or null).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.staticVariables.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.staticVariables.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.staticVariables.items.[INDEX]","typeLabel":"object"},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.staticVariables","typeLabel":"object[]"},"transitions":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A transition from one node to another, gated by a condition.","required":["id","condition","targetNodeId"],"properties":{"id":{"type":"string","description":"Transition id (nanoid or UUID).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].id","typeLabel":"string"},"condition":{"oneOf":[{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["natural_language"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Natural-language condition prompt.","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.0.prompt","typeLabel":"string"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.0.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.0","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","conditions"],"properties":{"type":{"type":"string","enum":["structured_equation"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"conditions":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"description":"A single equation condition within a structured_equation.","required":["variable","operator","value"],"properties":{"variable":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].variable","typeLabel":"string"},"operator":{"type":"string","enum":["equals","not_equals","greater_than","less_than","greater_than_or_equal","less_than_or_equal","contains","not_contains","exists","not_exists","regex"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Comparison value (string, number, or boolean).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.1.conditions","typeLabel":"object[]"},"logic":{"type":"string","enum":["all","any"],"default":"all","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.1.logic","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.1.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","key"],"properties":{"type":{"type":"string","enum":["dtmf"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.2.type","typeLabel":"enum\u003cstring>"},"key":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.2.key","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.2.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["always"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.3.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Default path","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.3.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.3","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["auto"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.4.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Auto-advance","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.4.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.4","typeLabel":"object"}],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition","typeLabel":"object"},"targetNodeId":{"type":"string","description":"Target node id, or an empty string if unconnected.","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].targetNodeId","typeLabel":"string"},"name":{"type":"string","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].name","typeLabel":"string"},"priority":{"type":"integer","minimum":0,"default":0,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].priority","typeLabel":"integer"},"isEnabled":{"type":"boolean","default":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].isEnabled","typeLabel":"boolean"},"metadata":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].metadata.updatedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].metadata","typeLabel":"object"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX]","typeLabel":"object"},"default":[],"description":"Outgoing transitions to other nodes.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions","typeLabel":"object[]"},"finalMessage":{"type":"string","description":"Final message before ending the call. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.finalMessage","typeLabel":"string"},"messageType":{"type":"string","enum":["static","prompt"],"default":"prompt","description":"Whether the message is a literal `static` string or a `prompt` for the LLM.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.messageType","typeLabel":"enum\u003cstring>"},"reason":{"type":"string","enum":["completed","user_requested","error","timeout"],"default":"completed","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.reason","typeLabel":"enum\u003cstring>"}},"additionalProperties":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","description":"A workflow node. The concrete shape depends on the `type` discriminator.","required":["agentId","id","type","position","metadata"],"properties":{"id":{"type":"string","description":"Unique node id (nanoid or UUID).","example":"2ZHj3IUpJFc-83H2-f8d3","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.id","typeLabel":"string"},"type":{"type":"string","description":"Node type discriminator.","enum":["transfer_agent"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.type","typeLabel":"enum\u003cstring>"},"metadata":{"type":"object","additionalProperties":false,"description":"Node metadata.","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.metadata.updatedAt","typeLabel":"string\u003cdate-time>"},"version":{"type":"integer","minimum":1,"default":1,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.metadata.version","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.metadata","typeLabel":"object"},"position":{"type":"object","description":"Canvas position of the node.","required":["x","y"],"properties":{"x":{"type":"number","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.position.x","typeLabel":"number"},"y":{"type":"number","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.position.y","typeLabel":"number"}},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.position","typeLabel":"object"},"agentId":{"type":"string","minLength":1,"description":"Target voice agent id.","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.agentId","typeLabel":"string"},"label":{"type":"string","maxLength":100,"description":"Display label.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.label","typeLabel":"string"},"description":{"type":"string","maxLength":500,"description":"Optional node description.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.description","typeLabel":"string"},"isGlobal":{"type":"boolean","default":false,"description":"Whether this is a global node.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.isGlobal","typeLabel":"boolean"},"globalCondition":{"type":"string","description":"Condition that activates a global node. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.globalCondition","typeLabel":"string"},"globalConditionType":{"type":"string","enum":["prompt","dtmf"],"default":"prompt","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.globalConditionType","typeLabel":"enum\u003cstring>"},"globalDtmfKey":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"description":"DTMF key that triggers the global node when `globalConditionType` is `dtmf`.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.globalDtmfKey","typeLabel":"enum\u003cstring>"},"globalReturnToSource":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.globalReturnToSource","typeLabel":"boolean"},"requiresDoubleConfirm":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.requiresDoubleConfirm","typeLabel":"boolean"},"skipResponse":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.skipResponse","typeLabel":"boolean"},"staticVariables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A statically-set variable.","required":["id","name","dataType","value"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.staticVariables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.staticVariables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.staticVariables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"value":{"description":"The static value (string, number, boolean, array, object, or null).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.staticVariables.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.staticVariables.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.staticVariables.items.[INDEX]","typeLabel":"object"},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.staticVariables","typeLabel":"object[]"},"transitions":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A transition from one node to another, gated by a condition.","required":["id","condition","targetNodeId"],"properties":{"id":{"type":"string","description":"Transition id (nanoid or UUID).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].id","typeLabel":"string"},"condition":{"oneOf":[{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["natural_language"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Natural-language condition prompt.","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.0.prompt","typeLabel":"string"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.0.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.0","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","conditions"],"properties":{"type":{"type":"string","enum":["structured_equation"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"conditions":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"description":"A single equation condition within a structured_equation.","required":["variable","operator","value"],"properties":{"variable":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].variable","typeLabel":"string"},"operator":{"type":"string","enum":["equals","not_equals","greater_than","less_than","greater_than_or_equal","less_than_or_equal","contains","not_contains","exists","not_exists","regex"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Comparison value (string, number, or boolean).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.1.conditions","typeLabel":"object[]"},"logic":{"type":"string","enum":["all","any"],"default":"all","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.1.logic","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.1.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","key"],"properties":{"type":{"type":"string","enum":["dtmf"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.2.type","typeLabel":"enum\u003cstring>"},"key":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.2.key","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.2.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["always"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.3.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Default path","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.3.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.3","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["auto"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.4.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Auto-advance","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.4.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.4","typeLabel":"object"}],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition","typeLabel":"object"},"targetNodeId":{"type":"string","description":"Target node id, or an empty string if unconnected.","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].targetNodeId","typeLabel":"string"},"name":{"type":"string","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].name","typeLabel":"string"},"priority":{"type":"integer","minimum":0,"default":0,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].priority","typeLabel":"integer"},"isEnabled":{"type":"boolean","default":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].isEnabled","typeLabel":"boolean"},"metadata":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].metadata.updatedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].metadata","typeLabel":"object"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX]","typeLabel":"object"},"default":[],"description":"Outgoing transitions to other nodes.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions","typeLabel":"object[]"},"timeout":{"type":"integer","minimum":1,"default":30000,"description":"Timeout in milliseconds.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.timeout","typeLabel":"integer"},"transferMessage":{"type":"string","description":"Message spoken before handing off. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transferMessage","typeLabel":"string"},"transferMessageType":{"type":"string","enum":["static","prompt"],"default":"static","description":"Whether the message is a literal `static` string or a `prompt` for the LLM.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transferMessageType","typeLabel":"enum\u003cstring>"},"handoffConversation":{"type":"boolean","default":false,"description":"Pass the conversation transcript to the target agent.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.handoffConversation","typeLabel":"boolean"},"handoffVariables":{"type":"boolean","default":false,"description":"Pass workflow variables to the target agent.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.handoffVariables","typeLabel":"boolean"}},"additionalProperties":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","description":"A workflow node. The concrete shape depends on the `type` discriminator.","required":["id","type","position","metadata"],"properties":{"id":{"type":"string","description":"Unique node id (nanoid or UUID).","example":"2ZHj3IUpJFc-83H2-f8d3","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.id","typeLabel":"string"},"type":{"type":"string","description":"Node type discriminator.","enum":["router"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.type","typeLabel":"enum\u003cstring>"},"metadata":{"type":"object","additionalProperties":false,"description":"Node metadata.","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.metadata.updatedAt","typeLabel":"string\u003cdate-time>"},"version":{"type":"integer","minimum":1,"default":1,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.metadata.version","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.metadata","typeLabel":"object"},"position":{"type":"object","description":"Canvas position of the node.","required":["x","y"],"properties":{"x":{"type":"number","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.position.x","typeLabel":"number"},"y":{"type":"number","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.position.y","typeLabel":"number"}},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.position","typeLabel":"object"},"label":{"type":"string","maxLength":100,"description":"Display label.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.label","typeLabel":"string"},"description":{"type":"string","maxLength":500,"description":"Optional node description.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.description","typeLabel":"string"},"isGlobal":{"type":"boolean","default":false,"description":"Whether this is a global node.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.isGlobal","typeLabel":"boolean"},"globalCondition":{"type":"string","description":"Condition that activates a global node. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.globalCondition","typeLabel":"string"},"globalConditionType":{"type":"string","enum":["prompt","dtmf"],"default":"prompt","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.globalConditionType","typeLabel":"enum\u003cstring>"},"globalDtmfKey":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"description":"DTMF key that triggers the global node when `globalConditionType` is `dtmf`.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.globalDtmfKey","typeLabel":"enum\u003cstring>"},"globalReturnToSource":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.globalReturnToSource","typeLabel":"boolean"},"requiresDoubleConfirm":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.requiresDoubleConfirm","typeLabel":"boolean"},"skipResponse":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.skipResponse","typeLabel":"boolean"},"staticVariables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A statically-set variable.","required":["id","name","dataType","value"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.staticVariables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.staticVariables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.staticVariables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"value":{"description":"The static value (string, number, boolean, array, object, or null).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.staticVariables.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.staticVariables.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.staticVariables.items.[INDEX]","typeLabel":"object"},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.staticVariables","typeLabel":"object[]"},"transitions":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A transition from one node to another, gated by a condition.","required":["id","condition","targetNodeId"],"properties":{"id":{"type":"string","description":"Transition id (nanoid or UUID).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].id","typeLabel":"string"},"condition":{"oneOf":[{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["natural_language"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Natural-language condition prompt.","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.0.prompt","typeLabel":"string"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.0.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.0","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","conditions"],"properties":{"type":{"type":"string","enum":["structured_equation"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"conditions":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"description":"A single equation condition within a structured_equation.","required":["variable","operator","value"],"properties":{"variable":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].variable","typeLabel":"string"},"operator":{"type":"string","enum":["equals","not_equals","greater_than","less_than","greater_than_or_equal","less_than_or_equal","contains","not_contains","exists","not_exists","regex"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Comparison value (string, number, or boolean).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.1.conditions","typeLabel":"object[]"},"logic":{"type":"string","enum":["all","any"],"default":"all","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.1.logic","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.1.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","key"],"properties":{"type":{"type":"string","enum":["dtmf"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.2.type","typeLabel":"enum\u003cstring>"},"key":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.2.key","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.2.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["always"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.3.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Default path","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.3.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.3","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["auto"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.4.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Auto-advance","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.4.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.4","typeLabel":"object"}],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition","typeLabel":"object"},"targetNodeId":{"type":"string","description":"Target node id, or an empty string if unconnected.","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].targetNodeId","typeLabel":"string"},"name":{"type":"string","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].name","typeLabel":"string"},"priority":{"type":"integer","minimum":0,"default":0,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].priority","typeLabel":"integer"},"isEnabled":{"type":"boolean","default":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].isEnabled","typeLabel":"boolean"},"metadata":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].metadata.updatedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].metadata","typeLabel":"object"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX]","typeLabel":"object"},"default":[],"description":"Outgoing transitions to other nodes.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions","typeLabel":"object[]"}},"additionalProperties":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","description":"A workflow node. The concrete shape depends on the `type` discriminator.","required":["id","type","position","metadata"],"properties":{"id":{"type":"string","description":"Unique node id (nanoid or UUID).","example":"2ZHj3IUpJFc-83H2-f8d3","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.id","typeLabel":"string"},"type":{"type":"string","description":"Node type discriminator.","enum":["set_local_variables"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.type","typeLabel":"enum\u003cstring>"},"metadata":{"type":"object","additionalProperties":false,"description":"Node metadata.","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.metadata.updatedAt","typeLabel":"string\u003cdate-time>"},"version":{"type":"integer","minimum":1,"default":1,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.metadata.version","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.metadata","typeLabel":"object"},"position":{"type":"object","description":"Canvas position of the node.","required":["x","y"],"properties":{"x":{"type":"number","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.position.x","typeLabel":"number"},"y":{"type":"number","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.position.y","typeLabel":"number"}},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.position","typeLabel":"object"},"label":{"type":"string","maxLength":100,"description":"Display label.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.label","typeLabel":"string"},"description":{"type":"string","maxLength":500,"description":"Optional node description.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.description","typeLabel":"string"},"isGlobal":{"type":"boolean","default":false,"description":"Whether this is a global node.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.isGlobal","typeLabel":"boolean"},"globalCondition":{"type":"string","description":"Condition that activates a global node. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.globalCondition","typeLabel":"string"},"globalConditionType":{"type":"string","enum":["prompt","dtmf"],"default":"prompt","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.globalConditionType","typeLabel":"enum\u003cstring>"},"globalDtmfKey":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"description":"DTMF key that triggers the global node when `globalConditionType` is `dtmf`.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.globalDtmfKey","typeLabel":"enum\u003cstring>"},"globalReturnToSource":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.globalReturnToSource","typeLabel":"boolean"},"requiresDoubleConfirm":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.requiresDoubleConfirm","typeLabel":"boolean"},"skipResponse":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.skipResponse","typeLabel":"boolean"},"staticVariables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A statically-set variable.","required":["id","name","dataType","value"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.staticVariables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.staticVariables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.staticVariables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"value":{"description":"The static value (string, number, boolean, array, object, or null).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.staticVariables.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.staticVariables.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.staticVariables.items.[INDEX]","typeLabel":"object"},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.staticVariables","typeLabel":"object[]"},"transitions":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A transition from one node to another, gated by a condition.","required":["id","condition","targetNodeId"],"properties":{"id":{"type":"string","description":"Transition id (nanoid or UUID).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].id","typeLabel":"string"},"condition":{"oneOf":[{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["natural_language"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Natural-language condition prompt.","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.0.prompt","typeLabel":"string"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.0.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.0","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","conditions"],"properties":{"type":{"type":"string","enum":["structured_equation"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"conditions":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"description":"A single equation condition within a structured_equation.","required":["variable","operator","value"],"properties":{"variable":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].variable","typeLabel":"string"},"operator":{"type":"string","enum":["equals","not_equals","greater_than","less_than","greater_than_or_equal","less_than_or_equal","contains","not_contains","exists","not_exists","regex"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Comparison value (string, number, or boolean).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.1.conditions","typeLabel":"object[]"},"logic":{"type":"string","enum":["all","any"],"default":"all","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.1.logic","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.1.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","key"],"properties":{"type":{"type":"string","enum":["dtmf"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.2.type","typeLabel":"enum\u003cstring>"},"key":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.2.key","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.2.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["always"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.3.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Default path","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.3.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.3","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["auto"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.4.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Auto-advance","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.4.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.4","typeLabel":"object"}],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition","typeLabel":"object"},"targetNodeId":{"type":"string","description":"Target node id, or an empty string if unconnected.","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].targetNodeId","typeLabel":"string"},"name":{"type":"string","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].name","typeLabel":"string"},"priority":{"type":"integer","minimum":0,"default":0,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].priority","typeLabel":"integer"},"isEnabled":{"type":"boolean","default":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].isEnabled","typeLabel":"boolean"},"metadata":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].metadata.updatedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].metadata","typeLabel":"object"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX]","typeLabel":"object"},"default":[],"description":"Outgoing transitions to other nodes.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions","typeLabel":"object[]"}},"additionalProperties":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","description":"A workflow node. The concrete shape depends on the `type` discriminator.","required":["id","type","position","metadata"],"properties":{"id":{"type":"string","description":"Unique node id (nanoid or UUID).","example":"2ZHj3IUpJFc-83H2-f8d3","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.id","typeLabel":"string"},"type":{"type":"string","description":"Node type discriminator.","enum":["change_agent_settings"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.type","typeLabel":"enum\u003cstring>"},"metadata":{"type":"object","additionalProperties":false,"description":"Node metadata.","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.metadata.updatedAt","typeLabel":"string\u003cdate-time>"},"version":{"type":"integer","minimum":1,"default":1,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.metadata.version","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.metadata","typeLabel":"object"},"position":{"type":"object","description":"Canvas position of the node.","required":["x","y"],"properties":{"x":{"type":"number","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.position.x","typeLabel":"number"},"y":{"type":"number","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.position.y","typeLabel":"number"}},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.position","typeLabel":"object"},"label":{"type":"string","maxLength":100,"description":"Display label.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.label","typeLabel":"string"},"description":{"type":"string","maxLength":500,"description":"Optional node description.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.description","typeLabel":"string"},"isGlobal":{"type":"boolean","default":false,"description":"Whether this is a global node.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.isGlobal","typeLabel":"boolean"},"globalCondition":{"type":"string","description":"Condition that activates a global node. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.globalCondition","typeLabel":"string"},"globalConditionType":{"type":"string","enum":["prompt","dtmf"],"default":"prompt","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.globalConditionType","typeLabel":"enum\u003cstring>"},"globalDtmfKey":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"description":"DTMF key that triggers the global node when `globalConditionType` is `dtmf`.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.globalDtmfKey","typeLabel":"enum\u003cstring>"},"globalReturnToSource":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.globalReturnToSource","typeLabel":"boolean"},"requiresDoubleConfirm":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.requiresDoubleConfirm","typeLabel":"boolean"},"skipResponse":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.skipResponse","typeLabel":"boolean"},"staticVariables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A statically-set variable.","required":["id","name","dataType","value"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.staticVariables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.staticVariables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.staticVariables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"value":{"description":"The static value (string, number, boolean, array, object, or null).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.staticVariables.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.staticVariables.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.staticVariables.items.[INDEX]","typeLabel":"object"},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.staticVariables","typeLabel":"object[]"},"transitions":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A transition from one node to another, gated by a condition.","required":["id","condition","targetNodeId"],"properties":{"id":{"type":"string","description":"Transition id (nanoid or UUID).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].id","typeLabel":"string"},"condition":{"oneOf":[{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["natural_language"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Natural-language condition prompt.","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.0.prompt","typeLabel":"string"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.0.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.0","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","conditions"],"properties":{"type":{"type":"string","enum":["structured_equation"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"conditions":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"description":"A single equation condition within a structured_equation.","required":["variable","operator","value"],"properties":{"variable":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].variable","typeLabel":"string"},"operator":{"type":"string","enum":["equals","not_equals","greater_than","less_than","greater_than_or_equal","less_than_or_equal","contains","not_contains","exists","not_exists","regex"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Comparison value (string, number, or boolean).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.1.conditions","typeLabel":"object[]"},"logic":{"type":"string","enum":["all","any"],"default":"all","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.1.logic","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.1.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","key"],"properties":{"type":{"type":"string","enum":["dtmf"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.2.type","typeLabel":"enum\u003cstring>"},"key":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.2.key","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.2.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["always"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.3.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Default path","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.3.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.3","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["auto"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.4.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Auto-advance","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.4.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.4","typeLabel":"object"}],"isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition","typeLabel":"object"},"targetNodeId":{"type":"string","description":"Target node id, or an empty string if unconnected.","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].targetNodeId","typeLabel":"string"},"name":{"type":"string","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].name","typeLabel":"string"},"priority":{"type":"integer","minimum":0,"default":0,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].priority","typeLabel":"integer"},"isEnabled":{"type":"boolean","default":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].isEnabled","typeLabel":"boolean"},"metadata":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].metadata.updatedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].metadata","typeLabel":"object"}},"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX]","typeLabel":"object"},"default":[],"description":"Outgoing transitions to other nodes.","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions","typeLabel":"object[]"},"settingsOverrides":{"type":"object","additionalProperties":true,"default":{},"description":"Agent-setting overrides applied at this node. Stored as-is and not field-validated (mirrors agent-level config).","uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.settingsOverrides","typeLabel":"object"}},"additionalProperties":true,"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX].oneOf.9","typeLabel":"object"}],"uniqueKey":"workflow.oneOf.0.nodes.items.[INDEX]","typeLabel":"object"},"description":"The workflow nodes (the flow graph).","isRequired":true,"uniqueKey":"workflow.oneOf.0.nodes","typeLabel":"object[]"},"edges":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"An edge between two nodes (ReactFlow canvas).","required":["id","source","target"],"properties":{"id":{"type":"string","description":"Edge id (nanoid or UUID).","isRequired":true,"uniqueKey":"workflow.oneOf.0.edges.items.[INDEX].id","typeLabel":"string"},"source":{"type":"string","description":"Source node id.","isRequired":true,"uniqueKey":"workflow.oneOf.0.edges.items.[INDEX].source","typeLabel":"string"},"target":{"type":"string","description":"Target node id.","isRequired":true,"uniqueKey":"workflow.oneOf.0.edges.items.[INDEX].target","typeLabel":"string"},"sourceHandle":{"type":"string","uniqueKey":"workflow.oneOf.0.edges.items.[INDEX].sourceHandle","typeLabel":"string"},"targetHandle":{"type":"string","uniqueKey":"workflow.oneOf.0.edges.items.[INDEX].targetHandle","typeLabel":"string"},"type":{"type":"string","default":"default","description":"Edge render type (custom ReactFlow types like `deletable` are allowed).","uniqueKey":"workflow.oneOf.0.edges.items.[INDEX].type","typeLabel":"string"},"selected":{"type":"boolean","description":"Canvas selection state.","uniqueKey":"workflow.oneOf.0.edges.items.[INDEX].selected","typeLabel":"boolean"},"animated":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.edges.items.[INDEX].animated","typeLabel":"boolean"},"hidden":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.edges.items.[INDEX].hidden","typeLabel":"boolean"},"metadata":{"type":"object","properties":{"transitionId":{"type":"string","uniqueKey":"workflow.oneOf.0.edges.items.[INDEX].metadata.transitionId","typeLabel":"string"},"label":{"type":"string","uniqueKey":"workflow.oneOf.0.edges.items.[INDEX].metadata.label","typeLabel":"string"},"style":{"type":"object","additionalProperties":true,"uniqueKey":"workflow.oneOf.0.edges.items.[INDEX].metadata.style","typeLabel":"object"}},"uniqueKey":"workflow.oneOf.0.edges.items.[INDEX].metadata","typeLabel":"object"}},"uniqueKey":"workflow.oneOf.0.edges.items.[INDEX]","typeLabel":"object"},"description":"Edges connecting nodes in the builder canvas.","isRequired":true,"uniqueKey":"workflow.oneOf.0.edges","typeLabel":"object[]"},"customVariables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A workflow variable (also used for extracted and nested variables).","required":["id","name","dataType"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","description":"Variable id — nanoid or author slug (e.g. `out_var_flights`).","isRequired":true,"uniqueKey":"workflow.oneOf.0.customVariables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","description":"Variable name (snake_case).","isRequired":true,"uniqueKey":"workflow.oneOf.0.customVariables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"workflow.oneOf.0.customVariables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"workflow.oneOf.0.customVariables.items.[INDEX].description","typeLabel":"string"},"enumValues":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["value"],"properties":{"value":{"type":"string","maxLength":100,"isRequired":true,"uniqueKey":"workflow.oneOf.0.customVariables.items.[INDEX].enumValues.items.[INDEX].value","typeLabel":"string"},"label":{"type":"string","maxLength":100,"uniqueKey":"workflow.oneOf.0.customVariables.items.[INDEX].enumValues.items.[INDEX].label","typeLabel":"string"}},"uniqueKey":"workflow.oneOf.0.customVariables.items.[INDEX].enumValues.items.[INDEX]","typeLabel":"object"},"default":[],"uniqueKey":"workflow.oneOf.0.customVariables.items.[INDEX].enumValues","typeLabel":"object[]"},"isEnumEnabled":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.customVariables.items.[INDEX].isEnumEnabled","typeLabel":"boolean"},"isRequired":{"type":"boolean","default":false,"uniqueKey":"workflow.oneOf.0.customVariables.items.[INDEX].isRequired","typeLabel":"boolean"},"defaultValue":{"oneOf":[{"description":"Default value (string, number, boolean, or null).","uniqueKey":"workflow.oneOf.0.customVariables.items.[INDEX].defaultValue.oneOf.0","typeLabel":"any"},{"description":"Default value (string, number, boolean, or null).","type":"null","uniqueKey":"workflow.oneOf.0.customVariables.items.[INDEX].defaultValue.oneOf.1","typeLabel":"null"}],"uniqueKey":"workflow.oneOf.0.customVariables.items.[INDEX].defaultValue","typeLabel":"any | null"},"extractionPrompt":{"type":"string","uniqueKey":"workflow.oneOf.0.customVariables.items.[INDEX].extractionPrompt","typeLabel":"string"},"sourceNodeId":{"type":"string","uniqueKey":"workflow.oneOf.0.customVariables.items.[INDEX].sourceNodeId","typeLabel":"string"},"sourceNodeType":{"type":"string","uniqueKey":"workflow.oneOf.0.customVariables.items.[INDEX].sourceNodeType","typeLabel":"string"},"properties":{"type":"array","items":{"$circularRef":"aa2f421c-029e-4c52-9234-ca4cd0587f85"},"description":"Child variables (for `object` types).","uniqueKey":"workflow.oneOf.0.customVariables.items.[INDEX].properties","typeLabel":"array"},"item":{"$circularRef":"aa2f421c-029e-4c52-9234-ca4cd0587f85","description":"Element schema (for `array` types).","uniqueKey":"workflow.oneOf.0.customVariables.items.[INDEX].item","typeLabel":"any"}},"uniqueKey":"workflow.oneOf.0.customVariables.items.[INDEX]","typeLabel":"object"},"default":[],"description":"Workflow-level variables available across nodes.","uniqueKey":"workflow.oneOf.0.customVariables","typeLabel":"object[]"}},"uniqueKey":"workflow.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"workflow.oneOf.1","typeLabel":"null"}],"uniqueKey":"workflow","typeLabel":"object | null"},"outcomeResponseShape":{"type":"object","description":"Expected outcome response structure.","additionalProperties":true,"uniqueKey":"outcomeResponseShape","typeLabel":"object"}},"required":["name"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"name":"Customer Support Agent","type":"Single Prompt","conversation":{"greetingMessage":"Welcome! How may I assist you?","greetingMessageType":"TEXT","preamble":"You are a customer support assistant.","pokeMessages":["Are you still there?"],"params":{},"alignment":{"greetingMessage":"ltr","preamble":"ltr"}},"voice":{"voiceId":"en-US-Neural2-A","lang":"en"},"llm":{"provider":"openai","model":"gpt-4","temperature":0.7,"baseUrl":"https://api.example.com","apiKey":"sk-..."},"callSettings":{"noiseCancellation":"telephony_optimized","cancelNoisePer":"conversation","interrupt":true,"responseDelay":400,"minInterruptionDuration":0.5,"vadActivationThreshold":0.5,"userInactivityTimeout":15,"maxCallDuration":300,"silenceThreshold":800,"backgroundNoise":false,"enableAutoGainControl":false,"sendDenoisedToStt":false,"waitForUserToSpeakFirst":0,"thinkingVoice":false,"speakerIdentification":false,"agenticRag":false,"languageDialectSwitcher":false,"genderDetection":false,"smartCallEnd":false},"tools":[],"knowledgeBaseItemsIds":["48f7656f-098b-4c43-b165-7cfd2cc8ac30"],"voiceDictionaryIds":["48f7656f-098b-4c43-b165-7cfd2cc8ac30"],"phoneNumber":{"type":"TWILIO","id":"48f7656f-098b-4c43-b165-7cfd2cc8ac30"},"webhookUrl":"https://example.com/webhook","webhookAuth":{},"workflow":{"nodes":[{"id":"2ZHj3IUpJFc-83H2-f8d3","type":"start","label":"Start","message":"Hello, how can I help you today?","messageType":"prompt","position":{"x":0,"y":0},"metadata":{"version":1},"transitions":[]}],"edges":[],"customVariables":[{"id":"z5QsyxUbrKPjYMGaMj1e1","name":"customer_name","dataType":"string","description":"","defaultValue":"john","extractionPrompt":"","enumValues":[]}]},"outcomeResponseShape":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"919e27a7-f949-45bf-8225-98464778b985":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true,"uniqueKey":"success","typeLabel":"boolean"},"message":{"type":"string","example":"Voice agent created successfully","uniqueKey":"message","typeLabel":"string"},"messageKey":{"type":"string","example":"VoiceAgentCreatedSuccessfully","uniqueKey":"messageKey","typeLabel":"string"},"data":{"type":"object","description":"Voice agent data structure","properties":{"id":{"type":"string","format":"uuid","example":"48f7656f-098b-4c43-b165-7cfd2cc8ac30","uniqueKey":"data.id","typeLabel":"string\u003cuuid>"},"type":{"oneOf":[{"type":"string","example":"Single Prompt","uniqueKey":"data.type.oneOf.0","typeLabel":"string"},{"type":"null","example":"Single Prompt","uniqueKey":"data.type.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.type","typeLabel":"string | null"},"name":{"type":"string","example":"Customer Support Agent","uniqueKey":"data.name","typeLabel":"string"},"conversation":{"type":"object","properties":{"greetingMessage":{"type":"string","example":"Hello, how can I help you today?","uniqueKey":"data.conversation.greetingMessage","typeLabel":"string"},"greetingMessageType":{"oneOf":[{"type":"string","example":null,"uniqueKey":"data.conversation.greetingMessageType.oneOf.0","typeLabel":"string"},{"type":"null","example":null,"uniqueKey":"data.conversation.greetingMessageType.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.conversation.greetingMessageType","typeLabel":"string | null"},"preamble":{"type":"string","example":"You are a helpful assistant.","uniqueKey":"data.conversation.preamble","typeLabel":"string"},"pokeMessages":{"type":"array","items":{"type":"string","uniqueKey":"data.conversation.pokeMessages.items.[INDEX]","typeLabel":"string"},"example":[],"uniqueKey":"data.conversation.pokeMessages","typeLabel":"string[]"},"params":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"data.conversation.params.additionalProperties","typeLabel":"string"},"example":{},"uniqueKey":"data.conversation.params","typeLabel":"object"},"alignment":{"type":"object","properties":{"greetingMessage":{"type":"string","example":"ltr","uniqueKey":"data.conversation.alignment.greetingMessage","typeLabel":"string"},"preamble":{"type":"string","example":"ltr","uniqueKey":"data.conversation.alignment.preamble","typeLabel":"string"}},"uniqueKey":"data.conversation.alignment","typeLabel":"object"}},"uniqueKey":"data.conversation","typeLabel":"object"},"voice":{"type":"object","properties":{"voiceId":{"oneOf":[{"type":"string","example":"en-US-Neural2-A","uniqueKey":"data.voice.voiceId.oneOf.0","typeLabel":"string"},{"type":"null","example":"en-US-Neural2-A","uniqueKey":"data.voice.voiceId.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.voice.voiceId","typeLabel":"string | null"},"voiceRecordId":{"oneOf":[{"type":"string","example":null,"uniqueKey":"data.voice.voiceRecordId.oneOf.0","typeLabel":"string"},{"type":"null","example":null,"uniqueKey":"data.voice.voiceRecordId.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.voice.voiceRecordId","typeLabel":"string | null"},"voiceRecord":{"oneOf":[{"type":"object","description":"TTS voice details","properties":{"id":{"type":"string","format":"uuid","uniqueKey":"data.voice.voiceRecord.oneOf.0.id","typeLabel":"string\u003cuuid>"},"name":{"type":"string","uniqueKey":"data.voice.voiceRecord.oneOf.0.name","typeLabel":"string"},"provider":{"type":"string","uniqueKey":"data.voice.voiceRecord.oneOf.0.provider","typeLabel":"string"},"language":{"type":"string","uniqueKey":"data.voice.voiceRecord.oneOf.0.language","typeLabel":"string"},"image":{"oneOf":[{"type":"string","uniqueKey":"data.voice.voiceRecord.oneOf.0.image.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.voice.voiceRecord.oneOf.0.image.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.voice.voiceRecord.oneOf.0.image","typeLabel":"string | null"},"languageCode":{"oneOf":[{"type":"string","uniqueKey":"data.voice.voiceRecord.oneOf.0.languageCode.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.voice.voiceRecord.oneOf.0.languageCode.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.voice.voiceRecord.oneOf.0.languageCode","typeLabel":"string | null"},"voiceRecord":{"oneOf":[{"type":"object","uniqueKey":"data.voice.voiceRecord.oneOf.0.voiceRecord.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"data.voice.voiceRecord.oneOf.0.voiceRecord.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.voice.voiceRecord.oneOf.0.voiceRecord","typeLabel":"object | null"}},"uniqueKey":"data.voice.voiceRecord.oneOf.0","typeLabel":"object"},{"type":"null","description":"TTS voice details","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"provider":{"type":"string"},"language":{"type":"string"},"image":{"oneOf":[{"type":"string"},{"type":"null"}]},"languageCode":{"oneOf":[{"type":"string"},{"type":"null"}]},"voiceRecord":{"oneOf":[{"type":"object"},{"type":"null"}]}},"uniqueKey":"data.voice.voiceRecord.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.voice.voiceRecord","typeLabel":"object | null"},"lang":{"oneOf":[{"type":"string","example":"en","uniqueKey":"data.voice.lang.oneOf.0","typeLabel":"string"},{"type":"null","example":"en","uniqueKey":"data.voice.lang.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.voice.lang","typeLabel":"string | null"},"ttsParams":{"oneOf":[{"type":"object","additionalProperties":{"type":"string","uniqueKey":"data.voice.ttsParams.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"data.voice.ttsParams.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":{"type":"string","uniqueKey":"data.voice.ttsParams.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"data.voice.ttsParams.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.voice.ttsParams","typeLabel":"object | null"}},"uniqueKey":"data.voice","typeLabel":"object"},"llm":{"type":"object","properties":{"provider":{"type":"string","example":"openai","uniqueKey":"data.llm.provider","typeLabel":"string"},"model":{"type":"string","example":"gpt-4","uniqueKey":"data.llm.model","typeLabel":"string"},"temperature":{"type":"number","example":0.2,"uniqueKey":"data.llm.temperature","typeLabel":"number"},"baseUrl":{"oneOf":[{"type":"string","example":null,"uniqueKey":"data.llm.baseUrl.oneOf.0","typeLabel":"string"},{"type":"null","example":null,"uniqueKey":"data.llm.baseUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.llm.baseUrl","typeLabel":"string | null"},"apiKey":{"oneOf":[{"type":"string","example":null,"uniqueKey":"data.llm.apiKey.oneOf.0","typeLabel":"string"},{"type":"null","example":null,"uniqueKey":"data.llm.apiKey.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.llm.apiKey","typeLabel":"string | null"}},"uniqueKey":"data.llm","typeLabel":"object"},"callSettings":{"type":"object","properties":{"noiseCancellation":{"type":"string","example":"telephony_optimized","uniqueKey":"data.callSettings.noiseCancellation","typeLabel":"string"},"cancelNoisePer":{"oneOf":[{"type":"string","example":"conversation","uniqueKey":"data.callSettings.cancelNoisePer.oneOf.0","typeLabel":"string"},{"type":"null","example":"conversation","uniqueKey":"data.callSettings.cancelNoisePer.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.callSettings.cancelNoisePer","typeLabel":"string | null"},"interrupt":{"type":"boolean","example":true,"uniqueKey":"data.callSettings.interrupt","typeLabel":"boolean"},"responseDelay":{"type":"number","example":400,"uniqueKey":"data.callSettings.responseDelay","typeLabel":"number"},"userInactivityTimeout":{"type":"number","example":15,"uniqueKey":"data.callSettings.userInactivityTimeout","typeLabel":"number"},"maxCallDuration":{"type":"number","example":300,"uniqueKey":"data.callSettings.maxCallDuration","typeLabel":"number"},"silenceThreshold":{"type":"number","example":800,"uniqueKey":"data.callSettings.silenceThreshold","typeLabel":"number"},"backgroundNoise":{"type":"boolean","example":false,"uniqueKey":"data.callSettings.backgroundNoise","typeLabel":"boolean"},"thinkingVoice":{"type":"boolean","example":false,"uniqueKey":"data.callSettings.thinkingVoice","typeLabel":"boolean"},"speakerIdentification":{"type":"boolean","example":false,"uniqueKey":"data.callSettings.speakerIdentification","typeLabel":"boolean"},"agenticRag":{"type":"boolean","example":false,"uniqueKey":"data.callSettings.agenticRag","typeLabel":"boolean"},"languageDialectSwitcher":{"type":"boolean","example":false,"uniqueKey":"data.callSettings.languageDialectSwitcher","typeLabel":"boolean"},"minInterruptionDuration":{"type":"number","example":0.5,"uniqueKey":"data.callSettings.minInterruptionDuration","typeLabel":"number"},"vadActivationThreshold":{"type":"number","example":0.5,"uniqueKey":"data.callSettings.vadActivationThreshold","typeLabel":"number"},"enableAutoGainControl":{"type":"boolean","example":false,"uniqueKey":"data.callSettings.enableAutoGainControl","typeLabel":"boolean"},"sendDenoisedToStt":{"type":"boolean","example":false,"uniqueKey":"data.callSettings.sendDenoisedToStt","typeLabel":"boolean"},"genderDetection":{"type":"boolean","example":false,"uniqueKey":"data.callSettings.genderDetection","typeLabel":"boolean"},"smartCallEnd":{"type":"boolean","example":false,"uniqueKey":"data.callSettings.smartCallEnd","typeLabel":"boolean"},"waitForUserToSpeakFirst":{"type":"number","example":0,"uniqueKey":"data.callSettings.waitForUserToSpeakFirst","typeLabel":"number"}},"uniqueKey":"data.callSettings","typeLabel":"object"},"tools":{"oneOf":[{"type":"array","description":"Agent tools configuration","items":{"type":"object","uniqueKey":"data.tools.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.tools.oneOf.0","typeLabel":"object[]"},{"type":"null","description":"Agent tools configuration","items":{"type":"object"},"uniqueKey":"data.tools.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.tools","typeLabel":"object[] | null"},"knowledgeBaseItemsIds":{"type":"array","items":{"type":"string","format":"uuid","uniqueKey":"data.knowledgeBaseItemsIds.items.[INDEX]","typeLabel":"string\u003cuuid>"},"example":[],"uniqueKey":"data.knowledgeBaseItemsIds","typeLabel":"string\u003cuuid>[]"},"voiceDictionaryIds":{"type":"array","items":{"type":"string","format":"uuid","uniqueKey":"data.voiceDictionaryIds.items.[INDEX]","typeLabel":"string\u003cuuid>"},"example":[],"uniqueKey":"data.voiceDictionaryIds","typeLabel":"string\u003cuuid>[]"},"phoneNumber":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","example":"TWILIO","uniqueKey":"data.phoneNumber.oneOf.0.type","typeLabel":"string"},"id":{"type":"string","format":"uuid","example":"48f7656f-098b-4c43-b165-7cfd2cc8ac30","uniqueKey":"data.phoneNumber.oneOf.0.id","typeLabel":"string\u003cuuid>"}},"uniqueKey":"data.phoneNumber.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"type":{"type":"string","example":"TWILIO"},"id":{"type":"string","format":"uuid","example":"48f7656f-098b-4c43-b165-7cfd2cc8ac30"}},"uniqueKey":"data.phoneNumber.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.phoneNumber","typeLabel":"object | null"},"webhookUrl":{"oneOf":[{"type":"string","example":null,"uniqueKey":"data.webhookUrl.oneOf.0","typeLabel":"string"},{"type":"null","example":null,"uniqueKey":"data.webhookUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.webhookUrl","typeLabel":"string | null"},"webhookAuth":{"oneOf":[{"type":"object","uniqueKey":"data.webhookAuth.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"data.webhookAuth.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.webhookAuth","typeLabel":"object | null"},"workflow":{"oneOf":[{"type":"object","description":"Workflow graph for Flow Agents; `null` for other agent types.","required":["nodes","edges"],"example":{"nodes":[{"id":"2ZHj3IUpJFc-83H2-f8d3","type":"start","label":"Start","message":"Hello, how can I help you today?","messageType":"prompt","position":{"x":0,"y":0},"metadata":{"version":1},"transitions":[]}],"edges":[],"customVariables":[{"id":"z5QsyxUbrKPjYMGaMj1e1","name":"customer_name","dataType":"string","description":"","defaultValue":"john","extractionPrompt":"","enumValues":[]}]},"properties":{"nodes":{"type":"array","items":{"oneOf":[{"type":"object","description":"A workflow node. The concrete shape depends on the `type` discriminator.","required":["id","type","position","metadata"],"properties":{"id":{"type":"string","description":"Unique node id (nanoid or UUID).","example":"2ZHj3IUpJFc-83H2-f8d3","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.id","typeLabel":"string"},"type":{"type":"string","description":"Node type discriminator.","enum":["conversation"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"metadata":{"type":"object","additionalProperties":false,"description":"Node metadata.","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.metadata.updatedAt","typeLabel":"string\u003cdate-time>"},"version":{"type":"integer","minimum":1,"default":1,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.metadata.version","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.metadata","typeLabel":"object"},"position":{"type":"object","description":"Canvas position of the node.","required":["x","y"],"properties":{"x":{"type":"number","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.position.x","typeLabel":"number"},"y":{"type":"number","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.position.y","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.position","typeLabel":"object"},"label":{"type":"string","maxLength":100,"description":"Display label.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.label","typeLabel":"string"},"description":{"type":"string","maxLength":500,"description":"Optional node description.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.description","typeLabel":"string"},"isGlobal":{"type":"boolean","default":false,"description":"Whether this is a global node.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.isGlobal","typeLabel":"boolean"},"globalCondition":{"type":"string","description":"Condition that activates a global node. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.globalCondition","typeLabel":"string"},"globalConditionType":{"type":"string","enum":["prompt","dtmf"],"default":"prompt","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.globalConditionType","typeLabel":"enum\u003cstring>"},"globalDtmfKey":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"description":"DTMF key that triggers the global node when `globalConditionType` is `dtmf`.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.globalDtmfKey","typeLabel":"enum\u003cstring>"},"globalReturnToSource":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.globalReturnToSource","typeLabel":"boolean"},"requiresDoubleConfirm":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.requiresDoubleConfirm","typeLabel":"boolean"},"skipResponse":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.skipResponse","typeLabel":"boolean"},"staticVariables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A statically-set variable.","required":["id","name","dataType","value"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.staticVariables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.staticVariables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.staticVariables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"value":{"description":"The static value (string, number, boolean, array, object, or null).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.staticVariables.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.staticVariables.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.staticVariables.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.staticVariables","typeLabel":"object[]"},"transitions":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A transition from one node to another, gated by a condition.","required":["id","condition","targetNodeId"],"properties":{"id":{"type":"string","description":"Transition id (nanoid or UUID).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].id","typeLabel":"string"},"condition":{"oneOf":[{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["natural_language"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Natural-language condition prompt.","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.0.prompt","typeLabel":"string"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.0.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.0","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","conditions"],"properties":{"type":{"type":"string","enum":["structured_equation"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"conditions":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"description":"A single equation condition within a structured_equation.","required":["variable","operator","value"],"properties":{"variable":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].variable","typeLabel":"string"},"operator":{"type":"string","enum":["equals","not_equals","greater_than","less_than","greater_than_or_equal","less_than_or_equal","contains","not_contains","exists","not_exists","regex"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Comparison value (string, number, or boolean).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.1.conditions","typeLabel":"object[]"},"logic":{"type":"string","enum":["all","any"],"default":"all","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.1.logic","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.1.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","key"],"properties":{"type":{"type":"string","enum":["dtmf"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.2.type","typeLabel":"enum\u003cstring>"},"key":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.2.key","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.2.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["always"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.3.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Default path","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.3.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.3","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["auto"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.4.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Auto-advance","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.4.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition.oneOf.4","typeLabel":"object"}],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].condition","typeLabel":"object"},"targetNodeId":{"type":"string","description":"Target node id, or an empty string if unconnected.","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].targetNodeId","typeLabel":"string"},"name":{"type":"string","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].name","typeLabel":"string"},"priority":{"type":"integer","minimum":0,"default":0,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].priority","typeLabel":"integer"},"isEnabled":{"type":"boolean","default":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].isEnabled","typeLabel":"boolean"},"metadata":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].metadata.updatedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX].metadata","typeLabel":"object"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions.items.[INDEX]","typeLabel":"object"},"default":[],"description":"Outgoing transitions to other nodes.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.transitions","typeLabel":"object[]"},"messageType":{"type":"string","enum":["static","prompt"],"default":"prompt","description":"Whether the message is a literal `static` string or a `prompt` for the LLM.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.messageType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Node message. May be empty. Supports `{{variable}}` interpolation.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.message","typeLabel":"string"},"interruptMode":{"type":"string","enum":["inherit","enable","disable"],"default":"inherit","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.interruptMode","typeLabel":"enum\u003cstring>"},"extractVariables":{"type":"object","additionalProperties":false,"description":"Variable extraction config for a node.","properties":{"enabled":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.enabled","typeLabel":"boolean"},"variables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A workflow variable (also used for extracted and nested variables).","required":["id","name","dataType"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","description":"Variable id — nanoid or author slug (e.g. `out_var_flights`).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","description":"Variable name (snake_case).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].description","typeLabel":"string"},"enumValues":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["value"],"properties":{"value":{"type":"string","maxLength":100,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].enumValues.items.[INDEX].value","typeLabel":"string"},"label":{"type":"string","maxLength":100,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].enumValues.items.[INDEX].label","typeLabel":"string"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].enumValues.items.[INDEX]","typeLabel":"object"},"default":[],"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].enumValues","typeLabel":"object[]"},"isEnumEnabled":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].isEnumEnabled","typeLabel":"boolean"},"isRequired":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].isRequired","typeLabel":"boolean"},"defaultValue":{"oneOf":[{"description":"Default value (string, number, boolean, or null).","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].defaultValue.oneOf.0","typeLabel":"any"},{"description":"Default value (string, number, boolean, or null).","type":"null","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].defaultValue.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].defaultValue","typeLabel":"any | null"},"extractionPrompt":{"type":"string","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].extractionPrompt","typeLabel":"string"},"sourceNodeId":{"type":"string","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].sourceNodeId","typeLabel":"string"},"sourceNodeType":{"type":"string","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].sourceNodeType","typeLabel":"string"},"properties":{"type":"array","items":{"$circularRef":"aa2f421c-029e-4c52-9234-ca4cd0587f85"},"description":"Child variables (for `object` types).","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].properties","typeLabel":"array"},"item":{"$circularRef":"aa2f421c-029e-4c52-9234-ca4cd0587f85","description":"Element schema (for `array` types).","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX].item","typeLabel":"any"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables.items.[INDEX]","typeLabel":"object"},"default":[],"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables.variables","typeLabel":"object[]"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.extractVariables","typeLabel":"object"},"dtmfInputCapture":{"oneOf":[{"type":"object","description":"DTMF capture config, or null.","properties":{"enabled":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.dtmfInputCapture.oneOf.0.enabled","typeLabel":"boolean"},"variableName":{"type":"string","default":"","description":"Variable to store captured digits (required when `enabled`).","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.dtmfInputCapture.oneOf.0.variableName","typeLabel":"string"},"digitLimit":{"type":"integer","minimum":1,"maximum":20,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.dtmfInputCapture.oneOf.0.digitLimit","typeLabel":"integer"},"terminationKey":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.dtmfInputCapture.oneOf.0.terminationKey","typeLabel":"enum\u003cstring>"},"timeoutMs":{"type":"integer","minimum":1000,"maximum":30000,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.dtmfInputCapture.oneOf.0.timeoutMs","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.dtmfInputCapture.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.dtmfInputCapture.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0.dtmfInputCapture","typeLabel":"object | null"}},"additionalProperties":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"A workflow node. The concrete shape depends on the `type` discriminator.","required":["id","type","position","metadata"],"properties":{"id":{"type":"string","description":"Unique node id (nanoid or UUID).","example":"2ZHj3IUpJFc-83H2-f8d3","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.id","typeLabel":"string"},"type":{"type":"string","description":"Node type discriminator.","enum":["start"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"metadata":{"type":"object","additionalProperties":false,"description":"Node metadata.","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.metadata.updatedAt","typeLabel":"string\u003cdate-time>"},"version":{"type":"integer","minimum":1,"default":1,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.metadata.version","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.metadata","typeLabel":"object"},"position":{"type":"object","description":"Canvas position of the node.","required":["x","y"],"properties":{"x":{"type":"number","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.position.x","typeLabel":"number"},"y":{"type":"number","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.position.y","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.position","typeLabel":"object"},"label":{"type":"string","maxLength":100,"description":"Display label.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.label","typeLabel":"string"},"description":{"type":"string","maxLength":500,"description":"Optional node description.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.description","typeLabel":"string"},"isGlobal":{"type":"boolean","default":false,"description":"Whether this is a global node.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.isGlobal","typeLabel":"boolean"},"globalCondition":{"type":"string","description":"Condition that activates a global node. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.globalCondition","typeLabel":"string"},"globalConditionType":{"type":"string","enum":["prompt","dtmf"],"default":"prompt","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.globalConditionType","typeLabel":"enum\u003cstring>"},"globalDtmfKey":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"description":"DTMF key that triggers the global node when `globalConditionType` is `dtmf`.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.globalDtmfKey","typeLabel":"enum\u003cstring>"},"globalReturnToSource":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.globalReturnToSource","typeLabel":"boolean"},"requiresDoubleConfirm":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.requiresDoubleConfirm","typeLabel":"boolean"},"skipResponse":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.skipResponse","typeLabel":"boolean"},"staticVariables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A statically-set variable.","required":["id","name","dataType","value"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.staticVariables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.staticVariables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.staticVariables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"value":{"description":"The static value (string, number, boolean, array, object, or null).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.staticVariables.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.staticVariables.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.staticVariables.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.staticVariables","typeLabel":"object[]"},"transitions":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A transition from one node to another, gated by a condition.","required":["id","condition","targetNodeId"],"properties":{"id":{"type":"string","description":"Transition id (nanoid or UUID).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].id","typeLabel":"string"},"condition":{"oneOf":[{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["natural_language"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Natural-language condition prompt.","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.0.prompt","typeLabel":"string"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.0.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.0","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","conditions"],"properties":{"type":{"type":"string","enum":["structured_equation"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"conditions":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"description":"A single equation condition within a structured_equation.","required":["variable","operator","value"],"properties":{"variable":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].variable","typeLabel":"string"},"operator":{"type":"string","enum":["equals","not_equals","greater_than","less_than","greater_than_or_equal","less_than_or_equal","contains","not_contains","exists","not_exists","regex"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Comparison value (string, number, or boolean).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.1.conditions","typeLabel":"object[]"},"logic":{"type":"string","enum":["all","any"],"default":"all","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.1.logic","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.1.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","key"],"properties":{"type":{"type":"string","enum":["dtmf"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.2.type","typeLabel":"enum\u003cstring>"},"key":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.2.key","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.2.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["always"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.3.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Default path","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.3.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.3","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["auto"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.4.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Auto-advance","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.4.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition.oneOf.4","typeLabel":"object"}],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].condition","typeLabel":"object"},"targetNodeId":{"type":"string","description":"Target node id, or an empty string if unconnected.","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].targetNodeId","typeLabel":"string"},"name":{"type":"string","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].name","typeLabel":"string"},"priority":{"type":"integer","minimum":0,"default":0,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].priority","typeLabel":"integer"},"isEnabled":{"type":"boolean","default":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].isEnabled","typeLabel":"boolean"},"metadata":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].metadata.updatedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX].metadata","typeLabel":"object"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions.items.[INDEX]","typeLabel":"object"},"default":[],"description":"Outgoing transitions to other nodes.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.transitions","typeLabel":"object[]"},"subType":{"type":"string","enum":["conversation","tool"],"default":"conversation","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.subType","typeLabel":"enum\u003cstring>"},"messageType":{"type":"string","enum":["static","prompt"],"default":"prompt","description":"Whether the message is a literal `static` string or a `prompt` for the LLM.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.messageType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Node message. May be empty. Supports `{{variable}}` interpolation.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.message","typeLabel":"string"},"interrupt":{"type":"boolean","default":false,"description":"Allow user to interrupt.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.interrupt","typeLabel":"boolean"},"extractVariables":{"type":"object","additionalProperties":false,"description":"Variable extraction config for a node.","properties":{"enabled":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.enabled","typeLabel":"boolean"},"variables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A workflow variable (also used for extracted and nested variables).","required":["id","name","dataType"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","description":"Variable id — nanoid or author slug (e.g. `out_var_flights`).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","description":"Variable name (snake_case).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].description","typeLabel":"string"},"enumValues":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["value"],"properties":{"value":{"type":"string","maxLength":100,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].enumValues.items.[INDEX].value","typeLabel":"string"},"label":{"type":"string","maxLength":100,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].enumValues.items.[INDEX].label","typeLabel":"string"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].enumValues.items.[INDEX]","typeLabel":"object"},"default":[],"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].enumValues","typeLabel":"object[]"},"isEnumEnabled":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].isEnumEnabled","typeLabel":"boolean"},"isRequired":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].isRequired","typeLabel":"boolean"},"defaultValue":{"oneOf":[{"description":"Default value (string, number, boolean, or null).","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].defaultValue.oneOf.0","typeLabel":"any"},{"description":"Default value (string, number, boolean, or null).","type":"null","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].defaultValue.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].defaultValue","typeLabel":"any | null"},"extractionPrompt":{"type":"string","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].extractionPrompt","typeLabel":"string"},"sourceNodeId":{"type":"string","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].sourceNodeId","typeLabel":"string"},"sourceNodeType":{"type":"string","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].sourceNodeType","typeLabel":"string"},"properties":{"type":"array","items":{"$circularRef":"aa2f421c-029e-4c52-9234-ca4cd0587f85"},"description":"Child variables (for `object` types).","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].properties","typeLabel":"array"},"item":{"$circularRef":"aa2f421c-029e-4c52-9234-ca4cd0587f85","description":"Element schema (for `array` types).","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX].item","typeLabel":"any"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables.items.[INDEX]","typeLabel":"object"},"default":[],"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables.variables","typeLabel":"object[]"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.extractVariables","typeLabel":"object"},"dtmfInputCapture":{"oneOf":[{"type":"object","description":"Captures DTMF digits into a variable.","properties":{"enabled":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.dtmfInputCapture.oneOf.0.enabled","typeLabel":"boolean"},"variableName":{"type":"string","default":"","description":"Variable to store captured digits (required when `enabled`).","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.dtmfInputCapture.oneOf.0.variableName","typeLabel":"string"},"digitLimit":{"type":"integer","minimum":1,"maximum":20,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.dtmfInputCapture.oneOf.0.digitLimit","typeLabel":"integer"},"terminationKey":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.dtmfInputCapture.oneOf.0.terminationKey","typeLabel":"enum\u003cstring>"},"timeoutMs":{"type":"integer","minimum":1000,"maximum":30000,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.dtmfInputCapture.oneOf.0.timeoutMs","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.dtmfInputCapture.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.dtmfInputCapture.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.dtmfInputCapture","typeLabel":"object | null"},"timeout":{"type":"integer","minimum":1,"default":30000,"description":"Timeout in milliseconds.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.timeout","typeLabel":"integer"},"overrideResponse":{"type":"boolean","default":false,"description":"Override the default response with `customResponse`.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.overrideResponse","typeLabel":"boolean"},"customResponse":{"type":"string","description":"Custom response shown instead of the default. Required when `overrideResponse` is true. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.customResponse","typeLabel":"string"},"outputMapping":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.outputMapping.additionalProperties","typeLabel":"string"},"default":{},"description":"Maps tool output fields to workflow variables.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.outputMapping","typeLabel":"object"},"onErrorBehavior":{"type":"string","enum":["continue","retry","fail"],"default":"continue","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.onErrorBehavior","typeLabel":"enum\u003cstring>"},"errorMessage":{"type":"string","description":"Message spoken when the node errors. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.errorMessage","typeLabel":"string"},"processingMessage":{"type":"string","description":"Message spoken while the node runs.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.processingMessage","typeLabel":"string"},"processingMessageType":{"type":"string","enum":["static","prompt"],"default":"static","description":"Whether the message is a literal `static` string or a `prompt` for the LLM.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1.processingMessageType","typeLabel":"enum\u003cstring>"}},"additionalProperties":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","description":"A workflow node. The concrete shape depends on the `type` discriminator.","required":["id","type","position","metadata"],"properties":{"id":{"type":"string","description":"Unique node id (nanoid or UUID).","example":"2ZHj3IUpJFc-83H2-f8d3","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.id","typeLabel":"string"},"type":{"type":"string","description":"Node type discriminator.","enum":["tool"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"metadata":{"type":"object","additionalProperties":false,"description":"Node metadata.","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.metadata.updatedAt","typeLabel":"string\u003cdate-time>"},"version":{"type":"integer","minimum":1,"default":1,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.metadata.version","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.metadata","typeLabel":"object"},"position":{"type":"object","description":"Canvas position of the node.","required":["x","y"],"properties":{"x":{"type":"number","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.position.x","typeLabel":"number"},"y":{"type":"number","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.position.y","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.position","typeLabel":"object"},"label":{"type":"string","maxLength":100,"description":"Display label.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.label","typeLabel":"string"},"description":{"type":"string","maxLength":500,"description":"Optional node description.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.description","typeLabel":"string"},"isGlobal":{"type":"boolean","default":false,"description":"Whether this is a global node.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.isGlobal","typeLabel":"boolean"},"globalCondition":{"type":"string","description":"Condition that activates a global node. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.globalCondition","typeLabel":"string"},"globalConditionType":{"type":"string","enum":["prompt","dtmf"],"default":"prompt","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.globalConditionType","typeLabel":"enum\u003cstring>"},"globalDtmfKey":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"description":"DTMF key that triggers the global node when `globalConditionType` is `dtmf`.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.globalDtmfKey","typeLabel":"enum\u003cstring>"},"globalReturnToSource":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.globalReturnToSource","typeLabel":"boolean"},"requiresDoubleConfirm":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.requiresDoubleConfirm","typeLabel":"boolean"},"skipResponse":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.skipResponse","typeLabel":"boolean"},"staticVariables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A statically-set variable.","required":["id","name","dataType","value"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.staticVariables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.staticVariables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.staticVariables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"value":{"description":"The static value (string, number, boolean, array, object, or null).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.staticVariables.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.staticVariables.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.staticVariables.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.staticVariables","typeLabel":"object[]"},"transitions":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A transition from one node to another, gated by a condition.","required":["id","condition","targetNodeId"],"properties":{"id":{"type":"string","description":"Transition id (nanoid or UUID).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].id","typeLabel":"string"},"condition":{"oneOf":[{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["natural_language"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Natural-language condition prompt.","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.0.prompt","typeLabel":"string"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.0.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.0","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","conditions"],"properties":{"type":{"type":"string","enum":["structured_equation"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"conditions":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"description":"A single equation condition within a structured_equation.","required":["variable","operator","value"],"properties":{"variable":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].variable","typeLabel":"string"},"operator":{"type":"string","enum":["equals","not_equals","greater_than","less_than","greater_than_or_equal","less_than_or_equal","contains","not_contains","exists","not_exists","regex"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Comparison value (string, number, or boolean).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.1.conditions","typeLabel":"object[]"},"logic":{"type":"string","enum":["all","any"],"default":"all","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.1.logic","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.1.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","key"],"properties":{"type":{"type":"string","enum":["dtmf"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.2.type","typeLabel":"enum\u003cstring>"},"key":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.2.key","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.2.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["always"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.3.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Default path","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.3.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.3","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["auto"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.4.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Auto-advance","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.4.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition.oneOf.4","typeLabel":"object"}],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].condition","typeLabel":"object"},"targetNodeId":{"type":"string","description":"Target node id, or an empty string if unconnected.","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].targetNodeId","typeLabel":"string"},"name":{"type":"string","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].name","typeLabel":"string"},"priority":{"type":"integer","minimum":0,"default":0,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].priority","typeLabel":"integer"},"isEnabled":{"type":"boolean","default":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].isEnabled","typeLabel":"boolean"},"metadata":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].metadata.updatedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX].metadata","typeLabel":"object"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions.items.[INDEX]","typeLabel":"object"},"default":[],"description":"Outgoing transitions to other nodes.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.transitions","typeLabel":"object[]"},"parameters":{"type":"array","items":{"type":"object","required":["name","value"],"properties":{"name":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.parameters.items.[INDEX].name","typeLabel":"string"},"value":{"type":"string","description":"Parameter value. Supports `{{variable}}` interpolation; may be empty.","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.parameters.items.[INDEX].value","typeLabel":"string"},"type":{"type":"string","enum":["string","number","boolean","object"],"default":"string","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.parameters.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"required":{"type":"boolean","default":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.parameters.items.[INDEX].required","typeLabel":"boolean"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.parameters.items.[INDEX]","typeLabel":"object"},"default":[],"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.parameters","typeLabel":"object[]"},"timeout":{"type":"integer","minimum":1,"default":30000,"description":"Timeout in milliseconds.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.timeout","typeLabel":"integer"},"extractVariables":{"type":"object","additionalProperties":false,"description":"Variable extraction config for a node.","properties":{"enabled":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.enabled","typeLabel":"boolean"},"variables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A workflow variable (also used for extracted and nested variables).","required":["id","name","dataType"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","description":"Variable id — nanoid or author slug (e.g. `out_var_flights`).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","description":"Variable name (snake_case).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].description","typeLabel":"string"},"enumValues":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["value"],"properties":{"value":{"type":"string","maxLength":100,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].enumValues.items.[INDEX].value","typeLabel":"string"},"label":{"type":"string","maxLength":100,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].enumValues.items.[INDEX].label","typeLabel":"string"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].enumValues.items.[INDEX]","typeLabel":"object"},"default":[],"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].enumValues","typeLabel":"object[]"},"isEnumEnabled":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].isEnumEnabled","typeLabel":"boolean"},"isRequired":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].isRequired","typeLabel":"boolean"},"defaultValue":{"oneOf":[{"description":"Default value (string, number, boolean, or null).","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].defaultValue.oneOf.0","typeLabel":"any"},{"description":"Default value (string, number, boolean, or null).","type":"null","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].defaultValue.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].defaultValue","typeLabel":"any | null"},"extractionPrompt":{"type":"string","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].extractionPrompt","typeLabel":"string"},"sourceNodeId":{"type":"string","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].sourceNodeId","typeLabel":"string"},"sourceNodeType":{"type":"string","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].sourceNodeType","typeLabel":"string"},"properties":{"type":"array","items":{"$circularRef":"aa2f421c-029e-4c52-9234-ca4cd0587f85"},"description":"Child variables (for `object` types).","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].properties","typeLabel":"array"},"item":{"$circularRef":"aa2f421c-029e-4c52-9234-ca4cd0587f85","description":"Element schema (for `array` types).","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX].item","typeLabel":"any"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables.items.[INDEX]","typeLabel":"object"},"default":[],"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables.variables","typeLabel":"object[]"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.extractVariables","typeLabel":"object"},"overrideResponse":{"type":"boolean","default":false,"description":"Override the default response with `customResponse`.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.overrideResponse","typeLabel":"boolean"},"customResponse":{"type":"string","description":"Custom response shown instead of the default. Required when `overrideResponse` is true. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.customResponse","typeLabel":"string"},"outputMapping":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.outputMapping.additionalProperties","typeLabel":"string"},"default":{},"description":"Maps tool output fields to workflow variables.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.outputMapping","typeLabel":"object"},"onErrorBehavior":{"type":"string","enum":["continue","retry","fail"],"default":"continue","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.onErrorBehavior","typeLabel":"enum\u003cstring>"},"errorMessage":{"type":"string","description":"Message spoken when the node errors. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.errorMessage","typeLabel":"string"},"processingMessage":{"type":"string","description":"Message spoken while the node runs.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.processingMessage","typeLabel":"string"},"processingMessageType":{"type":"string","enum":["static","prompt"],"default":"static","description":"Whether the message is a literal `static` string or a `prompt` for the LLM.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2.processingMessageType","typeLabel":"enum\u003cstring>"}},"additionalProperties":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","description":"A workflow node. The concrete shape depends on the `type` discriminator.","required":["id","type","position","metadata"],"properties":{"id":{"type":"string","description":"Unique node id (nanoid or UUID).","example":"2ZHj3IUpJFc-83H2-f8d3","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.id","typeLabel":"string"},"type":{"type":"string","description":"Node type discriminator.","enum":["web_tool"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"metadata":{"type":"object","additionalProperties":false,"description":"Node metadata.","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.metadata.updatedAt","typeLabel":"string\u003cdate-time>"},"version":{"type":"integer","minimum":1,"default":1,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.metadata.version","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.metadata","typeLabel":"object"},"position":{"type":"object","description":"Canvas position of the node.","required":["x","y"],"properties":{"x":{"type":"number","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.position.x","typeLabel":"number"},"y":{"type":"number","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.position.y","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.position","typeLabel":"object"},"label":{"type":"string","maxLength":100,"description":"Display label.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.label","typeLabel":"string"},"description":{"type":"string","maxLength":500,"description":"Optional node description.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.description","typeLabel":"string"},"isGlobal":{"type":"boolean","default":false,"description":"Whether this is a global node.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.isGlobal","typeLabel":"boolean"},"globalCondition":{"type":"string","description":"Condition that activates a global node. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.globalCondition","typeLabel":"string"},"globalConditionType":{"type":"string","enum":["prompt","dtmf"],"default":"prompt","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.globalConditionType","typeLabel":"enum\u003cstring>"},"globalDtmfKey":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"description":"DTMF key that triggers the global node when `globalConditionType` is `dtmf`.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.globalDtmfKey","typeLabel":"enum\u003cstring>"},"globalReturnToSource":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.globalReturnToSource","typeLabel":"boolean"},"requiresDoubleConfirm":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.requiresDoubleConfirm","typeLabel":"boolean"},"skipResponse":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.skipResponse","typeLabel":"boolean"},"staticVariables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A statically-set variable.","required":["id","name","dataType","value"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.staticVariables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.staticVariables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.staticVariables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"value":{"description":"The static value (string, number, boolean, array, object, or null).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.staticVariables.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.staticVariables.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.staticVariables.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.staticVariables","typeLabel":"object[]"},"transitions":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A transition from one node to another, gated by a condition.","required":["id","condition","targetNodeId"],"properties":{"id":{"type":"string","description":"Transition id (nanoid or UUID).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].id","typeLabel":"string"},"condition":{"oneOf":[{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["natural_language"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Natural-language condition prompt.","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.0.prompt","typeLabel":"string"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.0.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.0","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","conditions"],"properties":{"type":{"type":"string","enum":["structured_equation"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"conditions":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"description":"A single equation condition within a structured_equation.","required":["variable","operator","value"],"properties":{"variable":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].variable","typeLabel":"string"},"operator":{"type":"string","enum":["equals","not_equals","greater_than","less_than","greater_than_or_equal","less_than_or_equal","contains","not_contains","exists","not_exists","regex"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Comparison value (string, number, or boolean).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.1.conditions","typeLabel":"object[]"},"logic":{"type":"string","enum":["all","any"],"default":"all","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.1.logic","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.1.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","key"],"properties":{"type":{"type":"string","enum":["dtmf"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.2.type","typeLabel":"enum\u003cstring>"},"key":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.2.key","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.2.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["always"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.3.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Default path","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.3.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.3","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["auto"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.4.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Auto-advance","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.4.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition.oneOf.4","typeLabel":"object"}],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].condition","typeLabel":"object"},"targetNodeId":{"type":"string","description":"Target node id, or an empty string if unconnected.","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].targetNodeId","typeLabel":"string"},"name":{"type":"string","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].name","typeLabel":"string"},"priority":{"type":"integer","minimum":0,"default":0,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].priority","typeLabel":"integer"},"isEnabled":{"type":"boolean","default":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].isEnabled","typeLabel":"boolean"},"metadata":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].metadata.updatedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX].metadata","typeLabel":"object"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions.items.[INDEX]","typeLabel":"object"},"default":[],"description":"Outgoing transitions to other nodes.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.transitions","typeLabel":"object[]"},"processingMessage":{"type":"string","description":"Message spoken while the web tool runs.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.processingMessage","typeLabel":"string"},"processingMessageType":{"type":"string","enum":["static","prompt"],"default":"static","description":"Whether the message is a literal `static` string or a `prompt` for the LLM.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3.processingMessageType","typeLabel":"enum\u003cstring>"}},"additionalProperties":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","description":"A workflow node. The concrete shape depends on the `type` discriminator.","required":["phoneNumber","id","type","position","metadata"],"properties":{"id":{"type":"string","description":"Unique node id (nanoid or UUID).","example":"2ZHj3IUpJFc-83H2-f8d3","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.id","typeLabel":"string"},"type":{"type":"string","description":"Node type discriminator.","enum":["transfer_call"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"metadata":{"type":"object","additionalProperties":false,"description":"Node metadata.","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.metadata.updatedAt","typeLabel":"string\u003cdate-time>"},"version":{"type":"integer","minimum":1,"default":1,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.metadata.version","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.metadata","typeLabel":"object"},"position":{"type":"object","description":"Canvas position of the node.","required":["x","y"],"properties":{"x":{"type":"number","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.position.x","typeLabel":"number"},"y":{"type":"number","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.position.y","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.position","typeLabel":"object"},"phoneNumber":{"type":"string","pattern":"^\\+?[1-9]\\d{1,14}$","description":"Destination phone number (E.164).","example":"+14155552671","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.phoneNumber","typeLabel":"string"},"label":{"type":"string","maxLength":100,"description":"Display label.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.label","typeLabel":"string"},"description":{"type":"string","maxLength":500,"description":"Optional node description.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.description","typeLabel":"string"},"isGlobal":{"type":"boolean","default":false,"description":"Whether this is a global node.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.isGlobal","typeLabel":"boolean"},"globalCondition":{"type":"string","description":"Condition that activates a global node. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.globalCondition","typeLabel":"string"},"globalConditionType":{"type":"string","enum":["prompt","dtmf"],"default":"prompt","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.globalConditionType","typeLabel":"enum\u003cstring>"},"globalDtmfKey":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"description":"DTMF key that triggers the global node when `globalConditionType` is `dtmf`.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.globalDtmfKey","typeLabel":"enum\u003cstring>"},"globalReturnToSource":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.globalReturnToSource","typeLabel":"boolean"},"requiresDoubleConfirm":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.requiresDoubleConfirm","typeLabel":"boolean"},"skipResponse":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.skipResponse","typeLabel":"boolean"},"staticVariables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A statically-set variable.","required":["id","name","dataType","value"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.staticVariables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.staticVariables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.staticVariables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"value":{"description":"The static value (string, number, boolean, array, object, or null).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.staticVariables.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.staticVariables.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.staticVariables.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.staticVariables","typeLabel":"object[]"},"transitions":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A transition from one node to another, gated by a condition.","required":["id","condition","targetNodeId"],"properties":{"id":{"type":"string","description":"Transition id (nanoid or UUID).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].id","typeLabel":"string"},"condition":{"oneOf":[{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["natural_language"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Natural-language condition prompt.","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.0.prompt","typeLabel":"string"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.0.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.0","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","conditions"],"properties":{"type":{"type":"string","enum":["structured_equation"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"conditions":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"description":"A single equation condition within a structured_equation.","required":["variable","operator","value"],"properties":{"variable":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].variable","typeLabel":"string"},"operator":{"type":"string","enum":["equals","not_equals","greater_than","less_than","greater_than_or_equal","less_than_or_equal","contains","not_contains","exists","not_exists","regex"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Comparison value (string, number, or boolean).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.1.conditions","typeLabel":"object[]"},"logic":{"type":"string","enum":["all","any"],"default":"all","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.1.logic","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.1.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","key"],"properties":{"type":{"type":"string","enum":["dtmf"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.2.type","typeLabel":"enum\u003cstring>"},"key":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.2.key","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.2.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["always"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.3.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Default path","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.3.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.3","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["auto"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.4.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Auto-advance","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.4.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition.oneOf.4","typeLabel":"object"}],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].condition","typeLabel":"object"},"targetNodeId":{"type":"string","description":"Target node id, or an empty string if unconnected.","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].targetNodeId","typeLabel":"string"},"name":{"type":"string","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].name","typeLabel":"string"},"priority":{"type":"integer","minimum":0,"default":0,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].priority","typeLabel":"integer"},"isEnabled":{"type":"boolean","default":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].isEnabled","typeLabel":"boolean"},"metadata":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].metadata.updatedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX].metadata","typeLabel":"object"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions.items.[INDEX]","typeLabel":"object"},"default":[],"description":"Outgoing transitions to other nodes.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transitions","typeLabel":"object[]"},"transferType":{"type":"string","enum":["warm","cold"],"default":"cold","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transferType","typeLabel":"enum\u003cstring>"},"transferMessage":{"type":"string","description":"Message spoken before transferring. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transferMessage","typeLabel":"string"},"transferMessageType":{"type":"string","enum":["static","prompt"],"default":"prompt","description":"Whether the message is a literal `static` string or a `prompt` for the LLM.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.transferMessageType","typeLabel":"enum\u003cstring>"},"timeout":{"type":"integer","minimum":1,"default":30000,"description":"Timeout in milliseconds.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.timeout","typeLabel":"integer"},"sipHeaders":{"type":"array","items":{"type":"object","required":["id","name","value"],"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.sipHeaders.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.sipHeaders.items.[INDEX].name","typeLabel":"string"},"value":{"type":"string","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.sipHeaders.items.[INDEX].value","typeLabel":"string"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.sipHeaders.items.[INDEX]","typeLabel":"object"},"description":"Custom SIP headers to attach to the transfer.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4.sipHeaders","typeLabel":"object[]"}},"additionalProperties":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","description":"A workflow node. The concrete shape depends on the `type` discriminator.","required":["id","type","position","metadata"],"properties":{"id":{"type":"string","description":"Unique node id (nanoid or UUID).","example":"2ZHj3IUpJFc-83H2-f8d3","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.id","typeLabel":"string"},"type":{"type":"string","description":"Node type discriminator.","enum":["end_call"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.type","typeLabel":"enum\u003cstring>"},"metadata":{"type":"object","additionalProperties":false,"description":"Node metadata.","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.metadata.updatedAt","typeLabel":"string\u003cdate-time>"},"version":{"type":"integer","minimum":1,"default":1,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.metadata.version","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.metadata","typeLabel":"object"},"position":{"type":"object","description":"Canvas position of the node.","required":["x","y"],"properties":{"x":{"type":"number","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.position.x","typeLabel":"number"},"y":{"type":"number","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.position.y","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.position","typeLabel":"object"},"label":{"type":"string","maxLength":100,"description":"Display label.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.label","typeLabel":"string"},"description":{"type":"string","maxLength":500,"description":"Optional node description.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.description","typeLabel":"string"},"isGlobal":{"type":"boolean","default":false,"description":"Whether this is a global node.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.isGlobal","typeLabel":"boolean"},"globalCondition":{"type":"string","description":"Condition that activates a global node. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.globalCondition","typeLabel":"string"},"globalConditionType":{"type":"string","enum":["prompt","dtmf"],"default":"prompt","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.globalConditionType","typeLabel":"enum\u003cstring>"},"globalDtmfKey":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"description":"DTMF key that triggers the global node when `globalConditionType` is `dtmf`.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.globalDtmfKey","typeLabel":"enum\u003cstring>"},"globalReturnToSource":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.globalReturnToSource","typeLabel":"boolean"},"requiresDoubleConfirm":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.requiresDoubleConfirm","typeLabel":"boolean"},"skipResponse":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.skipResponse","typeLabel":"boolean"},"staticVariables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A statically-set variable.","required":["id","name","dataType","value"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.staticVariables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.staticVariables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.staticVariables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"value":{"description":"The static value (string, number, boolean, array, object, or null).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.staticVariables.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.staticVariables.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.staticVariables.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.staticVariables","typeLabel":"object[]"},"transitions":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A transition from one node to another, gated by a condition.","required":["id","condition","targetNodeId"],"properties":{"id":{"type":"string","description":"Transition id (nanoid or UUID).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].id","typeLabel":"string"},"condition":{"oneOf":[{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["natural_language"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Natural-language condition prompt.","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.0.prompt","typeLabel":"string"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.0.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.0","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","conditions"],"properties":{"type":{"type":"string","enum":["structured_equation"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"conditions":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"description":"A single equation condition within a structured_equation.","required":["variable","operator","value"],"properties":{"variable":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].variable","typeLabel":"string"},"operator":{"type":"string","enum":["equals","not_equals","greater_than","less_than","greater_than_or_equal","less_than_or_equal","contains","not_contains","exists","not_exists","regex"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Comparison value (string, number, or boolean).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.1.conditions","typeLabel":"object[]"},"logic":{"type":"string","enum":["all","any"],"default":"all","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.1.logic","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.1.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","key"],"properties":{"type":{"type":"string","enum":["dtmf"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.2.type","typeLabel":"enum\u003cstring>"},"key":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.2.key","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.2.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["always"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.3.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Default path","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.3.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.3","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["auto"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.4.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Auto-advance","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.4.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition.oneOf.4","typeLabel":"object"}],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].condition","typeLabel":"object"},"targetNodeId":{"type":"string","description":"Target node id, or an empty string if unconnected.","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].targetNodeId","typeLabel":"string"},"name":{"type":"string","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].name","typeLabel":"string"},"priority":{"type":"integer","minimum":0,"default":0,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].priority","typeLabel":"integer"},"isEnabled":{"type":"boolean","default":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].isEnabled","typeLabel":"boolean"},"metadata":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].metadata.updatedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX].metadata","typeLabel":"object"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions.items.[INDEX]","typeLabel":"object"},"default":[],"description":"Outgoing transitions to other nodes.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.transitions","typeLabel":"object[]"},"finalMessage":{"type":"string","description":"Final message before ending the call. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.finalMessage","typeLabel":"string"},"messageType":{"type":"string","enum":["static","prompt"],"default":"prompt","description":"Whether the message is a literal `static` string or a `prompt` for the LLM.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.messageType","typeLabel":"enum\u003cstring>"},"reason":{"type":"string","enum":["completed","user_requested","error","timeout"],"default":"completed","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5.reason","typeLabel":"enum\u003cstring>"}},"additionalProperties":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","description":"A workflow node. The concrete shape depends on the `type` discriminator.","required":["agentId","id","type","position","metadata"],"properties":{"id":{"type":"string","description":"Unique node id (nanoid or UUID).","example":"2ZHj3IUpJFc-83H2-f8d3","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.id","typeLabel":"string"},"type":{"type":"string","description":"Node type discriminator.","enum":["transfer_agent"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.type","typeLabel":"enum\u003cstring>"},"metadata":{"type":"object","additionalProperties":false,"description":"Node metadata.","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.metadata.updatedAt","typeLabel":"string\u003cdate-time>"},"version":{"type":"integer","minimum":1,"default":1,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.metadata.version","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.metadata","typeLabel":"object"},"position":{"type":"object","description":"Canvas position of the node.","required":["x","y"],"properties":{"x":{"type":"number","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.position.x","typeLabel":"number"},"y":{"type":"number","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.position.y","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.position","typeLabel":"object"},"agentId":{"type":"string","minLength":1,"description":"Target voice agent id.","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.agentId","typeLabel":"string"},"label":{"type":"string","maxLength":100,"description":"Display label.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.label","typeLabel":"string"},"description":{"type":"string","maxLength":500,"description":"Optional node description.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.description","typeLabel":"string"},"isGlobal":{"type":"boolean","default":false,"description":"Whether this is a global node.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.isGlobal","typeLabel":"boolean"},"globalCondition":{"type":"string","description":"Condition that activates a global node. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.globalCondition","typeLabel":"string"},"globalConditionType":{"type":"string","enum":["prompt","dtmf"],"default":"prompt","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.globalConditionType","typeLabel":"enum\u003cstring>"},"globalDtmfKey":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"description":"DTMF key that triggers the global node when `globalConditionType` is `dtmf`.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.globalDtmfKey","typeLabel":"enum\u003cstring>"},"globalReturnToSource":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.globalReturnToSource","typeLabel":"boolean"},"requiresDoubleConfirm":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.requiresDoubleConfirm","typeLabel":"boolean"},"skipResponse":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.skipResponse","typeLabel":"boolean"},"staticVariables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A statically-set variable.","required":["id","name","dataType","value"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.staticVariables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.staticVariables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.staticVariables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"value":{"description":"The static value (string, number, boolean, array, object, or null).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.staticVariables.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.staticVariables.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.staticVariables.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.staticVariables","typeLabel":"object[]"},"transitions":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A transition from one node to another, gated by a condition.","required":["id","condition","targetNodeId"],"properties":{"id":{"type":"string","description":"Transition id (nanoid or UUID).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].id","typeLabel":"string"},"condition":{"oneOf":[{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["natural_language"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Natural-language condition prompt.","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.0.prompt","typeLabel":"string"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.0.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.0","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","conditions"],"properties":{"type":{"type":"string","enum":["structured_equation"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"conditions":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"description":"A single equation condition within a structured_equation.","required":["variable","operator","value"],"properties":{"variable":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].variable","typeLabel":"string"},"operator":{"type":"string","enum":["equals","not_equals","greater_than","less_than","greater_than_or_equal","less_than_or_equal","contains","not_contains","exists","not_exists","regex"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Comparison value (string, number, or boolean).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.1.conditions","typeLabel":"object[]"},"logic":{"type":"string","enum":["all","any"],"default":"all","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.1.logic","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.1.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","key"],"properties":{"type":{"type":"string","enum":["dtmf"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.2.type","typeLabel":"enum\u003cstring>"},"key":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.2.key","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.2.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["always"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.3.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Default path","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.3.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.3","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["auto"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.4.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Auto-advance","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.4.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition.oneOf.4","typeLabel":"object"}],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].condition","typeLabel":"object"},"targetNodeId":{"type":"string","description":"Target node id, or an empty string if unconnected.","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].targetNodeId","typeLabel":"string"},"name":{"type":"string","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].name","typeLabel":"string"},"priority":{"type":"integer","minimum":0,"default":0,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].priority","typeLabel":"integer"},"isEnabled":{"type":"boolean","default":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].isEnabled","typeLabel":"boolean"},"metadata":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].metadata.updatedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX].metadata","typeLabel":"object"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions.items.[INDEX]","typeLabel":"object"},"default":[],"description":"Outgoing transitions to other nodes.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transitions","typeLabel":"object[]"},"timeout":{"type":"integer","minimum":1,"default":30000,"description":"Timeout in milliseconds.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.timeout","typeLabel":"integer"},"transferMessage":{"type":"string","description":"Message spoken before handing off. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transferMessage","typeLabel":"string"},"transferMessageType":{"type":"string","enum":["static","prompt"],"default":"static","description":"Whether the message is a literal `static` string or a `prompt` for the LLM.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.transferMessageType","typeLabel":"enum\u003cstring>"},"handoffConversation":{"type":"boolean","default":false,"description":"Pass the conversation transcript to the target agent.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.handoffConversation","typeLabel":"boolean"},"handoffVariables":{"type":"boolean","default":false,"description":"Pass workflow variables to the target agent.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6.handoffVariables","typeLabel":"boolean"}},"additionalProperties":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","description":"A workflow node. The concrete shape depends on the `type` discriminator.","required":["id","type","position","metadata"],"properties":{"id":{"type":"string","description":"Unique node id (nanoid or UUID).","example":"2ZHj3IUpJFc-83H2-f8d3","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.id","typeLabel":"string"},"type":{"type":"string","description":"Node type discriminator.","enum":["router"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.type","typeLabel":"enum\u003cstring>"},"metadata":{"type":"object","additionalProperties":false,"description":"Node metadata.","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.metadata.updatedAt","typeLabel":"string\u003cdate-time>"},"version":{"type":"integer","minimum":1,"default":1,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.metadata.version","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.metadata","typeLabel":"object"},"position":{"type":"object","description":"Canvas position of the node.","required":["x","y"],"properties":{"x":{"type":"number","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.position.x","typeLabel":"number"},"y":{"type":"number","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.position.y","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.position","typeLabel":"object"},"label":{"type":"string","maxLength":100,"description":"Display label.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.label","typeLabel":"string"},"description":{"type":"string","maxLength":500,"description":"Optional node description.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.description","typeLabel":"string"},"isGlobal":{"type":"boolean","default":false,"description":"Whether this is a global node.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.isGlobal","typeLabel":"boolean"},"globalCondition":{"type":"string","description":"Condition that activates a global node. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.globalCondition","typeLabel":"string"},"globalConditionType":{"type":"string","enum":["prompt","dtmf"],"default":"prompt","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.globalConditionType","typeLabel":"enum\u003cstring>"},"globalDtmfKey":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"description":"DTMF key that triggers the global node when `globalConditionType` is `dtmf`.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.globalDtmfKey","typeLabel":"enum\u003cstring>"},"globalReturnToSource":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.globalReturnToSource","typeLabel":"boolean"},"requiresDoubleConfirm":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.requiresDoubleConfirm","typeLabel":"boolean"},"skipResponse":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.skipResponse","typeLabel":"boolean"},"staticVariables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A statically-set variable.","required":["id","name","dataType","value"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.staticVariables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.staticVariables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.staticVariables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"value":{"description":"The static value (string, number, boolean, array, object, or null).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.staticVariables.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.staticVariables.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.staticVariables.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.staticVariables","typeLabel":"object[]"},"transitions":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A transition from one node to another, gated by a condition.","required":["id","condition","targetNodeId"],"properties":{"id":{"type":"string","description":"Transition id (nanoid or UUID).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].id","typeLabel":"string"},"condition":{"oneOf":[{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["natural_language"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Natural-language condition prompt.","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.0.prompt","typeLabel":"string"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.0.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.0","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","conditions"],"properties":{"type":{"type":"string","enum":["structured_equation"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"conditions":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"description":"A single equation condition within a structured_equation.","required":["variable","operator","value"],"properties":{"variable":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].variable","typeLabel":"string"},"operator":{"type":"string","enum":["equals","not_equals","greater_than","less_than","greater_than_or_equal","less_than_or_equal","contains","not_contains","exists","not_exists","regex"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Comparison value (string, number, or boolean).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.1.conditions","typeLabel":"object[]"},"logic":{"type":"string","enum":["all","any"],"default":"all","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.1.logic","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.1.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","key"],"properties":{"type":{"type":"string","enum":["dtmf"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.2.type","typeLabel":"enum\u003cstring>"},"key":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.2.key","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.2.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["always"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.3.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Default path","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.3.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.3","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["auto"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.4.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Auto-advance","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.4.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition.oneOf.4","typeLabel":"object"}],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].condition","typeLabel":"object"},"targetNodeId":{"type":"string","description":"Target node id, or an empty string if unconnected.","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].targetNodeId","typeLabel":"string"},"name":{"type":"string","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].name","typeLabel":"string"},"priority":{"type":"integer","minimum":0,"default":0,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].priority","typeLabel":"integer"},"isEnabled":{"type":"boolean","default":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].isEnabled","typeLabel":"boolean"},"metadata":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].metadata.updatedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX].metadata","typeLabel":"object"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions.items.[INDEX]","typeLabel":"object"},"default":[],"description":"Outgoing transitions to other nodes.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7.transitions","typeLabel":"object[]"}},"additionalProperties":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","description":"A workflow node. The concrete shape depends on the `type` discriminator.","required":["id","type","position","metadata"],"properties":{"id":{"type":"string","description":"Unique node id (nanoid or UUID).","example":"2ZHj3IUpJFc-83H2-f8d3","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.id","typeLabel":"string"},"type":{"type":"string","description":"Node type discriminator.","enum":["set_local_variables"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.type","typeLabel":"enum\u003cstring>"},"metadata":{"type":"object","additionalProperties":false,"description":"Node metadata.","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.metadata.updatedAt","typeLabel":"string\u003cdate-time>"},"version":{"type":"integer","minimum":1,"default":1,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.metadata.version","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.metadata","typeLabel":"object"},"position":{"type":"object","description":"Canvas position of the node.","required":["x","y"],"properties":{"x":{"type":"number","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.position.x","typeLabel":"number"},"y":{"type":"number","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.position.y","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.position","typeLabel":"object"},"label":{"type":"string","maxLength":100,"description":"Display label.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.label","typeLabel":"string"},"description":{"type":"string","maxLength":500,"description":"Optional node description.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.description","typeLabel":"string"},"isGlobal":{"type":"boolean","default":false,"description":"Whether this is a global node.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.isGlobal","typeLabel":"boolean"},"globalCondition":{"type":"string","description":"Condition that activates a global node. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.globalCondition","typeLabel":"string"},"globalConditionType":{"type":"string","enum":["prompt","dtmf"],"default":"prompt","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.globalConditionType","typeLabel":"enum\u003cstring>"},"globalDtmfKey":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"description":"DTMF key that triggers the global node when `globalConditionType` is `dtmf`.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.globalDtmfKey","typeLabel":"enum\u003cstring>"},"globalReturnToSource":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.globalReturnToSource","typeLabel":"boolean"},"requiresDoubleConfirm":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.requiresDoubleConfirm","typeLabel":"boolean"},"skipResponse":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.skipResponse","typeLabel":"boolean"},"staticVariables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A statically-set variable.","required":["id","name","dataType","value"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.staticVariables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.staticVariables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.staticVariables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"value":{"description":"The static value (string, number, boolean, array, object, or null).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.staticVariables.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.staticVariables.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.staticVariables.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.staticVariables","typeLabel":"object[]"},"transitions":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A transition from one node to another, gated by a condition.","required":["id","condition","targetNodeId"],"properties":{"id":{"type":"string","description":"Transition id (nanoid or UUID).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].id","typeLabel":"string"},"condition":{"oneOf":[{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["natural_language"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Natural-language condition prompt.","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.0.prompt","typeLabel":"string"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.0.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.0","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","conditions"],"properties":{"type":{"type":"string","enum":["structured_equation"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"conditions":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"description":"A single equation condition within a structured_equation.","required":["variable","operator","value"],"properties":{"variable":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].variable","typeLabel":"string"},"operator":{"type":"string","enum":["equals","not_equals","greater_than","less_than","greater_than_or_equal","less_than_or_equal","contains","not_contains","exists","not_exists","regex"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Comparison value (string, number, or boolean).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.1.conditions","typeLabel":"object[]"},"logic":{"type":"string","enum":["all","any"],"default":"all","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.1.logic","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.1.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","key"],"properties":{"type":{"type":"string","enum":["dtmf"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.2.type","typeLabel":"enum\u003cstring>"},"key":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.2.key","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.2.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["always"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.3.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Default path","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.3.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.3","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["auto"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.4.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Auto-advance","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.4.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition.oneOf.4","typeLabel":"object"}],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].condition","typeLabel":"object"},"targetNodeId":{"type":"string","description":"Target node id, or an empty string if unconnected.","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].targetNodeId","typeLabel":"string"},"name":{"type":"string","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].name","typeLabel":"string"},"priority":{"type":"integer","minimum":0,"default":0,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].priority","typeLabel":"integer"},"isEnabled":{"type":"boolean","default":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].isEnabled","typeLabel":"boolean"},"metadata":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].metadata.updatedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX].metadata","typeLabel":"object"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions.items.[INDEX]","typeLabel":"object"},"default":[],"description":"Outgoing transitions to other nodes.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8.transitions","typeLabel":"object[]"}},"additionalProperties":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","description":"A workflow node. The concrete shape depends on the `type` discriminator.","required":["id","type","position","metadata"],"properties":{"id":{"type":"string","description":"Unique node id (nanoid or UUID).","example":"2ZHj3IUpJFc-83H2-f8d3","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.id","typeLabel":"string"},"type":{"type":"string","description":"Node type discriminator.","enum":["change_agent_settings"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.type","typeLabel":"enum\u003cstring>"},"metadata":{"type":"object","additionalProperties":false,"description":"Node metadata.","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.metadata.updatedAt","typeLabel":"string\u003cdate-time>"},"version":{"type":"integer","minimum":1,"default":1,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.metadata.version","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.metadata","typeLabel":"object"},"position":{"type":"object","description":"Canvas position of the node.","required":["x","y"],"properties":{"x":{"type":"number","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.position.x","typeLabel":"number"},"y":{"type":"number","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.position.y","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.position","typeLabel":"object"},"label":{"type":"string","maxLength":100,"description":"Display label.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.label","typeLabel":"string"},"description":{"type":"string","maxLength":500,"description":"Optional node description.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.description","typeLabel":"string"},"isGlobal":{"type":"boolean","default":false,"description":"Whether this is a global node.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.isGlobal","typeLabel":"boolean"},"globalCondition":{"type":"string","description":"Condition that activates a global node. Supports `{{variable}}` interpolation; may be empty.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.globalCondition","typeLabel":"string"},"globalConditionType":{"type":"string","enum":["prompt","dtmf"],"default":"prompt","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.globalConditionType","typeLabel":"enum\u003cstring>"},"globalDtmfKey":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"description":"DTMF key that triggers the global node when `globalConditionType` is `dtmf`.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.globalDtmfKey","typeLabel":"enum\u003cstring>"},"globalReturnToSource":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.globalReturnToSource","typeLabel":"boolean"},"requiresDoubleConfirm":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.requiresDoubleConfirm","typeLabel":"boolean"},"skipResponse":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.skipResponse","typeLabel":"boolean"},"staticVariables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A statically-set variable.","required":["id","name","dataType","value"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.staticVariables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.staticVariables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.staticVariables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"value":{"description":"The static value (string, number, boolean, array, object, or null).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.staticVariables.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.staticVariables.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.staticVariables.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.staticVariables","typeLabel":"object[]"},"transitions":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A transition from one node to another, gated by a condition.","required":["id","condition","targetNodeId"],"properties":{"id":{"type":"string","description":"Transition id (nanoid or UUID).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].id","typeLabel":"string"},"condition":{"oneOf":[{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["natural_language"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Natural-language condition prompt.","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.0.prompt","typeLabel":"string"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.0.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.0","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","conditions"],"properties":{"type":{"type":"string","enum":["structured_equation"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"conditions":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"description":"A single equation condition within a structured_equation.","required":["variable","operator","value"],"properties":{"variable":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].variable","typeLabel":"string"},"operator":{"type":"string","enum":["equals","not_equals","greater_than","less_than","greater_than_or_equal","less_than_or_equal","contains","not_contains","exists","not_exists","regex"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"value":{"description":"Comparison value (string, number, or boolean).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].value","typeLabel":"any"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.1.conditions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.1.conditions","typeLabel":"object[]"},"logic":{"type":"string","enum":["all","any"],"default":"all","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.1.logic","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.1.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type","key"],"properties":{"type":{"type":"string","enum":["dtmf"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.2.type","typeLabel":"enum\u003cstring>"},"key":{"type":"string","enum":["0","1","2","3","4","5","6","7","8","9","#","*"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.2.key","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.2.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["always"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.3.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Default path","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.3.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.3","typeLabel":"object"},{"type":"object","description":"Transition condition. Shape depends on the `type` discriminator.","required":["type"],"properties":{"type":{"type":"string","enum":["auto"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.4.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","default":"Auto-advance","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.4.description","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition.oneOf.4","typeLabel":"object"}],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].condition","typeLabel":"object"},"targetNodeId":{"type":"string","description":"Target node id, or an empty string if unconnected.","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].targetNodeId","typeLabel":"string"},"name":{"type":"string","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].name","typeLabel":"string"},"priority":{"type":"integer","minimum":0,"default":0,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].priority","typeLabel":"integer"},"isEnabled":{"type":"boolean","default":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].isEnabled","typeLabel":"boolean"},"metadata":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].metadata.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].metadata.updatedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX].metadata","typeLabel":"object"}},"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions.items.[INDEX]","typeLabel":"object"},"default":[],"description":"Outgoing transitions to other nodes.","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.transitions","typeLabel":"object[]"},"settingsOverrides":{"type":"object","additionalProperties":true,"default":{},"description":"Agent-setting overrides applied at this node. Stored as-is and not field-validated (mirrors agent-level config).","uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9.settingsOverrides","typeLabel":"object"}},"additionalProperties":true,"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX].oneOf.9","typeLabel":"object"}],"uniqueKey":"data.workflow.oneOf.0.nodes.items.[INDEX]","typeLabel":"object"},"description":"The workflow nodes (the flow graph).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.nodes","typeLabel":"object[]"},"edges":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"An edge between two nodes (ReactFlow canvas).","required":["id","source","target"],"properties":{"id":{"type":"string","description":"Edge id (nanoid or UUID).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.edges.items.[INDEX].id","typeLabel":"string"},"source":{"type":"string","description":"Source node id.","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.edges.items.[INDEX].source","typeLabel":"string"},"target":{"type":"string","description":"Target node id.","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.edges.items.[INDEX].target","typeLabel":"string"},"sourceHandle":{"type":"string","uniqueKey":"data.workflow.oneOf.0.edges.items.[INDEX].sourceHandle","typeLabel":"string"},"targetHandle":{"type":"string","uniqueKey":"data.workflow.oneOf.0.edges.items.[INDEX].targetHandle","typeLabel":"string"},"type":{"type":"string","default":"default","description":"Edge render type (custom ReactFlow types like `deletable` are allowed).","uniqueKey":"data.workflow.oneOf.0.edges.items.[INDEX].type","typeLabel":"string"},"selected":{"type":"boolean","description":"Canvas selection state.","uniqueKey":"data.workflow.oneOf.0.edges.items.[INDEX].selected","typeLabel":"boolean"},"animated":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.edges.items.[INDEX].animated","typeLabel":"boolean"},"hidden":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.edges.items.[INDEX].hidden","typeLabel":"boolean"},"metadata":{"type":"object","properties":{"transitionId":{"type":"string","uniqueKey":"data.workflow.oneOf.0.edges.items.[INDEX].metadata.transitionId","typeLabel":"string"},"label":{"type":"string","uniqueKey":"data.workflow.oneOf.0.edges.items.[INDEX].metadata.label","typeLabel":"string"},"style":{"type":"object","additionalProperties":true,"uniqueKey":"data.workflow.oneOf.0.edges.items.[INDEX].metadata.style","typeLabel":"object"}},"uniqueKey":"data.workflow.oneOf.0.edges.items.[INDEX].metadata","typeLabel":"object"}},"uniqueKey":"data.workflow.oneOf.0.edges.items.[INDEX]","typeLabel":"object"},"description":"Edges connecting nodes in the builder canvas.","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.edges","typeLabel":"object[]"},"customVariables":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A workflow variable (also used for extracted and nested variables).","required":["id","name","dataType"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","description":"Variable id — nanoid or author slug (e.g. `out_var_flights`).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.customVariables.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","description":"Variable name (snake_case).","isRequired":true,"uniqueKey":"data.workflow.oneOf.0.customVariables.items.[INDEX].name","typeLabel":"string"},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.customVariables.items.[INDEX].dataType","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.workflow.oneOf.0.customVariables.items.[INDEX].description","typeLabel":"string"},"enumValues":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["value"],"properties":{"value":{"type":"string","maxLength":100,"isRequired":true,"uniqueKey":"data.workflow.oneOf.0.customVariables.items.[INDEX].enumValues.items.[INDEX].value","typeLabel":"string"},"label":{"type":"string","maxLength":100,"uniqueKey":"data.workflow.oneOf.0.customVariables.items.[INDEX].enumValues.items.[INDEX].label","typeLabel":"string"}},"uniqueKey":"data.workflow.oneOf.0.customVariables.items.[INDEX].enumValues.items.[INDEX]","typeLabel":"object"},"default":[],"uniqueKey":"data.workflow.oneOf.0.customVariables.items.[INDEX].enumValues","typeLabel":"object[]"},"isEnumEnabled":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.customVariables.items.[INDEX].isEnumEnabled","typeLabel":"boolean"},"isRequired":{"type":"boolean","default":false,"uniqueKey":"data.workflow.oneOf.0.customVariables.items.[INDEX].isRequired","typeLabel":"boolean"},"defaultValue":{"oneOf":[{"description":"Default value (string, number, boolean, or null).","uniqueKey":"data.workflow.oneOf.0.customVariables.items.[INDEX].defaultValue.oneOf.0","typeLabel":"any"},{"description":"Default value (string, number, boolean, or null).","type":"null","uniqueKey":"data.workflow.oneOf.0.customVariables.items.[INDEX].defaultValue.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.workflow.oneOf.0.customVariables.items.[INDEX].defaultValue","typeLabel":"any | null"},"extractionPrompt":{"type":"string","uniqueKey":"data.workflow.oneOf.0.customVariables.items.[INDEX].extractionPrompt","typeLabel":"string"},"sourceNodeId":{"type":"string","uniqueKey":"data.workflow.oneOf.0.customVariables.items.[INDEX].sourceNodeId","typeLabel":"string"},"sourceNodeType":{"type":"string","uniqueKey":"data.workflow.oneOf.0.customVariables.items.[INDEX].sourceNodeType","typeLabel":"string"},"properties":{"type":"array","items":{"$circularRef":"aa2f421c-029e-4c52-9234-ca4cd0587f85"},"description":"Child variables (for `object` types).","uniqueKey":"data.workflow.oneOf.0.customVariables.items.[INDEX].properties","typeLabel":"array"},"item":{"$circularRef":"aa2f421c-029e-4c52-9234-ca4cd0587f85","description":"Element schema (for `array` types).","uniqueKey":"data.workflow.oneOf.0.customVariables.items.[INDEX].item","typeLabel":"any"}},"uniqueKey":"data.workflow.oneOf.0.customVariables.items.[INDEX]","typeLabel":"object"},"default":[],"description":"Workflow-level variables available across nodes.","uniqueKey":"data.workflow.oneOf.0.customVariables","typeLabel":"object[]"}},"uniqueKey":"data.workflow.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"data.workflow.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.workflow","typeLabel":"object | null"},"outcomeResponseShape":{"oneOf":[{"type":"object","description":"Expected outcome response structure","uniqueKey":"data.outcomeResponseShape.oneOf.0","typeLabel":"object"},{"type":"null","description":"Expected outcome response structure","uniqueKey":"data.outcomeResponseShape.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.outcomeResponseShape","typeLabel":"object | null"},"resolvedWebTools":{"oneOf":[{"type":"array","description":"Resolved web tools with overrides applied","items":{"type":"object","uniqueKey":"data.resolvedWebTools.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.resolvedWebTools.oneOf.0","typeLabel":"object[]"},{"type":"null","description":"Resolved web tools with overrides applied","items":{"type":"object"},"uniqueKey":"data.resolvedWebTools.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.resolvedWebTools","typeLabel":"object[] | null"},"createdAt":{"type":"string","format":"date-time","example":"2024-01-15T10:30:00Z","uniqueKey":"data.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","example":"2024-01-15T10:30:00Z","uniqueKey":"data.updatedAt","typeLabel":"string\u003cdate-time>"},"account":{"type":"object","description":"User account plan information","properties":{"plan":{"oneOf":[{"type":"string","example":"pro","uniqueKey":"data.account.plan.oneOf.0","typeLabel":"string"},{"type":"null","example":"pro","uniqueKey":"data.account.plan.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.account.plan","typeLabel":"string | null"}},"uniqueKey":"data.account","typeLabel":"object"}},"uniqueKey":"data","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"success":true,"message":"Voice agent created successfully","messageKey":"VoiceAgentCreatedSuccessfully","data":{"id":"48f7656f-098b-4c43-b165-7cfd2cc8ac30","type":"Single Prompt","name":"Customer Support Agent","conversation":{"greetingMessage":"Hello, how can I help you today?","greetingMessageType":null,"preamble":"You are a helpful assistant.","pokeMessages":[],"params":{},"alignment":{"greetingMessage":"ltr","preamble":"ltr"}},"voice":{"voiceId":"en-US-Neural2-A","voiceRecordId":null,"voiceRecord":{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","name":"\u003cstring>","provider":"\u003cstring>","language":"\u003cstring>","image":"\u003cstring>","languageCode":"\u003cstring>","voiceRecord":{}},"lang":"en","ttsParams":{}},"llm":{"provider":"openai","model":"gpt-4","temperature":0.2,"baseUrl":null,"apiKey":null},"callSettings":{"noiseCancellation":"telephony_optimized","cancelNoisePer":"conversation","interrupt":true,"responseDelay":400,"userInactivityTimeout":15,"maxCallDuration":300,"silenceThreshold":800,"backgroundNoise":false,"thinkingVoice":false,"speakerIdentification":false,"agenticRag":false,"languageDialectSwitcher":false,"minInterruptionDuration":0.5,"vadActivationThreshold":0.5,"enableAutoGainControl":false,"sendDenoisedToStt":false,"genderDetection":false,"smartCallEnd":false,"waitForUserToSpeakFirst":0},"tools":[{}],"knowledgeBaseItemsIds":[],"voiceDictionaryIds":[],"phoneNumber":{"type":"TWILIO","id":"48f7656f-098b-4c43-b165-7cfd2cc8ac30"},"webhookUrl":null,"webhookAuth":{},"workflow":{"nodes":[{"id":"2ZHj3IUpJFc-83H2-f8d3","type":"start","label":"Start","message":"Hello, how can I help you today?","messageType":"prompt","position":{"x":0,"y":0},"metadata":{"version":1},"transitions":[]}],"edges":[],"customVariables":[{"id":"z5QsyxUbrKPjYMGaMj1e1","name":"customer_name","dataType":"string","description":"","defaultValue":"john","extractionPrompt":"","enumValues":[]}]},"outcomeResponseShape":{},"resolvedWebTools":[{}],"createdAt":"2024-01-15T10:30:00Z","updatedAt":"2024-01-15T10:30:00Z","account":{"plan":"pro"}}}}},"exampleType":"generated"}},"exampleType":"generated"},"0ada9721-d570-4c4b-bbf0-74fbc1040276":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","uniqueKey":"code","typeLabel":"integer"},"message":{"type":"string","uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":123,"message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"a93b1cca-6612-4c63-836e-703e73f5bcab":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","uniqueKey":"code","typeLabel":"integer"},"message":{"type":"string","uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":123,"message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"8cfa817e-6024-424b-80fe-5b1a52f48bc9":{"description":"Server Side Error","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","uniqueKey":"code","typeLabel":"integer"},"message":{"type":"string","uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":123,"message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"c518edff-0efd-47f4-81d7-4fdd893088a3":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"Pass the API key in the Authorization header, You need to put Token keyword before the API key. e.g. 'Authorization: Token \u003capi-key>'","scopes":[]}}},"servers":{"ff17730e-9c86-4caa-bbcc-7af173285799":{"url":"https://api.tryhamsa.com"}},"schemas":{"aa2f421c-029e-4c52-9234-ca4cd0587f85":{"type":"object","additionalProperties":false,"description":"A workflow variable (also used for extracted and nested variables).","required":["id","name","dataType"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","description":"Variable id — nanoid or author slug (e.g. `out_var_flights`).","isRequired":true},"name":{"type":"string","maxLength":50,"pattern":"^[a-z][a-z0-9_]*$","description":"Variable name (snake_case).","isRequired":true},"dataType":{"type":"string","enum":["string","number","boolean","integer","array","object"],"isRequired":true},"description":{"type":"string","maxLength":500},"enumValues":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["value"],"properties":{"value":{"type":"string","maxLength":100,"isRequired":true},"label":{"type":"string","maxLength":100}}},"default":[]},"isEnumEnabled":{"type":"boolean","default":false},"isRequired":{"type":"boolean","default":false},"defaultValue":{"oneOf":[{"description":"Default value (string, number, boolean, or null)."},{"type":"null","description":"Default value (string, number, boolean, or null)."}]},"extractionPrompt":{"type":"string"},"sourceNodeId":{"type":"string"},"sourceNodeType":{"type":"string"},"properties":{"type":"array","items":{"$circularRef":"aa2f421c-029e-4c52-9234-ca4cd0587f85"},"description":"Child variables (for `object` types)."},"item":{"$circularRef":"aa2f421c-029e-4c52-9234-ca4cd0587f85","description":"Element schema (for `array` types)."}}}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"Authorization","description":"Pass the API key in the Authorization header, You need to put Token keyword before the API key. e.g. 'Authorization: Token \u003capi-key>'","scopes":[]},"schema":{"title":"Authorization","type":"string","description":"Pass the API key in the Authorization header, You need to put Token keyword before the API key. e.g. 'Authorization: Token \u003capi-key>'","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"Authorization"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"hamsa-452fa79a","siteName":"Hamsa API","title":"Create Voice Agent - Hamsa API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-04T14:43:26.143Z","originalFileLocation":"api-reference/endpoint/create-voice-agent-v2.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Creates a new voice agent using the V2 API with enhanced configuration options.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Hamsa API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hamsa-452fa79a/11pr1mz1Eztynfhz/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/hamsa-452fa79a/11pr1mz1Eztynfhz/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hamsa-452fa79a/11pr1mz1Eztynfhz/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/hamsa-452fa79a/11pr1mz1Eztynfhz/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/hamsa-452fa79a/11pr1mz1Eztynfhz/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hamsa-452fa79a/11pr1mz1Eztynfhz/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hamsa-452fa79a/11pr1mz1Eztynfhz/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/hamsa-452fa79a/11pr1mz1Eztynfhz/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/hamsa-452fa79a/11pr1mz1Eztynfhz/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create Voice Agent - Hamsa API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Creates a new voice agent using the V2 API with enhanced configuration options.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Hamsa API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.tryhamsa.com/api-reference/endpoint/create-voice-agent-v2\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://hamsa-452fa79a.mintlify.site/_mintlify/api/og/v2?division=Voice+Agents+Routes\u0026amp;title=Create+Voice+Agent\u0026amp;description=Creates+a+new+voice+agent+using+the+V2+API+with+enhanced+configuration+options.\u0026amp;theme=36084cdf444b71ec535ab394\u0026amp;signature=c4f8d37ebb05f6ee41c06b5a04e2a1eaa0731959eee78393a6bed8c76a2ca65a\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Create Voice Agent - Hamsa API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Creates a new voice agent using the V2 API with enhanced configuration options.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://hamsa-452fa79a.mintlify.site/_mintlify/api/og/v2?division=Voice+Agents+Routes\u0026amp;title=Create+Voice+Agent\u0026amp;description=Creates+a+new+voice+agent+using+the+V2+API+with+enhanced+configuration+options.\u0026amp;theme=36084cdf444b71ec535ab394\u0026amp;signature=c4f8d37ebb05f6ee41c06b5a04e2a1eaa0731959eee78393a6bed8c76a2ca65a\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/hamsa-452fa79a/11pr1mz1Eztynfhz/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Hamsa API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1B5E3A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.tryhamsa.com/api-reference/endpoint/create-voice-agent-v2\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/endpoint/create-voice-agent-v2.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.tryhamsa.com/#organization\",\"name\":\"Hamsa API\",\"url\":\"https://docs.tryhamsa.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/hamsa-452fa79a/B5KuRhzUCER4_1Wi/logo/hamsa_logo_light.svg?fit=max\u0026auto=format\u0026n=B5KuRhzUCER4_1Wi\u0026q=85\u0026s=2576c2f27fed68b31fa686aca13e6fbf\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.tryhamsa.com#website\",\"name\":\"Hamsa API\",\"url\":\"https://docs.tryhamsa.com\",\"publisher\":{\"@id\":\"https://docs.tryhamsa.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.tryhamsa.com/api-reference/endpoint/create-voice-agent-v2#webpage\",\"url\":\"https://docs.tryhamsa.com/api-reference/endpoint/create-voice-agent-v2\",\"name\":\"Create Voice Agent\",\"description\":\"Creates a new voice agent using the V2 API with enhanced configuration options.\",\"dateModified\":\"2026-08-04T14:43:26.143Z\",\"isPartOf\":{\"@id\":\"https://docs.tryhamsa.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.tryhamsa.com/api-reference/endpoint/create-voice-agent-v2#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.tryhamsa.com/api-reference/endpoint/create-voice-agent-v2#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Voice Agents Routes\",\"item\":\"https://docs.tryhamsa.com/api-reference/endpoint/clone-voice-agent\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create Voice Agent\",\"item\":\"https://docs.tryhamsa.com/api-reference/endpoint/create-voice-agent-v2\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.tryhamsa.com/api-reference/endpoint/create-voice-agent-v2#apireference\",\"headline\":\"Create Voice Agent\",\"name\":\"Create Voice Agent\",\"description\":\"Creates a new voice agent using the V2 API with enhanced configuration options.\",\"url\":\"https://docs.tryhamsa.com/api-reference/endpoint/create-voice-agent-v2\",\"mainEntityOfPage\":{\"@id\":\"https://docs.tryhamsa.com/api-reference/endpoint/create-voice-agent-v2#webpage\"},\"dateModified\":\"2026-08-04T14:43:26.143Z\",\"publisher\":{\"@id\":\"https://docs.tryhamsa.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.tryhamsa.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Hamsa API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Hamsa API","nav":{"global":null,"tabs":[{"tab":"Overview","icon":"list-timeline","pages":[{"title":"Overview","href":"/overview/introduction"}]},{"tab":"Text to Speech","icon":"message-waveform","pages":[{"title":"Text to Speech","href":"/text-to-speech/introduction"}]},{"tab":"Speech to Text","icon":"head-side-speak","pages":[{"title":"Speech to Text","href":"/speech-to-text/introduction"}]},{"tab":"Agents Platform","icon":"user-robot","pages":[{"title":"Agents Platform","href":"/agents/dashboard/introduction"}]},{"tab":"Media Platform","icon":"photo-film-music","pages":[{"title":"Media Platform","href":"/media/introduction"}]},{"tab":"Developers","icon":"square-terminal","pages":[{"title":"Developers","href":"/developers/apis/quick-start"}]},{"tab":"API Reference","icon":"code","groups":[{"group":"API Documentation","pages":[{"title":"Introduction","href":"/api-reference/introduction"}]},{"group":"Speech-to-Text Routes","pages":[]},{"group":"Text to Speech Routes","pages":[{"title":"Generate Text to Speech Route","deprecated":null,"version":null,"sidebarTitle":"Generate tts","openapi":"/api-reference/openapi.json post /v1/jobs/text-to-speech","href":"/api-reference/endpoint/generate-tts"},{"title":"Preload Cloned TTS Voice","deprecated":null,"version":null,"sidebarTitle":"Preload cloned tts voice","openapi":"/api-reference/openapi.json post /v2/tts/voices/custom/preload","href":"/api-reference/endpoint/preload-cloned-tts-voice"},{"title":"Create TTS history","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v2/tts/histories","href":"/api-reference/create-tts-history"},{"title":"List TTS histories","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v2/tts/histories","href":"/api-reference/list-tts-histories"},{"title":"Get TTS history","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v2/tts/histories/{id}","href":"/api-reference/get-tts-history"},{"title":"Delete TTS history","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v2/tts/histories/{id}","href":"/api-reference/delete-tts-history"}]},{"group":"Real Time Routes","pages":[{"title":"Generate Text to Speech File Data","deprecated":null,"version":null,"sidebarTitle":"Rt generate tts","openapi":"/api-reference/openapi.json post /v1/realtime/tts","href":"/api-reference/endpoint/rt-generate-tts"},{"title":"Generate Streamed Text to Speech File Data","deprecated":null,"version":null,"sidebarTitle":"Rt generate tts stream","openapi":"/api-reference/openapi.json post /v1/realtime/tts-stream","href":"/api-reference/endpoint/rt-generate-tts-stream"},{"title":"Generate Speech to Text Transcription","deprecated":null,"version":null,"sidebarTitle":"Rt generate stt","openapi":"/api-reference/openapi.json post /v1/realtime/stt","href":"/api-reference/endpoint/rt-generate-stt"}]},{"group":"Phone Numbers Routes","pages":[{"title":"Add Phone Number to a User Route","deprecated":null,"version":null,"sidebarTitle":"Add phone number","openapi":"/api-reference/openapi.json post /v1/voice-agents/phone-number","href":"/api-reference/endpoint/add-phone-number"},{"title":"Get Phone Number by its ID Route","deprecated":null,"version":null,"sidebarTitle":"Get phone number","openapi":"/api-reference/openapi.json get /v1/voice-agents/phone-number","href":"/api-reference/endpoint/get-phone-number"},{"title":"Delete Phone Number","deprecated":null,"version":null,"sidebarTitle":"Delete phone number","openapi":"/api-reference/openapi.json delete /v1/voice-agents/phone-number","href":"/api-reference/endpoint/delete-phone-number"},{"title":"Assign Phone Number to a Voice Agent Route","deprecated":null,"version":null,"sidebarTitle":"Assign phone number","openapi":"/api-reference/openapi.json post /v1/voice-agents/assign-number","href":"/api-reference/endpoint/assign-phone-number"},{"title":"Unassign Phone Number to a Voice Agent Route","deprecated":null,"version":null,"sidebarTitle":"Unassign phone number","openapi":"/api-reference/openapi.json post /v1/voice-agents/unassign","href":"/api-reference/endpoint/unassign-phone-number"},{"title":"List User Phone Numbers Route","deprecated":null,"version":null,"sidebarTitle":"List phone numbers","openapi":"/api-reference/openapi.json get /v1/voice-agents/phone-number/list","href":"/api-reference/endpoint/list-phone-numbers"},{"title":"Create an Outbound Call","deprecated":null,"version":null,"sidebarTitle":"Call phone number","openapi":"/api-reference/openapi.json post /v1/voice-agents/phone-number/call","href":"/api-reference/endpoint/call-phone-number"}]},{"group":"Voice Agents Routes","pages":[{"title":"Clone Voice Agent Route","description":"Use this route to clone an existing agent. You can use it to clone one of the voice agents templates created by our experts!","deprecated":null,"version":null,"sidebarTitle":"Clone voice agent","openapi":"/api-reference/openapi.json post /v1/voice-agents/clone","href":"/api-reference/endpoint/clone-voice-agent"},{"title":"Create Voice Agent","deprecated":null,"version":null,"sidebarTitle":"Create voice agent v2","openapi":"/api-reference/openapi.json post /v2/voice-agents","href":"/api-reference/endpoint/create-voice-agent-v2"},{"title":"List Voice Agents","description":"Retrieves a paginated list of voice agents with filtering and sorting options.","deprecated":null,"version":null,"sidebarTitle":"List voice agents v2","openapi":"/api-reference/openapi.json get /v2/voice-agents","href":"/api-reference/endpoint/list-voice-agents-v2"},{"title":"Get Voice Agent","deprecated":null,"version":null,"sidebarTitle":"Get voice agent v2","openapi":"/api-reference/openapi.json get /v2/voice-agents/{voiceAgentId}","href":"/api-reference/endpoint/get-voice-agent-v2"},{"title":"Update Voice Agent","deprecated":null,"version":null,"sidebarTitle":"Update voice agent v2","openapi":"/api-reference/openapi.json patch /v2/voice-agents/{voiceAgentId}","href":"/api-reference/endpoint/update-voice-agent-v2"}]},{"group":"Voice Cloning","pages":[{"title":"List TTS voices","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v2/tts/voices","href":"/api-reference/list-tts-voices"},{"title":"Create TTS voice","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v2/tts/voices","href":"/api-reference/create-tts-voice"},{"title":"List dialects","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v2/tts/dialects","href":"/api-reference/list-dialects"},{"title":"Favorite a TTS voice","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v2/tts/voices/{id}/favourite","href":"/api-reference/favorite-a-tts-voice"},{"title":"Delete TTS voice","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v2/tts/voices/{id}","href":"/api-reference/delete-tts-voice"},{"title":"Get TTS voice","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v2/tts/voices/{id}","href":"/api-reference/get-tts-voice"},{"title":"Preview TTS voice","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v2/tts/voices/preview","href":"/api-reference/preview-tts-voice"},{"title":"Get default TTS voice","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v2/tts/voices/default/current","href":"/api-reference/get-default-tts-voice"},{"title":"Extract transcription from voice audio","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v2/tts/voices/extract-transcription","href":"/api-reference/extract-transcription-from-voice-audio"}]},{"group":"Call Conversations","pages":[{"title":"List Call Records (Minimal)","deprecated":null,"version":null,"sidebarTitle":"List minimal calls","openapi":"/api-reference/openapi.json get /v1/voice-agents/conversations/minimal-list","href":"/api-reference/endpoint/list-minimal-calls"},{"title":"Get Conversation by ID","deprecated":null,"version":null,"sidebarTitle":"Get conversation","openapi":"/api-reference/openapi.json get /v1/voice-agents/conversation/{conversationId}","href":"/api-reference/endpoint/get-conversation"},{"title":"Terminate Conversation","deprecated":null,"version":null,"sidebarTitle":"Terminate conversation","openapi":"/api-reference/openapi.json get /v1/voice-agents/conversation/{conversationId}/terminate","href":"/api-reference/endpoint/terminate-conversation"}]},{"group":"Outbound Campaigns","pages":[{"title":"Create Campaign","deprecated":null,"version":null,"sidebarTitle":"Create campaign","openapi":"/api-reference/openapi.json post /v1/voice-agents/campaigns","href":"/api-reference/endpoint/create-campaign"},{"title":"List Campaigns","deprecated":null,"version":null,"sidebarTitle":"List campaigns","openapi":"/api-reference/openapi.json get /v1/voice-agents/campaigns","href":"/api-reference/endpoint/list-campaigns"},{"title":"Get Campaign by ID","deprecated":null,"version":null,"sidebarTitle":"Get campaign","openapi":"/api-reference/openapi.json get /v1/voice-agents/campaigns/{id}","href":"/api-reference/endpoint/get-campaign"},{"title":"Update Campaign Name","deprecated":null,"version":null,"sidebarTitle":"Update campaign","openapi":"/api-reference/openapi.json patch /v1/voice-agents/campaigns/{id}","href":"/api-reference/endpoint/update-campaign"},{"title":"Delete Campaign","deprecated":null,"version":null,"sidebarTitle":"Delete campaign","openapi":"/api-reference/openapi.json delete /v1/voice-agents/campaigns/{id}","href":"/api-reference/endpoint/delete-campaign"},{"title":"Cancel Campaign","deprecated":null,"version":null,"sidebarTitle":"Cancel campaign","openapi":"/api-reference/openapi.json post /v1/voice-agents/campaigns/{id}/cancel","href":"/api-reference/endpoint/cancel-campaign"},{"title":"Retry Campaign","deprecated":null,"version":null,"sidebarTitle":"Retry campaign","openapi":"/api-reference/openapi.json post /v1/voice-agents/campaigns/{id}/retry","href":"/api-reference/endpoint/retry-campaign"},{"title":"Pause Campaign","deprecated":null,"version":null,"sidebarTitle":"Pause campaign","openapi":"/api-reference/openapi.json post /v1/voice-agents/campaigns/{id}/pause","href":"/api-reference/endpoint/pause-campaign"},{"title":"Resume Campaign","deprecated":null,"version":null,"sidebarTitle":"Resume campaign","openapi":"/api-reference/openapi.json post /v1/voice-agents/campaigns/{id}/resume","href":"/api-reference/endpoint/resume-campaign"}]},{"group":"Dictionaries","pages":[{"title":"Create Voice Dictionary","deprecated":null,"version":null,"sidebarTitle":"Create voice dictionary","openapi":"/api-reference/openapi.json post /v1/voice-agents/voice-dictionaries","href":"/api-reference/endpoint/create-voice-dictionary"},{"title":"List Voice Dictionaries","deprecated":null,"version":null,"sidebarTitle":"List voice dictionaries","openapi":"/api-reference/openapi.json get /v1/voice-agents/voice-dictionaries/list","href":"/api-reference/endpoint/list-voice-dictionaries"},{"title":"Get Voice Dictionary by ID","deprecated":null,"version":null,"sidebarTitle":"Get voice dictionary","openapi":"/api-reference/openapi.json get /v1/voice-agents/voice-dictionaries/{id}","href":"/api-reference/endpoint/get-voice-dictionary"},{"title":"Update Voice Dictionary","deprecated":null,"version":null,"sidebarTitle":"Update voice dictionary","openapi":"/api-reference/openapi.json patch /v1/voice-agents/voice-dictionaries/{id}","href":"/api-reference/endpoint/update-voice-dictionary"},{"title":"Toggle Voice Dictionary Activation","deprecated":null,"version":null,"sidebarTitle":"Toggle voice dictionary activation","openapi":"/api-reference/openapi.json post /v1/voice-agents/voice-dictionaries/toggle-activation","href":"/api-reference/endpoint/toggle-voice-dictionary-activation"}]},{"group":"Knowledge Base Routes","pages":[{"title":"Create new knowledge base items.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/voice-agents/knowledge-base","href":"/api-reference/create-new-knowledge-base-items"},{"title":"Update a knowledge base item by Id.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/voice-agents/knowledge-base/{id}","href":"/api-reference/update-a-knowledge-base-item-by-id"},{"title":"Delete Knowledge Base Item","deprecated":null,"version":null,"sidebarTitle":"Delete kb item","openapi":"/api-reference/openapi.json delete /v1/voice-agents/knowledge-base/{id}","href":"/api-reference/endpoint/delete-kb-item"},{"title":"Get Knowledge Base Item by ID","deprecated":null,"version":null,"sidebarTitle":"Get kb item","openapi":"/api-reference/openapi.json get /v1/voice-agents/knowledge-base/{id}","href":"/api-reference/endpoint/get-kb-item"},{"title":"Return a list of Knowledge Base Items.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/voice-agents/knowledge-base/list","href":"/api-reference/return-a-list-of-knowledge-base-items"},{"title":"Toggle activation of a knowledge base item for a voice agent.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/voice-agents/knowledge-base/toggle-activation","href":"/api-reference/toggle-activation-of-a-knowledge-base-item-for-a-voice-agent"},{"title":"Get Knowledge Base Size Info","deprecated":null,"version":null,"sidebarTitle":"Get kb size info","openapi":"/api-reference/openapi.json get /v1/voice-agents/knowledge-base/size-info","href":"/api-reference/endpoint/get-kb-size-info"},{"title":"Add URL to Knowledge Base Item","deprecated":null,"version":null,"sidebarTitle":"Add url to kb item","openapi":"/api-reference/openapi.json post /v1/voice-agents/knowledge-base/{id}/url","href":"/api-reference/endpoint/add-url-to-kb-item"},{"title":"Delete URL from Knowledge Base Item","deprecated":null,"version":null,"sidebarTitle":"Delete url from kb item","openapi":"/api-reference/openapi.json delete /v1/voice-agents/knowledge-base/{id}/url","href":"/api-reference/endpoint/delete-url-from-kb-item"}]},{"group":"Collections","pages":[{"title":"List Collections","deprecated":null,"version":null,"sidebarTitle":"List collections","openapi":"/api-reference/openapi.json get /v1/voice-agents/collections/list","href":"/api-reference/endpoint/list-collections"},{"title":"Create Collection","deprecated":null,"version":null,"sidebarTitle":"Create collection","openapi":"/api-reference/openapi.json post /v1/voice-agents/collections","href":"/api-reference/endpoint/create-collection"},{"title":"Update Collection","deprecated":null,"version":null,"sidebarTitle":"Update collection","openapi":"/api-reference/openapi.json patch /v1/voice-agents/collections/{id}","href":"/api-reference/endpoint/update-collection"},{"title":"Delete Collection","deprecated":null,"version":null,"sidebarTitle":"Delete collection","openapi":"/api-reference/openapi.json delete /v1/voice-agents/collections/{id}","href":"/api-reference/endpoint/delete-collection"},{"title":"Move Web Tool to Collection","deprecated":null,"version":null,"sidebarTitle":"Move tool to collection","openapi":"/api-reference/openapi.json post /v1/voice-agents/collections/move","href":"/api-reference/endpoint/move-tool-to-collection"}]},{"group":"Web Tools Routes","pages":[{"title":"Get a web tool by ID.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/voice-agents/web-tool/{id}","href":"/api-reference/get-a-web-tool-by-id"},{"title":"Delete a web tool by Id.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/voice-agents/web-tool/{id}","href":"/api-reference/delete-a-web-tool-by-id"},{"title":"Toggle activation of a web tool for a voice agent.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/voice-agents/web-tool/toggle-activation","href":"/api-reference/toggle-activation-of-a-web-tool-for-a-voice-agent"},{"title":"Test API Tool Configuration","deprecated":null,"version":null,"sidebarTitle":"Test api tool","openapi":"/api-reference/openapi.json post /v1/voice-agents/web-tool/test-api-tool","href":"/api-reference/endpoint/test-api-tool"},{"title":"Create Web Tool","deprecated":null,"version":null,"sidebarTitle":"Create web tool","openapi":"/api-reference/openapi.json post /v2/voice-agents/web-tool","href":"/api-reference/endpoint/v2/create-web-tool"},{"title":"List Web Tools","deprecated":null,"version":null,"sidebarTitle":"List web tools","openapi":"/api-reference/openapi.json get /v2/voice-agents/web-tool/list","href":"/api-reference/endpoint/v2/list-web-tools"},{"title":"Update Web Tool","deprecated":null,"version":null,"sidebarTitle":"Update web tool","openapi":"/api-reference/openapi.json patch /v2/voice-agents/web-tool/{id}","href":"/api-reference/endpoint/v2/update-web-tool"},{"title":"Check Newer Versions","deprecated":null,"version":null,"sidebarTitle":"Version check web tools","openapi":"/api-reference/openapi.json post /v2/voice-agents/web-tool/version-check","href":"/api-reference/endpoint/v2/version-check-web-tools"}]},{"group":"Secrets","pages":[{"title":"Create Secret","deprecated":null,"version":null,"sidebarTitle":"Create secret","openapi":"/api-reference/openapi.json post /v1/projects/secrets","href":"/api-reference/endpoint/create-secret"},{"title":"List Secrets","deprecated":null,"version":null,"sidebarTitle":"List secrets","openapi":"/api-reference/openapi.json get /v1/projects/secrets/list","href":"/api-reference/endpoint/list-secrets"},{"title":"Update Secret","deprecated":null,"version":null,"sidebarTitle":"Update secret","openapi":"/api-reference/openapi.json patch /v1/projects/secrets/{id}","href":"/api-reference/endpoint/update-secret"},{"title":"Delete Secret","deprecated":null,"version":null,"sidebarTitle":"Delete secret","openapi":"/api-reference/openapi.json delete /v1/projects/secrets/{id}","href":"/api-reference/endpoint/delete-secret"}]},{"group":"AI Docs Routes","pages":[{"title":"Create AI Content Route","deprecated":null,"version":null,"sidebarTitle":"Post ai content","openapi":"/api-reference/openapi.json post /v1/jobs/ai-content","href":"/api-reference/endpoint/post-ai-content"},{"title":"Get AI Content Route","deprecated":null,"version":null,"sidebarTitle":"Get ai content","openapi":"/api-reference/openapi.json get /v1/jobs/ai-content","href":"/api-reference/endpoint/get-ai-content"},{"title":"Create Customized AI Content Route","deprecated":null,"version":null,"sidebarTitle":"Custom ai content","openapi":"/api-reference/openapi.json post /v1/jobs/ai-content/custom","href":"/api-reference/endpoint/custom-ai-content"},{"title":"Get AI Content Cost Estimate Route","deprecated":null,"version":null,"sidebarTitle":"Ai content estimate","openapi":"/api-reference/openapi.json get /v1/jobs/ai-content/estimate","href":"/api-reference/endpoint/ai-content-estimate"},{"title":"Generate AI Content","deprecated":null,"version":null,"sidebarTitle":"Generate transcription ai content v2","openapi":"/api-reference/openapi.json post /v2/jobs/generate-transcription-ai-content","href":"/api-reference/endpoint/generate-transcription-ai-content-v2"}]},{"group":"Jobs Routes","pages":[{"title":"Get Jobs List","deprecated":null,"version":null,"sidebarTitle":"Get jobs list","openapi":"/api-reference/openapi.json post /v1/jobs/all","href":"/api-reference/endpoint/get-jobs-list"},{"title":"Get Job Details By Id","deprecated":null,"version":null,"sidebarTitle":"Get job by id","openapi":"/api-reference/openapi.json get /v1/jobs","href":"/api-reference/endpoint/get-job-by-id"},{"title":"List Jobs","deprecated":null,"version":null,"sidebarTitle":"List jobs v2","openapi":"/api-reference/openapi.json get /v2/jobs","href":"/api-reference/endpoint/list-jobs-v2"},{"title":"Get Single Job","deprecated":null,"version":null,"sidebarTitle":"Get job v2","openapi":"/api-reference/openapi.json get /v2/jobs/view/{id}","href":"/api-reference/endpoint/get-job-v2"},{"title":"Update Job Title","deprecated":null,"version":null,"sidebarTitle":"Update job title v2","openapi":"/api-reference/openapi.json patch /v2/jobs/{id}","href":"/api-reference/endpoint/update-job-title-v2"},{"title":"Delete Job","deprecated":null,"version":null,"sidebarTitle":"Delete job v2","openapi":"/api-reference/openapi.json delete /v2/jobs/{id}","href":"/api-reference/endpoint/delete-job-v2"}]},{"group":"Project Routes","pages":[{"title":"Get Project By API Key","deprecated":null,"version":null,"sidebarTitle":"Get project by api key","openapi":"/api-reference/openapi.json get /v1/projects/by-api-key","href":"/api-reference/endpoint/get-project-by-api-key"}]},{"group":"API Statistics Routes","pages":[{"title":"Get Usage Statistics Numbers","deprecated":null,"version":null,"sidebarTitle":"Statistics numbers","openapi":"/api-reference/openapi.json get /v1/projects/statistics/numbers","href":"/api-reference/endpoint/statistics-numbers"},{"title":"Get Usage Statistics Chart","deprecated":null,"version":null,"sidebarTitle":"Statistics chart","openapi":"/api-reference/openapi.json get /v1/projects/statistics/chart","href":"/api-reference/endpoint/statistics-chart"}]},{"group":"Agents Analytics and Performance Metrics","pages":[{"title":"Get Overview Analytics","deprecated":null,"version":null,"sidebarTitle":"Get overview analytics","openapi":"/api-reference/openapi.json get /v1/agent-analytics/overview","href":"/api-reference/endpoint/get-overview-analytics"},{"title":"Get Performance Analytics","deprecated":null,"version":null,"sidebarTitle":"Get performance analytics","openapi":"/api-reference/openapi.json get /v1/agent-analytics/performance","href":"/api-reference/endpoint/get-performance-analytics"},{"title":"Get Satisfaction and Outcome Analytics","deprecated":null,"version":null,"sidebarTitle":"Get satisfaction analytics","openapi":"/api-reference/openapi.json get /v1/agent-analytics/satisfaction","href":"/api-reference/endpoint/get-satisfaction-analytics"}]},{"group":"Exporting Conversations","pages":[{"title":"Export Conversations","deprecated":null,"version":null,"sidebarTitle":"Export conversations","openapi":"/api-reference/openapi.json get /v1/agent-analytics/conversations/export","href":"/api-reference/endpoint/export-conversations"}]},{"group":"Exporting Conversations","pages":[{"title":"Get Call Log by ID","deprecated":null,"version":null,"sidebarTitle":"Get call log","openapi":"/api-reference/openapi.json get /v1/agent-analytics/logs/{id}","href":"/api-reference/endpoint/get-call-log"},{"title":"List Call Logs","deprecated":null,"version":null,"sidebarTitle":"List call logs","openapi":"/api-reference/openapi.json get /v1/agent-analytics/logs","href":"/api-reference/endpoint/list-call-logs"}]},{"group":"Deprecated APIs","pages":[{"group":"Voice Agents","expanded":true,"pages":[{"title":"Create Voice Agent Route","deprecated":true,"version":null,"sidebarTitle":"Create voice agent","openapi":"/api-reference/openapi.json post /v1/voice-agents","href":"/api-reference/endpoint/create-voice-agent"},{"title":"Update Voice Agent Route","deprecated":true,"version":null,"sidebarTitle":"Update voice agent","openapi":"/api-reference/openapi.json patch /v1/voice-agents/{voiceAgentId}","href":"/api-reference/endpoint/update-voice-agent"},{"title":"Get Voice Agents List Route","deprecated":true,"version":null,"sidebarTitle":"Get all voice agents","openapi":"/api-reference/openapi.json get /v1/voice-agents","href":"/api-reference/endpoint/get-all-voice-agents"},{"title":"Get A Voice Agent By Id Route","deprecated":true,"version":null,"sidebarTitle":"Get voice agent by id","openapi":"/api-reference/openapi.json get /v1/voice-agents/{voiceAgentId}","href":"/api-reference/endpoint/get-voice-agent-by-id"}]},{"group":"Voice Agents Conversations Routes","expanded":true,"pages":[{"title":"Start a Call for a Conversation Route","deprecated":true,"version":null,"sidebarTitle":"Start a call","openapi":"/api-reference/openapi.json post /v1/voice-agents/call","href":"/api-reference/endpoint/start-a-call"}]},{"group":"Web Tools Routes","expanded":true,"pages":[{"title":"Create a new web tool.","deprecated":true,"version":null,"openapi":"/api-reference/openapi.json post /v1/voice-agents/web-tool","href":"/api-reference/create-a-new-web-tool"},{"title":"Update a web tool by Id.","deprecated":true,"version":null,"openapi":"/api-reference/openapi.json patch /v1/voice-agents/web-tool/{id}","href":"/api-reference/update-a-web-tool-by-id"},{"title":"Return a list of Web Tools.","deprecated":true,"version":null,"openapi":"/api-reference/openapi.json get /v1/voice-agents/web-tool/list","href":"/api-reference/return-a-list-of-web-tools"},{"title":"Check Web Tool Version Updates","deprecated":true,"version":null,"sidebarTitle":"Version check","openapi":"/api-reference/openapi.json post /v1/voice-agents/web-tool/version-check","href":"/api-reference/endpoint/version-check"}]}]}]},{"tab":"WebSocket API","icon":"rocket-vertical","pages":[{"title":"WebSocket API","href":"/websocket/websocket-api"}]},{"tab":"Changelog","icon":"rectangle-history-circle-user","pages":[{"title":"Changelog","href":"/changelog/main"}]}]},"basePath":"","title":"Create Voice Agent - Hamsa API","buildId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","deploymentId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-Myd8dsju.js","utils-C2HkQgW0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-8rSppmTv.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B6MjiCFm.js","snippetPresets-DwrSAONL.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-1-a5UQKQ.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C541m7wZ.js","shallow-CWELCZ77.js","getApiPlaygroundDisplay-CTo5Zn03.js","CodeSnippet-D--dzvnl.js","CodeSnippets-DM3cXEDh.js","Page-CxAy5y67.js","getPastedJson-C-VECgcL.js","icon-BPq2-Mg3.js","MethodPill-D9J5cUHd.js","DuplicateIcon-BqHaxUnD.js","createIcon-CIbcZHp9.js","DynamicMarkdown-BKiHAm_d.js","SectionHeading-DstQXt3H.js","axios-vUo_bRtp.js","Markdown-CpxgzsKA.js","clsx-C5EfhVm0.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CJ9Oly2E.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Mk6P3qvh.js"]}