> ## Documentation Index
> Fetch the complete documentation index at: https://docs.threetone.in/llms.txt
> Use this file to discover all available pages before exploring further.

# Patches An Agent Settings

> Patches an Agent settings



## OpenAPI

````yaml /api-reference/openapi.json patch /v1/convai/agents/{agent_id}
openapi: 3.1.0
info:
  title: Threetone API Documentation
  description: >-
    This is the documentation for the Threetone API. You can use this API to use
    our service programmatically with API keys sent in the x-api-key header. You
    can create and manage API keys in the dashboard at
    https://threetone.in/app/developers/api-keys.
  version: '1.0'
servers:
  - url: https://api.threetone.in
    description: Production
security: []
paths:
  /v1/convai/agents/{agent_id}:
    patch:
      tags:
        - Agents Platform
      summary: Patches An Agent Settings
      description: Patches an Agent settings
      operationId: patch_agent_settings_route
      parameters:
        - name: agent_id
          in: path
          required: true
          schema:
            type: string
            description: The id of an agent. This is returned on agent creation.
            examples:
              - agent_3701k3ttaq12ewp8b7qv5rfyszkz
            embed: true
            title: Agent Id
          description: The id of an agent. This is returned on agent creation.
        - name: branch_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: The ID of the branch to use
            examples:
              - agtbrch_0901k4aafjxxfxt93gd841r7tv5t
            title: Branch Id
          description: The ID of the branch to use
        - name: x-api-key
          in: header
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Your API key for programmatic access. Send it in the x-api-key
              header; you can create and manage keys from the Developers page.
            title: X-Api-Key
          description: >-
            Your API key for programmatic access. Send it in the x-api-key
            header; you can create and manage keys from the Developers page.
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/Body_Patches_an_Agent_settings_v1_convai_agents__agent_id__patch
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAgentResponseModel'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    Body_Patches_an_Agent_settings_v1_convai_agents__agent_id__patch:
      properties:
        conversation_config:
          anyOf:
            - $ref: '#/components/schemas/ConversationalConfigAuthoringPatch'
            - type: 'null'
          description: Conversation configuration for an agent
        platform_settings:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Platform Settings
          description: >-
            Platform settings for the agent are all settings that aren't related
            to the conversation orchestration and content.
        workflow:
          $ref: '#/components/schemas/AgentWorkflowRequestModel'
          description: >-
            Workflow for the agent. This is used to define the flow of the
            conversation and how the agent interacts with tools.
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
          description: A name to make the agent easier to find
          examples:
            - My agent
          optional: true
        tags:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Tags
          description: Tags to help classify and filter the agent
          examples:
            - - Customer Support
              - Technical Help
              - Three
          optional: true
        version_description:
          anyOf:
            - type: string
            - type: 'null'
          title: Version Description
          description: >-
            Description for this version when publishing changes (only
            applicable for versioned agents)
        procedures:
          anyOf:
            - additionalProperties:
                $ref: '#/components/schemas/ProcedureVersionRef'
              type: object
            - type: 'null'
          title: Procedures
          description: >-
            Procedure versions to publish, keyed by procedure_id. When provided,
            this map replaces the procedures from the current draft or branch
            tip. When omitted or null, unpublished procedure edits are used if
            present; otherwise, the branch tip's procedures are retained. Pass
            an empty object to remove all procedures.
      type: object
      title: Body_Patches_an_Agent_settings_v1_convai_agents__agent_id__patch
    GetAgentResponseModel:
      properties:
        agent_id:
          type: string
          title: Agent Id
          description: The ID of the agent
        name:
          type: string
          title: Name
          description: The name of the agent
        conversation_config:
          $ref: '#/components/schemas/ConversationalConfigAPIModel-Output'
          description: The conversation configuration of the agent
        metadata:
          $ref: '#/components/schemas/AgentMetadataResponseModel'
          description: The metadata of the agent
        platform_settings:
          $ref: '#/components/schemas/AgentPlatformSettingsResponseModel'
          description: The platform settings of the agent
        phone_numbers:
          items:
            oneOf:
              - $ref: '#/components/schemas/GetPhoneNumberManagedPSTNResponseModel'
              - $ref: '#/components/schemas/GetPhoneNumberSIPTrunkResponseModel'
            discriminator:
              propertyName: source_type
              mapping:
                managed_pstn:
                  $ref: '#/components/schemas/GetPhoneNumberManagedPSTNResponseModel'
                sip_trunk:
                  $ref: '#/components/schemas/GetPhoneNumberSIPTrunkResponseModel'
          type: array
          title: Phone Numbers
          description: The phone numbers of the agent
        whatsapp_accounts:
          items:
            $ref: '#/components/schemas/GetWhatsAppAccountResponse'
          type: array
          title: Whatsapp Accounts
          description: WhatsApp accounts assigned to the agent
        workflow:
          $ref: '#/components/schemas/AgentWorkflowResponseModel'
          description: The workflow of the agent
        access_info:
          anyOf:
            - $ref: '#/components/schemas/ResourceAccessInfo'
            - type: 'null'
          description: The access information of the agent for the user
        tags:
          items:
            type: string
          type: array
          title: Tags
          description: Agent tags used to categorize the agent
        version_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Version Id
          description: The ID of the version the agent is on
        branch_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Branch Id
          description: The ID of the branch the agent is on
        main_branch_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Main Branch Id
          description: The ID of the main branch for this agent
      type: object
      required:
        - agent_id
        - name
        - conversation_config
        - metadata
      title: GetAgentResponseModel
      example:
        agent_id: agent_4m8q7z2pxn5r9vkt6d3h1c0b
        name: My Agent
        workflow:
          edges:
            entry_to_tool_a:
              forward_condition:
                condition: Tool A condition
                type: llm
              source: entry_node
              target: tool_node_a
            start_to_entry:
              forward_condition:
                type: unconditional
              source: start_node
              target: entry_node
            tool_a_to_failure:
              forward_condition:
                successful: false
                type: result
              source: tool_node_a
              target: failure_node
            tool_a_to_tool_b:
              forward_condition:
                successful: true
                type: result
              source: tool_node_a
              target: tool_node_b
            tool_b_to_agent_transfer:
              forward_condition:
                type: unconditional
              source: tool_node_b
              target: success_transfer
            tool_b_to_conversation:
              forward_condition:
                condition: Conversation condition
                type: llm
              source: tool_node_b
              target: success_conversation
            tool_b_to_end:
              forward_condition:
                condition: End condition
                type: llm
              source: tool_node_b
              target: success_end
            tool_b_to_phone:
              forward_condition:
                expression:
                  children:
                    - name: force_phone_transfer
                      type: dynamic_variable
                    - prompt: Phone condition
                      type: llm
                      value_schema:
                        description: Phone condition
                        type: boolean
                    - left:
                        name: mode
                        type: dynamic_variable
                      right:
                        type: string_literal
                        value: dev
                      type: eq_operator
                  type: or_operator
                type: expression
              source: tool_node_b
              target: success_phone
          nodes:
            entry_node:
              additional_knowledge_base: []
              additional_prompt: ''
              additional_tool_ids: []
              auto_advance_after_first_response: false
              conversation_config: {}
              edge_order:
                - entry_to_tool_a
              entry_behavior: auto
              label: Entry
              position:
                x: 0
                'y': 0
              type: override_agent
            failure_node:
              additional_knowledge_base: []
              additional_prompt: ''
              additional_tool_ids: []
              auto_advance_after_first_response: false
              conversation_config: {}
              edge_order: []
              entry_behavior: auto
              label: Failure
              position:
                x: 0
                'y': 0
              type: override_agent
            start_node:
              edge_order:
                - start_to_entry
              position:
                x: 0
                'y': 0
              type: start
            success_conversation:
              additional_knowledge_base: []
              additional_prompt: ''
              additional_tool_ids: []
              auto_advance_after_first_response: false
              conversation_config: {}
              edge_order: []
              entry_behavior: auto
              label: Success A
              position:
                x: 0
                'y': 0
              type: override_agent
            success_end:
              edge_order: []
              position:
                x: 0
                'y': 0
              type: end
            success_phone:
              custom_sip_headers: []
              edge_order: []
              position:
                x: 0
                'y': 0
              require_acceptance: false
              transfer_destination:
                phone_number: '+1234567890'
                type: phone
              transfer_type: conference
              type: phone_number
            success_transfer:
              agent_id: success_transfer_agent
              delay_ms: 0
              edge_order: []
              enable_transferred_agent_first_message: false
              position:
                x: 0
                'y': 0
              type: standalone_agent
            tool_node_a:
              edge_order:
                - tool_a_to_failure
                - tool_a_to_tool_b
              position:
                x: 0
                'y': 0
              tools:
                - tool_id: tool_a
                - tool_id: tool_b
              type: tool
            tool_node_b:
              edge_order:
                - tool_b_to_conversation
                - tool_b_to_end
                - tool_b_to_phone
                - tool_b_to_agent_transfer
              position:
                x: 0
                'y': 0
              tools:
                - tool_id: tool_a
              type: tool
          prevent_subagent_loops: false
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ConversationalConfigAuthoringPatch:
      properties:
        turn:
          anyOf:
            - $ref: '#/components/schemas/TurnConfigWorkflowOverride'
            - type: 'null'
          description: Configuration for turn detection
        tts:
          anyOf:
            - $ref: '#/components/schemas/TTSConversationalConfigPatch'
            - type: 'null'
          description: Sparse text-to-speech authoring changes.
        conversation:
          anyOf:
            - $ref: '#/components/schemas/ConversationConfigWorkflowOverride'
            - type: 'null'
          description: Configuration for conversational events
        language_presets:
          anyOf:
            - additionalProperties:
                $ref: '#/components/schemas/LanguagePreset'
              type: object
            - type: 'null'
          title: Language Presets
          description: Language presets for conversations
        vad:
          anyOf:
            - $ref: '#/components/schemas/VADConfigWorkflowOverride'
            - type: 'null'
          description: Configuration for voice activity detection
        agent:
          anyOf:
            - $ref: '#/components/schemas/AgentConfigAPIModelWorkflowOverride-Input'
            - type: 'null'
          description: Agent specific configuration
        asr:
          anyOf:
            - $ref: '#/components/schemas/ASRConversationalConfigPatch'
            - type: 'null'
          description: Sparse speech-recognition authoring changes.
      additionalProperties: false
      type: object
      title: ConversationalConfigAuthoringPatch
      description: Strict sparse patch for branch and agent authoring endpoints.
      example:
        agent:
          disable_first_message_interruptions: false
          dynamic_variables:
            dynamic_variable_placeholders:
              user_name: John Doe
          first_message: Hello, how can I help you today?
          language: en
          prompt:
            knowledge_base: []
            llm: gemini-2.0-flash-001
            max_tokens: -1
            prompt: >-
              You are a helpful assistant that can answer questions about the
              topic of the conversation.
            temperature: 0
            tool_ids: []
        conversation:
          client_events:
            - audio
            - interruption
          max_duration_seconds: 600
        tts:
          performance: latency
          voice_id: ME9RtCnWp5vX2LhJdF3k
        turn:
          interruption_ignore_term_languages: []
          interruption_ignore_terms: []
          merge_with_default_ignore_terms: false
          mode: turn
          retranscribe_on_turn_timeout: false
          silence_end_call_timeout: -1
          soft_timeout_config:
            message: Hhmmmm...yeah.
            timeout_seconds: -1
            use_llm_generated_message: false
          speculative_turn: false
          spelling_patience: auto
          transcribe_on_disabled_interruptions: false
          turn_eagerness: normal
          turn_model: turn_v3
          turn_timeout: 7
    AgentWorkflowRequestModel:
      properties:
        edges:
          additionalProperties:
            $ref: '#/components/schemas/WorkflowEdgeModel-Input'
          type: object
          title: Edges
        nodes:
          additionalProperties:
            oneOf:
              - $ref: '#/components/schemas/WorkflowStartNodeModel-Input'
                description: Entry point of the workflow.
              - $ref: '#/components/schemas/WorkflowEndNodeModel-Input'
                description: Terminates the conversation upon reaching this node.
              - $ref: '#/components/schemas/WorkflowPhoneNumberNodeModel-Input'
                description: Transfers the conversation to a phone number.
              - $ref: '#/components/schemas/WorkflowOverrideAgentNodeModel-Input'
                description: >-
                  A subagent conducting the conversation until one of the exit
                  conditions is met. Each subagent can override the base
                  settings, changing the prompt, knowledge base, and more.
              - $ref: '#/components/schemas/WorkflowStandaloneAgentNodeModel-Input'
                description: Transfer the conversation to a standalone agent.
              - $ref: '#/components/schemas/WorkflowToolNodeModel-Input'
                description: Executes one or more tools in parallel.
            discriminator:
              propertyName: type
              mapping:
                end:
                  $ref: '#/components/schemas/WorkflowEndNodeModel-Input'
                override_agent:
                  $ref: '#/components/schemas/WorkflowOverrideAgentNodeModel-Input'
                phone_number:
                  $ref: '#/components/schemas/WorkflowPhoneNumberNodeModel-Input'
                standalone_agent:
                  $ref: '#/components/schemas/WorkflowStandaloneAgentNodeModel-Input'
                start:
                  $ref: '#/components/schemas/WorkflowStartNodeModel-Input'
                tool:
                  $ref: '#/components/schemas/WorkflowToolNodeModel-Input'
          type: object
          title: Nodes
        prevent_subagent_loops:
          type: boolean
          title: Prevent Subagent Loops
          description: Whether to prevent loops in the workflow execution.
          default: false
      additionalProperties: false
      type: object
      title: AgentWorkflowRequestModel
      example:
        edges:
          start_to_support:
            forward_condition:
              type: unconditional
            source: start_node
            target: support
          support_to_end:
            forward_condition:
              condition: The request is resolved
              type: llm
            source: support
            target: end
        nodes:
          end:
            type: end
          start_node:
            edge_order:
              - start_to_support
            type: start
          support:
            edge_order:
              - support_to_end
            label: Support
            type: override_agent
    ProcedureVersionRef:
      properties:
        procedure_id:
          type: string
          title: Procedure Id
          description: Procedure ID
        version_id:
          type: string
          title: Version Id
          description: Version ID of the procedure version.
      additionalProperties: false
      type: object
      required:
        - procedure_id
        - version_id
      title: ProcedureVersionRef
    ConversationalConfigAPIModel-Output:
      properties:
        schema_version:
          anyOf:
            - type: integer
              const: 2
            - type: 'null'
          title: Schema Version
          description: >-
            Version 2 identifies a strictly authored conversation document; null
            identifies legacy data.
        asr:
          anyOf:
            - $ref: '#/components/schemas/ASRConversationalConfig'
            - type: 'null'
          description: >-
            Speech-recognition selection. It may be absent only for legacy
            agents whose runtime selection has not yet been migrated to the
            catalog.
        turn:
          $ref: '#/components/schemas/TurnConfig'
          description: Configuration for turn detection
        tts:
          $ref: '#/components/schemas/TTSConversationalConfig-Output'
          description: Configuration for conversational text to speech
        conversation:
          $ref: '#/components/schemas/ConversationConfig'
          description: Configuration for conversational events
        language_presets:
          additionalProperties:
            $ref: '#/components/schemas/LanguagePreset'
          type: object
          title: Language Presets
          description: Language presets for conversations
        vad:
          $ref: '#/components/schemas/VADConfig'
          description: Configuration for voice activity detection
        agent:
          $ref: '#/components/schemas/AgentConfigAPIModel-Output'
          description: Agent specific configuration
      type: object
      title: ConversationalConfigAPIModel
    AgentMetadataResponseModel:
      properties:
        created_at_unix_secs:
          type: integer
          title: Created At Unix Secs
          description: The creation time of the agent in unix seconds
        updated_at_unix_secs:
          type: integer
          title: Updated At Unix Secs
          description: The last update time of the agent in unix seconds
      type: object
      required:
        - created_at_unix_secs
        - updated_at_unix_secs
      title: AgentMetadataResponseModel
    AgentPlatformSettingsResponseModel:
      properties:
        evaluation:
          $ref: '#/components/schemas/EvaluationSettings'
          description: Settings for evaluation
        widget:
          $ref: '#/components/schemas/WidgetConfig'
          description: Configuration for the widget
        data_collection:
          additionalProperties:
            $ref: '#/components/schemas/AnalysisProperty'
          type: object
          title: Data Collection
          description: Data collection settings
        data_collection_scopes:
          additionalProperties:
            $ref: '#/components/schemas/AnalysisScope'
          type: object
          title: Data Collection Scopes
          description: >-
            Scope per data collection item ID. Missing keys default to
            conversation scope.
        analysis_items:
          anyOf:
            - $ref: '#/components/schemas/AgentAnalysisItems'
            - type: 'null'
          description: >-
            Evaluation + data-collection items attached by reference. None means
            the agent has not been migrated onto analysis items yet (distinct
            from an empty, migrated set); reads fall back to the legacy
            evaluation/data_collection fields in that case.
        overrides:
          $ref: '#/components/schemas/ConversationInitiationClientDataConfig'
          description: Additional overrides for the agent during conversation initiation
        workspace_overrides:
          $ref: '#/components/schemas/AgentWorkspaceOverrides'
          description: Workspace overrides for the agent
        testing:
          $ref: '#/components/schemas/AgentTestingSettings'
          description: Testing configuration for the agent
        archived:
          type: boolean
          title: Archived
          description: Whether the agent is archived
          default: false
        guardrails:
          $ref: '#/components/schemas/GuardrailsV1'
          title: Guardrails
          description: Guardrails configuration for the agent
          discriminator:
            propertyName: version
            mapping:
              '1': '#/components/schemas/GuardrailsV1'
        summary_language:
          anyOf:
            - type: string
            - type: 'null'
          title: Summary Language
          description: >-
            Language for all conversation analysis outputs (summaries, titles,
            evaluation rationales, data collection rationales). If not set, the
            language will be inferred from the conversation. Must be one of the
            supported conversation languages.
        auto_translate_transcript_to_app_language:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Auto Translate Transcript To App Language
          description: >-
            When enabled, a conversation transcript is automatically translated
            to the viewer's application language when they open the transcript
            page. If not set or false, transcripts are shown in their original
            language unless the viewer manually selects a translation.
        auth:
          $ref: '#/components/schemas/AuthSettings'
          description: Settings for authentication
        call_limits:
          $ref: '#/components/schemas/AgentCallLimits'
          description: Call limits for the agent
        privacy:
          $ref: '#/components/schemas/PrivacyConfig'
          description: Privacy settings for the agent
        trust_context:
          $ref: '#/components/schemas/AgentTrustContext'
          description: The trust context in which the agent operates.
          default: unknown
        analysis_llm:
          $ref: '#/components/schemas/LLM'
          description: >-
            Default LLM model for post-call analysis (evaluation and data
            collection)
          default: gemini-2.5-flash
        topic_discovery:
          $ref: '#/components/schemas/TopicDiscoverySettings'
          description: Per-agent topic discovery configuration
        sentiment_analysis:
          $ref: '#/components/schemas/SentimentAnalysisSettings'
          description: Per-agent post-call sentiment analysis configuration
        alerting:
          anyOf:
            - $ref: '#/components/schemas/AlertingSettingsResponse'
            - type: 'null'
          description: Agent-level alerting configuration overriding workspace settings.
        safety:
          $ref: '#/components/schemas/SafetyResponseModel'
      type: object
      title: AgentPlatformSettingsResponseModel
    GetPhoneNumberManagedPSTNResponseModel:
      properties:
        phone_number:
          type: string
          title: Phone Number
          description: Phone number
        label:
          type: string
          title: Label
          description: Label for the phone number
        phone_number_id:
          type: string
          title: Phone Number Id
          description: The ID of the phone number
        assigned_agent:
          anyOf:
            - $ref: '#/components/schemas/PhoneNumberAgentInfo'
            - type: 'null'
          description: The agent that is assigned to the phone number
        source_type:
          type: string
          const: managed_pstn
          title: Source Type
          description: >-
            Phone number source type. Managed PSTN numbers are fulfilled
            internally by Threetone.
          default: managed_pstn
        fulfillment_provider:
          $ref: '#/components/schemas/PhoneNumberFulfillmentProvider'
          description: Backend fulfillment provider for this managed PSTN number
      type: object
      required:
        - phone_number
        - label
        - phone_number_id
        - fulfillment_provider
      title: GetPhoneNumberManagedPSTNResponseModel
      example:
        fulfillment_provider: twilio
        label: Customer Support
        phone_number: '+1234567890'
        phone_number_id: phone_123
        source_type: managed_pstn
    GetPhoneNumberSIPTrunkResponseModel:
      properties:
        phone_number:
          type: string
          title: Phone Number
          description: Phone number
        label:
          type: string
          title: Label
          description: Label for the phone number
        phone_number_id:
          type: string
          title: Phone Number Id
          description: The ID of the phone number
        assigned_agent:
          anyOf:
            - $ref: '#/components/schemas/PhoneNumberAgentInfo'
            - type: 'null'
          description: The agent that is assigned to the phone number
        provider:
          type: string
          const: sip_trunk
          title: Provider
          description: Phone provider
          default: sip_trunk
        source_type:
          type: string
          const: sip_trunk
          title: Source Type
          description: Phone number source type
          default: sip_trunk
        outbound_trunk:
          anyOf:
            - $ref: >-
                #/components/schemas/GetPhoneNumberOutboundSIPTrunkConfigResponseModel
            - type: 'null'
          description: Configuration of the Outbound SIP trunk - if configured.
        inbound_trunk:
          anyOf:
            - $ref: >-
                #/components/schemas/GetPhoneNumberInboundSIPTrunkConfigResponseModel
            - type: 'null'
          description: Configuration of the Inbound SIP trunk - if configured.
        livekit_stack:
          $ref: '#/components/schemas/LivekitStackType'
          description: Type of Livekit stack used for this number.
        store_sip_messages:
          type: boolean
          title: Store Sip Messages
          description: Whether to store SIP messages for this phone number.
          default: true
      type: object
      required:
        - phone_number
        - label
        - phone_number_id
        - livekit_stack
      title: GetPhoneNumberSIPTrunkResponseModel
      description: >-
        SIP-trunk-backed phone number row. Inbound/outbound capability is
        implied by

        `inbound_trunk` / `outbound_trunk` (and related flags), not by separate
        booleans.
      example:
        label: Sales Team
        livekit_stack: standard
        phone_number: '+1987654321'
        phone_number_id: phone_456
        source_type: sip_trunk
    GetWhatsAppAccountResponse:
      properties:
        business_account_id:
          type: string
          title: Business Account Id
        phone_number_id:
          type: string
          title: Phone Number Id
        business_account_name:
          type: string
          title: Business Account Name
        phone_number_name:
          type: string
          title: Phone Number Name
        phone_number:
          type: string
          title: Phone Number
        account_type:
          type: string
          const: cloud_api
          title: Account Type
          description: Which Embedded Signup flow produced this account.
          default: cloud_api
        assigned_agent_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Assigned Agent Id
        enable_messaging:
          type: boolean
          title: Enable Messaging
          default: true
        enable_audio_message_response:
          type: boolean
          title: Enable Audio Message Response
          default: true
        enable_typing_indicator:
          type: boolean
          title: Enable Typing Indicator
          default: true
        assigned_agent_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Assigned Agent Name
        is_token_expired:
          type: boolean
          title: Is Token Expired
          default: false
        registration_status:
          $ref: '#/components/schemas/WhatsAppRegistrationStatus'
          title: Registration Status
      type: object
      required:
        - business_account_id
        - phone_number_id
        - business_account_name
        - phone_number_name
        - phone_number
        - assigned_agent_name
        - registration_status
      title: GetWhatsAppAccountResponse
    AgentWorkflowResponseModel:
      properties:
        edges:
          additionalProperties:
            $ref: '#/components/schemas/WorkflowEdgeModel-Output'
          type: object
          title: Edges
        nodes:
          additionalProperties:
            oneOf:
              - $ref: '#/components/schemas/WorkflowStartNodeModel-Output'
                description: Entry point of the workflow.
              - $ref: '#/components/schemas/WorkflowEndNodeModel-Output'
                description: Terminates the conversation upon reaching this node.
              - $ref: '#/components/schemas/WorkflowPhoneNumberNodeModel-Output'
                description: Transfers the conversation to a phone number.
              - $ref: '#/components/schemas/WorkflowOverrideAgentNodeModel-Output'
                description: >-
                  A subagent conducting the conversation until one of the exit
                  conditions is met. Each subagent can override the base
                  settings, changing the prompt, knowledge base, and more.
              - $ref: '#/components/schemas/WorkflowStandaloneAgentNodeModel-Output'
                description: Transfer the conversation to a standalone agent.
              - $ref: '#/components/schemas/WorkflowToolNodeModel-Output'
                description: Executes one or more tools in parallel.
            discriminator:
              propertyName: type
              mapping:
                end:
                  $ref: '#/components/schemas/WorkflowEndNodeModel-Output'
                override_agent:
                  $ref: '#/components/schemas/WorkflowOverrideAgentNodeModel-Output'
                phone_number:
                  $ref: '#/components/schemas/WorkflowPhoneNumberNodeModel-Output'
                standalone_agent:
                  $ref: '#/components/schemas/WorkflowStandaloneAgentNodeModel-Output'
                start:
                  $ref: '#/components/schemas/WorkflowStartNodeModel-Output'
                tool:
                  $ref: '#/components/schemas/WorkflowToolNodeModel-Output'
          type: object
          title: Nodes
        prevent_subagent_loops:
          type: boolean
          title: Prevent Subagent Loops
          description: Whether to prevent loops in the workflow execution.
          default: false
      type: object
      required:
        - edges
        - nodes
        - prevent_subagent_loops
      title: AgentWorkflowResponseModel
      example:
        edges:
          start_to_support:
            forward_condition:
              type: unconditional
            source: start_node
            target: support
          support_to_end:
            forward_condition:
              condition: The request is resolved
              type: llm
            source: support
            target: end
        nodes:
          end:
            edge_order: []
            position:
              x: 0
              'y': 0
            type: end
          start_node:
            edge_order:
              - start_to_support
            position:
              x: 0
              'y': 0
            type: start
          support:
            additional_knowledge_base: []
            additional_prompt: ''
            additional_tool_ids: []
            conversation_config: {}
            edge_order:
              - support_to_end
            entry_behavior: auto
            label: Support
            position:
              x: 0
              'y': 0
            type: override_agent
        prevent_subagent_loops: false
    ResourceAccessInfo:
      properties:
        is_creator:
          type: boolean
          title: Is Creator
          description: Whether the user making the request is the creator of the agent
        creator_name:
          type: string
          title: Creator Name
          description: Name of the agent's creator
        creator_email:
          type: string
          title: Creator Email
          description: Email of the agent's creator
        role:
          type: string
          enum:
            - admin
            - editor
            - commenter
            - viewer
          title: Role
          description: The role of the user making the request
        anonymous_access_level_override:
          anyOf:
            - type: string
              enum:
                - admin
                - editor
                - commenter
                - viewer
            - type: 'null'
          title: Anonymous Access Level Override
          description: >-
            The access level for anonymous users. If None, the resource is not
            shared publicly.
        access_source:
          anyOf:
            - type: string
              enum:
                - creator
                - explicit
                - workspace_admin
                - workspace_default
            - type: 'null'
          title: Access Source
          description: >-
            Why the requesting user has access to this resource. 'creator' =
            caller is the owner. 'explicit' = caller (or one of their workspace
            groups) is listed in role_to_group_ids beyond the workspace-wide
            everyone group. 'workspace_default' = the workspace-wide everyone
            group is listed in role_to_group_ids (every non-anon workspace
            member, including admins, sees this resource). 'workspace_admin' =
            caller is a workspace admin and the admin seat is the *only* path to
            access; reserved for docs nobody else can see. Lets the UI disclose
            why an admin-bypass viewer sees a doc that wasn't explicitly shared
            with them.
      type: object
      required:
        - is_creator
        - creator_name
        - creator_email
        - role
      title: ResourceAccessInfo
      example:
        access_source: creator
        creator_email: john.doe@example.com
        creator_name: John Doe
        is_creator: true
        role: admin
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    TurnConfigWorkflowOverride:
      properties:
        turn_timeout:
          anyOf:
            - type: number
            - type: 'null'
          title: Turn Timeout
          description: Maximum wait time for the user's reply before re-engaging the user
        initial_wait_time:
          anyOf:
            - type: number
            - type: 'null'
          title: Initial Wait Time
          description: >-
            How long the agent will wait for the user to start the conversation
            if the first message is empty. If not set, uses the regular
            turn_timeout.
        silence_end_call_timeout:
          anyOf:
            - type: number
            - type: 'null'
          title: Silence End Call Timeout
          description: >-
            Maximum wait time since the user last spoke before terminating the
            call
        mode:
          anyOf:
            - $ref: '#/components/schemas/TurnMode'
            - type: 'null'
          description: The mode of turn detection
          x-fern-ignore: true
        turn_eagerness:
          anyOf:
            - $ref: '#/components/schemas/TurnEagerness'
            - type: 'null'
          description: >-
            Controls how eager the agent is to respond. Low = less eager (waits
            longer), Standard = default eagerness, High = more eager (responds
            sooner)
        spelling_patience:
          anyOf:
            - $ref: '#/components/schemas/SpellingPatience'
            - type: 'null'
          description: >-
            Controls if the agent should be more patient when user is spelling
            numbers and named entities. Auto = model based, Off = never wait
            extra
        speculative_turn:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Speculative Turn
          description: >-
            When enabled, starts generating LLM responses during silence before
            full turn confidence is reached, reducing perceived latency. May
            increase LLM costs.
        retranscribe_on_turn_timeout:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Retranscribe On Turn Timeout
          description: >-
            When enabled, if VAD detects no speech, attempts to re-transcribe
            accumulated audio at turn timeout. Disables silence discount billing
            for affected turns.
        turn_model:
          anyOf:
            - $ref: '#/components/schemas/TurnModel'
            - type: 'null'
          description: Version of the turn detection model to use.
        interruption_ignore_terms:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Interruption Ignore Terms
          description: >-
            List of terms that should not trigger an interruption when spoken by
            the user (e.g. 'gotcha', 'understood'). Uses case-insensitive exact
            matching.
        interruption_ignore_term_languages:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Interruption Ignore Term Languages
          description: >-
            Language codes for which preset ignore-term categories have been
            activated. Stored explicitly so display is not inferred from term
            overlap.
        merge_with_default_ignore_terms:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Merge With Default Ignore Terms
          description: >-
            When enabled, the curated default terms for
            interruption_ignore_term_languages are used in addition to
            interruption_ignore_terms.
        transcribe_on_disabled_interruptions:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Transcribe On Disabled Interruptions
          description: >-
            When interruptions are disabled, still transcribe what the user says
            so it can carry into the next turn. When off, user speech during a
            non-interruptible turn is ignored and won't trigger a turn.
        soft_timeout_config:
          anyOf:
            - $ref: '#/components/schemas/SoftTimeoutConfigWorkflowOverride'
            - type: 'null'
          description: >-
            Configuration for soft timeout functionality. Provides immediate
            feedback during longer LLM responses.
      type: object
      title: TurnConfigWorkflowOverride
      example:
        interruption_ignore_term_languages: []
        interruption_ignore_terms: []
        merge_with_default_ignore_terms: false
        mode: turn
        retranscribe_on_turn_timeout: false
        silence_end_call_timeout: -1
        soft_timeout_config:
          message: Hhmmmm...yeah.
          timeout_seconds: -1
          use_llm_generated_message: false
        speculative_turn: false
        spelling_patience: auto
        transcribe_on_disabled_interruptions: false
        turn_eagerness: normal
        turn_model: turn_v3
        turn_timeout: 7
    TTSConversationalConfigPatch:
      properties:
        voice_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Voice Id
          description: The voice ID to use for TTS
        performance:
          anyOf:
            - $ref: '#/components/schemas/TTSPerformance'
            - type: 'null'
          description: >-
            User-facing TTS performance tier (latency or quality). The concrete
            provider/model is selected by the voice-server based on this value.
        pronunciation_dictionary_locators:
          anyOf:
            - items:
                $ref: >-
                  #/components/schemas/PydanticPronunciationDictionaryVersionLocator
              type: array
            - type: 'null'
          title: Pronunciation Dictionary Locators
          description: The pronunciation dictionary locators
          x-convai-client-override: true
        enable_phoneme_tags:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enable Phoneme Tags
          description: >-
            Opt-in to SSML phoneme tag handling. When enabled, phoneme tags from
            inline content and pronunciation dictionaries may be normalized
            before synthesis when the selected provider supports them.
        model_id:
          anyOf:
            - type: string
              maxLength: 128
              minLength: 5
              pattern: ^tts\.[a-z0-9][a-z0-9._:-]*$
              description: Stable Threetone TTS catalog model identifier.
            - type: 'null'
          title: Model Id
          description: >-
            Stable Threetone TTS catalog model ID; null clears an unpublished
            selection.
        options:
          anyOf:
            - oneOf:
                - $ref: >-
                    #/components/schemas/CartesiaSonic36LiveKitInferenceTTSOptions
                - $ref: '#/components/schemas/SarvamBulbulV3LiveKitPluginTTSOptions'
              discriminator:
                propertyName: adapter_contract
                mapping:
                  livekit_inference_cartesia_sonic_3_6_2026_08_27_v1:
                    $ref: >-
                      #/components/schemas/CartesiaSonic36LiveKitInferenceTTSOptions
                  livekit_plugin_python_sarvam_bulbul_v3_v1:
                    $ref: '#/components/schemas/SarvamBulbulV3LiveKitPluginTTSOptions'
            - type: 'null'
          title: Options
          description: >-
            Validated options for the selected catalog model; null clears
            existing options.
      additionalProperties: false
      type: object
      title: TTSConversationalConfigPatch
      description: Sparse TTS authoring patch kept separate from workflow overrides.
      example:
        performance: latency
        voice_id: ME9RtCnWp5vX2LhJdF3k
    ConversationConfigWorkflowOverride:
      properties:
        text_only:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Text Only
          description: >-
            If enabled audio will not be processed and only text will be used,
            use to avoid audio pricing.
          x-convai-client-override: true
        max_duration_seconds:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Duration Seconds
          description: The maximum duration of a conversation in seconds
          x-convai-client-override: true
        client_events:
          anyOf:
            - items:
                $ref: '#/components/schemas/ClientEvent'
              type: array
            - type: 'null'
          title: Client Events
          description: The events that will be sent to the client
        file_input:
          anyOf:
            - $ref: '#/components/schemas/FileInputConfigWorkflowOverride'
            - type: 'null'
          description: >-
            Configuration for file input (image/PDF uploads) during
            conversations.
          x-convai-client-override: true
        monitoring_enabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Monitoring Enabled
          description: Enable real-time monitoring of conversations via WebSocket
        monitoring_events:
          anyOf:
            - items:
                $ref: '#/components/schemas/ClientEvent'
              type: array
            - type: 'null'
          title: Monitoring Events
          description: The events that will be sent to monitoring connections.
        dtmf_input_settings:
          anyOf:
            - $ref: '#/components/schemas/DTMFInputConfig'
            - type: 'null'
          description: Configure DTMF (keypad) input collection during phone calls
        background_sound:
          anyOf:
            - $ref: '#/components/schemas/BackgroundSoundConfigWorkflowOverride'
            - type: 'null'
          description: Configuration for background sound during conversations.
        source_attribution:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Source Attribution
          description: >-
            When enabled and knowledge base content is present, the LLM is
            instructed to report which sources it used.
      type: object
      title: ConversationConfigWorkflowOverride
      example:
        client_events:
          - audio
          - interruption
        max_duration_seconds: 600
    LanguagePreset:
      properties:
        overrides:
          $ref: '#/components/schemas/ConversationConfigClientOverride'
          description: The overrides for the language preset
        first_message_translation:
          anyOf:
            - $ref: '#/components/schemas/LanguagePresetTranslation'
            - type: 'null'
          description: The translation of the first message
        soft_timeout_translation:
          anyOf:
            - $ref: '#/components/schemas/LanguagePresetTranslation'
            - type: 'null'
          description: The translation of the soft timeout message
      type: object
      required:
        - overrides
      title: LanguagePreset
    VADConfigWorkflowOverride:
      properties:
        background_voice_detection:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Background Voice Detection
          description: Whether to use background voice filtering
          x-fern-ignore: true
      type: object
      title: VADConfigWorkflowOverride
      example:
        background_voice_detection: false
    AgentConfigAPIModelWorkflowOverride-Input:
      properties:
        first_message:
          anyOf:
            - type: string
            - type: 'null'
          title: First Message
          description: >-
            If non-empty, the first message the agent will say. If empty, the
            agent waits for the user to start the discussion.
          x-convai-client-override: true
          x-convai-language-override: true
        language:
          anyOf:
            - type: string
            - type: 'null'
          title: Language
          description: Language of the agent - used for ASR and TTS
          x-convai-client-override: true
        dynamic_variables:
          anyOf:
            - $ref: >-
                #/components/schemas/DynamicVariablesConfigWorkflowOverride-Input
            - type: 'null'
          description: Configuration for dynamic variables
        disable_first_message_interruptions:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Disable First Message Interruptions
          description: >-
            If true, the user will not be able to interrupt the agent while the
            first message is being delivered.
        max_conversation_duration_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Max Conversation Duration Message
          description: >-
            If non-empty, the message the agent will send when max conversation
            duration is reached.
          x-convai-client-override: true
          x-convai-language-override: true
        text_behavior_overrides:
          anyOf:
            - additionalProperties:
                $ref: '#/components/schemas/BehaviorOverride'
              propertyNames:
                $ref: '#/components/schemas/ConversationInitiationSource'
              type: object
            - type: 'null'
          title: Text Behavior Overrides
          description: >-
            Per-channel response behavior overrides for text conversations.
            Built-in channel defaults apply when unset.
        prompt:
          anyOf:
            - $ref: '#/components/schemas/PromptAgentAPIModelWorkflowOverride-Input'
            - type: 'null'
          description: The prompt for the agent
      type: object
      title: AgentConfigAPIModelWorkflowOverride
      example:
        disable_first_message_interruptions: false
        dynamic_variables:
          dynamic_variable_placeholders:
            user_name: John Doe
        first_message: Hello, how can I help you today?
        language: en
        prompt:
          knowledge_base: []
          llm: gemini-2.0-flash-001
          max_tokens: -1
          prompt: >-
            You are a helpful assistant that can answer questions about the
            topic of the conversation.
          temperature: 0
          tool_ids: []
    ASRConversationalConfigPatch:
      properties:
        model_id:
          anyOf:
            - type: string
              maxLength: 128
              minLength: 5
              pattern: ^asr\.[a-z0-9][a-z0-9._:-]*$
              description: Stable Threetone ASR catalog model identifier.
            - type: 'null'
          title: Model Id
        recognition:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/ASRFixedRecognition'
                - $ref: '#/components/schemas/ASRAutomaticAgentLanguagesRecognition'
                - $ref: >-
                    #/components/schemas/ASRAutomaticProviderLanguagesRecognition
              discriminator:
                propertyName: mode
                mapping:
                  automatic_agent_languages:
                    $ref: '#/components/schemas/ASRAutomaticAgentLanguagesRecognition'
                  automatic_provider_languages:
                    $ref: >-
                      #/components/schemas/ASRAutomaticProviderLanguagesRecognition
                  fixed:
                    $ref: '#/components/schemas/ASRFixedRecognition'
            - type: 'null'
          title: Recognition
        task:
          anyOf:
            - $ref: '#/components/schemas/ASRTranscriptTask'
            - type: 'null'
        keyterms:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Keyterms
        options:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/CartesiaInk2LiveKitInferenceASROptions'
                - $ref: >-
                    #/components/schemas/CartesiaInkWhisperLiveKitInferenceASROptions
                - $ref: '#/components/schemas/SarvamSaarasV4DirectRealtimeASROptions'
              discriminator:
                propertyName: adapter_contract
                mapping:
                  livekit_inference_cartesia_ink_2_v1:
                    $ref: >-
                      #/components/schemas/CartesiaInk2LiveKitInferenceASROptions
                  livekit_inference_cartesia_ink_whisper_v1:
                    $ref: >-
                      #/components/schemas/CartesiaInkWhisperLiveKitInferenceASROptions
                  sarvam_direct_realtime_saaras_v4_2026_09_v1:
                    $ref: >-
                      #/components/schemas/SarvamSaarasV4DirectRealtimeASROptions
            - type: 'null'
          title: Options
      additionalProperties: false
      type: object
      title: ASRConversationalConfigPatch
      description: Sparse ASR authoring patch; compatibility is checked after merge.
    WorkflowEdgeModel-Input:
      properties:
        source:
          type: string
          title: Source
          description: ID of the source node.
        target:
          type: string
          title: Target
          description: ID of the target node.
        forward_condition:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/WorkflowUnconditionalModel'
                  description: Condition that is always true.
                - $ref: '#/components/schemas/WorkflowLLMConditionModel'
                  description: >-
                    Condition described using human language and evaluated by an
                    LLM.
                - $ref: '#/components/schemas/WorkflowResultConditionModel'
                  description: >-
                    Condition based on the result of the last executed tool
                    dispatch node.
                - $ref: '#/components/schemas/WorkflowExpressionConditionModel-Input'
                  description: Condition described using a deterministic expression.
              discriminator:
                propertyName: type
                mapping:
                  expression:
                    $ref: >-
                      #/components/schemas/WorkflowExpressionConditionModel-Input
                  llm:
                    $ref: '#/components/schemas/WorkflowLLMConditionModel'
                  result:
                    $ref: '#/components/schemas/WorkflowResultConditionModel'
                  unconditional:
                    $ref: '#/components/schemas/WorkflowUnconditionalModel'
            - type: 'null'
          title: Forward Condition
          description: >-
            Condition that must be met for the edge to be traversed in the
            forward direction (source to target).
        backward_condition:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/WorkflowUnconditionalModel'
                  description: Condition that is always true.
                - $ref: '#/components/schemas/WorkflowLLMConditionModel'
                  description: >-
                    Condition described using human language and evaluated by an
                    LLM.
                - $ref: '#/components/schemas/WorkflowResultConditionModel'
                  description: >-
                    Condition based on the result of the last executed tool
                    dispatch node.
                - $ref: '#/components/schemas/WorkflowExpressionConditionModel-Input'
                  description: Condition described using a deterministic expression.
              discriminator:
                propertyName: type
                mapping:
                  expression:
                    $ref: >-
                      #/components/schemas/WorkflowExpressionConditionModel-Input
                  llm:
                    $ref: '#/components/schemas/WorkflowLLMConditionModel'
                  result:
                    $ref: '#/components/schemas/WorkflowResultConditionModel'
                  unconditional:
                    $ref: '#/components/schemas/WorkflowUnconditionalModel'
            - type: 'null'
          title: Backward Condition
          description: >-
            Condition that must be met for the edge to be traversed in the
            backward direction (target to source).
      type: object
      required:
        - source
        - target
      title: WorkflowEdgeModel
    WorkflowStartNodeModel-Input:
      properties:
        type:
          type: string
          const: start
          title: Type
          default: start
        position:
          $ref: '#/components/schemas/Position-Input'
          description: Position of the node in the workflow.
        edge_order:
          items:
            type: string
          type: array
          title: Edge Order
          description: The ids of outgoing edges in the order they should be evaluated.
      type: object
      title: WorkflowStartNodeModel
    WorkflowEndNodeModel-Input:
      properties:
        type:
          type: string
          const: end
          title: Type
          default: end
        position:
          $ref: '#/components/schemas/Position-Input'
          description: Position of the node in the workflow.
        edge_order:
          items:
            type: string
          type: array
          title: Edge Order
          description: The ids of outgoing edges in the order they should be evaluated.
      type: object
      title: WorkflowEndNodeModel
    WorkflowPhoneNumberNodeModel-Input:
      properties:
        custom_sip_headers:
          items:
            oneOf:
              - $ref: '#/components/schemas/CustomSIPHeader'
              - $ref: '#/components/schemas/CustomSIPHeaderWithDynamicVariable'
            discriminator:
              propertyName: type
              mapping:
                dynamic:
                  $ref: '#/components/schemas/CustomSIPHeaderWithDynamicVariable'
                static:
                  $ref: '#/components/schemas/CustomSIPHeader'
          type: array
          maxItems: 20
          title: Custom Sip Headers
          description: >-
            Custom SIP headers to include when transferring the call. Each
            header can be either a static value or a dynamic variable reference.
        transfer_destination:
          oneOf:
            - $ref: '#/components/schemas/PhoneNumberTransferDestination'
            - $ref: '#/components/schemas/SIPUriTransferDestination'
            - $ref: >-
                #/components/schemas/PhoneNumberDynamicVariableTransferDestination
            - $ref: '#/components/schemas/SIPUriDynamicVariableTransferDestination'
          title: Transfer Destination
          discriminator:
            propertyName: type
            mapping:
              phone:
                $ref: '#/components/schemas/PhoneNumberTransferDestination'
              phone_dynamic_variable:
                $ref: >-
                  #/components/schemas/PhoneNumberDynamicVariableTransferDestination
              sip_uri:
                $ref: '#/components/schemas/SIPUriTransferDestination'
              sip_uri_dynamic_variable:
                $ref: '#/components/schemas/SIPUriDynamicVariableTransferDestination'
        transfer_type:
          $ref: '#/components/schemas/TransferTypeEnum'
          default: conference
        sip_refer_play_dialtone:
          type: boolean
          title: Sip Refer Play Dialtone
          description: >-
            When True, a ringing tone is played on the original call leg while a
            SIP REFER transfer completes. The tone is carried over RTP to the
            SIP peer executing the REFER, so disable this if the receiving
            system (e.g. an SBC or contact center) should not hear it. When
            disabled the caller hears silence until the transfer completes. SIP
            REFER transfers only.
          default: true
        uui:
          anyOf:
            - $ref: '#/components/schemas/UUITransferConfig'
            - type: 'null'
          description: >-
            User-to-User Information (RFC 7433) to attach to SIP REFER
            transfers. Carries call context such as CRM identifiers or
            escalation reason across the transfer boundary.
        post_dial_digits:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/PostDialDigitsStatic'
                - $ref: '#/components/schemas/PostDialDigitsDynamicVariable'
              discriminator:
                propertyName: type
                mapping:
                  dynamic:
                    $ref: '#/components/schemas/PostDialDigitsDynamicVariable'
                  static:
                    $ref: '#/components/schemas/PostDialDigitsStatic'
            - type: 'null'
          title: Post Dial Digits
          description: >-
            DTMF digits to send after call connects (e.g., 'ww1234' for
            extension). Can be either a static value or a dynamic variable
            reference. Use 'w' for 0.5s pause. Only supported for Twilio
            transfers.
        type:
          type: string
          const: phone_number
          title: Type
          default: phone_number
        position:
          $ref: '#/components/schemas/Position-Input'
          description: Position of the node in the workflow.
        edge_order:
          items:
            type: string
          type: array
          title: Edge Order
          description: The ids of outgoing edges in the order they should be evaluated.
      type: object
      required:
        - transfer_destination
      title: WorkflowPhoneNumberNodeModel
    WorkflowOverrideAgentNodeModel-Input:
      properties:
        type:
          type: string
          const: override_agent
          title: Type
          default: override_agent
        position:
          $ref: '#/components/schemas/Position-Input'
          description: Position of the node in the workflow.
        edge_order:
          items:
            type: string
          type: array
          title: Edge Order
          description: The ids of outgoing edges in the order they should be evaluated.
        conversation_config:
          $ref: >-
            #/components/schemas/ConversationalConfigAPIModelWorkflowOverride-Input
          description: >-
            Configuration overrides applied while the subagent is conducting the
            conversation.
        additional_prompt:
          type: string
          title: Additional Prompt
          description: >-
            Specific goal for this subagent. It will be added to the system
            prompt and can be used to further refine the agent's behavior in
            this specific context.
        additional_knowledge_base:
          items:
            $ref: '#/components/schemas/KnowledgeBaseLocator'
          type: array
          title: Additional Knowledge Base
          description: >-
            Additional knowledge base documents that the subagent has access to.
            These will be used in addition to the main agent's documents.
        additional_tool_ids:
          items:
            type: string
          type: array
          title: Additional Tool Ids
          description: >-
            IDs of additional tools that the subagent has access to. These will
            be used in addition to the main agent's tools.
        label:
          type: string
          title: Label
          description: Human-readable label for the node used throughout the UI.
        entry_behavior:
          $ref: '#/components/schemas/EntryBehavior'
          description: >-
            Dictates whether this node should immediately generate a response
            upon entry or wait for the user input. When set to "auto", the
            behavior will be decided based on the type of the preceding node:
            "wait_for_user" after the "say" and "start" nodes and
            "generate_immediately" otherwise.
          default: auto
      type: object
      required:
        - label
      title: WorkflowOverrideAgentNodeModel
    WorkflowStandaloneAgentNodeModel-Input:
      properties:
        type:
          type: string
          const: standalone_agent
          title: Type
          default: standalone_agent
        position:
          $ref: '#/components/schemas/Position-Input'
          description: Position of the node in the workflow.
        edge_order:
          items:
            type: string
          type: array
          title: Edge Order
          description: The ids of outgoing edges in the order they should be evaluated.
        agent_id:
          type: string
          title: Agent Id
          description: The ID of the agent to transfer the conversation to.
        delay_ms:
          type: integer
          title: Delay Ms
          description: >-
            Artificial delay in milliseconds applied before transferring the
            conversation.
          default: 0
        transfer_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Transfer Message
          description: Optional message sent to the user before the transfer is initiated.
        enable_transferred_agent_first_message:
          type: boolean
          title: Enable Transferred Agent First Message
          description: >-
            Whether to enable the transferred agent to send its configured first
            message after the transfer.
          default: false
      type: object
      required:
        - agent_id
      title: WorkflowStandaloneAgentNodeModel
    WorkflowToolNodeModel-Input:
      properties:
        type:
          type: string
          const: tool
          title: Type
          default: tool
        position:
          $ref: '#/components/schemas/Position-Input'
          description: Position of the node in the workflow.
        edge_order:
          items:
            type: string
          type: array
          title: Edge Order
          description: The ids of outgoing edges in the order they should be evaluated.
        tools:
          items:
            $ref: '#/components/schemas/WorkflowToolLocator'
          type: array
          title: Tools
          description: >-
            List of tools to execute in parallel. The entire node is considered
            successful if all tools are executed successfully.
      type: object
      title: WorkflowToolNodeModel
    ASRConversationalConfig:
      properties:
        model_id:
          type: string
          maxLength: 128
          minLength: 5
          pattern: ^asr\.[a-z0-9][a-z0-9._:-]*$
          title: Model Id
          description: Stable Threetone ASR catalog model identifier.
        recognition:
          oneOf:
            - $ref: '#/components/schemas/ASRFixedRecognition'
            - $ref: '#/components/schemas/ASRAutomaticAgentLanguagesRecognition'
            - $ref: '#/components/schemas/ASRAutomaticProviderLanguagesRecognition'
          title: Recognition
          discriminator:
            propertyName: mode
            mapping:
              automatic_agent_languages:
                $ref: '#/components/schemas/ASRAutomaticAgentLanguagesRecognition'
              automatic_provider_languages:
                $ref: '#/components/schemas/ASRAutomaticProviderLanguagesRecognition'
              fixed:
                $ref: '#/components/schemas/ASRFixedRecognition'
        task:
          $ref: '#/components/schemas/ASRTranscriptTask'
          default: transcribe
        keyterms:
          items:
            type: string
          type: array
          title: Keyterms
        options:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/CartesiaInk2LiveKitInferenceASROptions'
                - $ref: >-
                    #/components/schemas/CartesiaInkWhisperLiveKitInferenceASROptions
                - $ref: '#/components/schemas/SarvamSaarasV4DirectRealtimeASROptions'
              discriminator:
                propertyName: adapter_contract
                mapping:
                  livekit_inference_cartesia_ink_2_v1:
                    $ref: >-
                      #/components/schemas/CartesiaInk2LiveKitInferenceASROptions
                  livekit_inference_cartesia_ink_whisper_v1:
                    $ref: >-
                      #/components/schemas/CartesiaInkWhisperLiveKitInferenceASROptions
                  sarvam_direct_realtime_saaras_v4_2026_09_v1:
                    $ref: >-
                      #/components/schemas/SarvamSaarasV4DirectRealtimeASROptions
            - type: 'null'
          title: Options
      additionalProperties: false
      type: object
      required:
        - model_id
      title: ASRConversationalConfig
      description: Speech-recognition selection and authored behavior for an agent.
    TurnConfig:
      properties:
        turn_timeout:
          type: number
          title: Turn Timeout
          description: Maximum wait time for the user's reply before re-engaging the user
          default: 7
        initial_wait_time:
          anyOf:
            - type: number
            - type: 'null'
          title: Initial Wait Time
          description: >-
            How long the agent will wait for the user to start the conversation
            if the first message is empty. If not set, uses the regular
            turn_timeout.
        silence_end_call_timeout:
          type: number
          title: Silence End Call Timeout
          description: >-
            Maximum wait time since the user last spoke before terminating the
            call
          default: -1
        mode:
          $ref: '#/components/schemas/TurnMode'
          description: The mode of turn detection
          default: turn
          x-fern-ignore: true
        turn_eagerness:
          $ref: '#/components/schemas/TurnEagerness'
          description: >-
            Controls how eager the agent is to respond. Low = less eager (waits
            longer), Standard = default eagerness, High = more eager (responds
            sooner)
          default: normal
        spelling_patience:
          $ref: '#/components/schemas/SpellingPatience'
          description: >-
            Controls if the agent should be more patient when user is spelling
            numbers and named entities. Auto = model based, Off = never wait
            extra
          default: auto
        speculative_turn:
          type: boolean
          title: Speculative Turn
          description: >-
            When enabled, starts generating LLM responses during silence before
            full turn confidence is reached, reducing perceived latency. May
            increase LLM costs.
          default: false
        retranscribe_on_turn_timeout:
          type: boolean
          title: Retranscribe On Turn Timeout
          description: >-
            When enabled, if VAD detects no speech, attempts to re-transcribe
            accumulated audio at turn timeout. Disables silence discount billing
            for affected turns.
          default: false
        turn_model:
          $ref: '#/components/schemas/TurnModel'
          default: turn_v3
        interruption_ignore_terms:
          items:
            type: string
          type: array
          title: Interruption Ignore Terms
          description: >-
            List of terms that should not trigger an interruption when spoken by
            the user (e.g. 'gotcha', 'understood'). Uses case-insensitive exact
            matching.
        interruption_ignore_term_languages:
          items:
            type: string
          type: array
          title: Interruption Ignore Term Languages
          description: >-
            Language codes for which preset ignore-term categories have been
            activated. Stored explicitly so display is not inferred from term
            overlap.
        merge_with_default_ignore_terms:
          type: boolean
          title: Merge With Default Ignore Terms
          description: >-
            When enabled, the curated default terms for
            interruption_ignore_term_languages are used in addition to
            interruption_ignore_terms.
          default: false
        transcribe_on_disabled_interruptions:
          type: boolean
          title: Transcribe On Disabled Interruptions
          description: >-
            When interruptions are disabled, still transcribe what the user says
            so it can carry into the next turn. When off, user speech during a
            non-interruptible turn is ignored and won't trigger a turn.
          default: false
        soft_timeout_config:
          $ref: '#/components/schemas/SoftTimeoutConfig'
          description: >-
            Configuration for soft timeout functionality. Provides immediate
            feedback during longer LLM responses.
      type: object
      title: TurnConfig
      example:
        interruption_ignore_term_languages: []
        interruption_ignore_terms: []
        merge_with_default_ignore_terms: false
        mode: turn
        retranscribe_on_turn_timeout: false
        silence_end_call_timeout: -1
        soft_timeout_config:
          message: Hhmmmm...yeah.
          timeout_seconds: -1
        speculative_turn: false
        spelling_patience: auto
        transcribe_on_disabled_interruptions: false
        turn_eagerness: normal
        turn_model: turn_v3
        turn_timeout: 7
    TTSConversationalConfig-Output:
      properties:
        model_id:
          anyOf:
            - type: string
              maxLength: 128
              minLength: 5
              pattern: ^tts\.[a-z0-9][a-z0-9._:-]*$
              description: Stable Threetone TTS catalog model identifier.
            - type: 'null'
          title: Model Id
          description: >-
            Stable Threetone TTS catalog model ID. It may be absent only for
            legacy agents that still use performance-tier migration behavior.
        voice_id:
          type: string
          title: Voice Id
          description: The voice ID to use for TTS
          default: ME9RtCnWp5vX2LhJdF3k
        performance:
          $ref: '#/components/schemas/TTSPerformance'
          description: >-
            User-facing TTS performance tier (latency or quality). The concrete
            provider/model is selected by the voice-server based on this value.
          default: latency
        pronunciation_dictionary_locators:
          items:
            $ref: '#/components/schemas/PydanticPronunciationDictionaryVersionLocator'
          type: array
          title: Pronunciation Dictionary Locators
          description: The pronunciation dictionary locators
          x-convai-client-override: true
        enable_phoneme_tags:
          type: boolean
          title: Enable Phoneme Tags
          description: >-
            Opt-in to SSML phoneme tag handling. When enabled, phoneme tags from
            inline content and pronunciation dictionaries may be normalized
            before synthesis when the selected provider supports them.
          default: true
        options:
          anyOf:
            - oneOf:
                - $ref: >-
                    #/components/schemas/CartesiaSonic36LiveKitInferenceTTSOptions
                - $ref: '#/components/schemas/SarvamBulbulV3LiveKitPluginTTSOptions'
              discriminator:
                propertyName: adapter_contract
                mapping:
                  livekit_inference_cartesia_sonic_3_6_2026_08_27_v1:
                    $ref: >-
                      #/components/schemas/CartesiaSonic36LiveKitInferenceTTSOptions
                  livekit_plugin_python_sarvam_bulbul_v3_v1:
                    $ref: '#/components/schemas/SarvamBulbulV3LiveKitPluginTTSOptions'
            - type: 'null'
          title: Options
          description: >-
            Validated model-specific authoring options for the selected catalog
            model.
      type: object
      required:
        - model_id
        - voice_id
        - performance
        - pronunciation_dictionary_locators
        - enable_phoneme_tags
        - options
      title: TTSConversationalConfig
    ConversationConfig:
      properties:
        text_only:
          type: boolean
          title: Text Only
          description: >-
            If enabled audio will not be processed and only text will be used,
            use to avoid audio pricing.
          default: false
          x-convai-client-override: true
        max_duration_seconds:
          type: integer
          title: Max Duration Seconds
          description: The maximum duration of a conversation in seconds
          default: 600
          x-convai-client-override: true
        client_events:
          items:
            $ref: '#/components/schemas/ClientEvent'
          type: array
          title: Client Events
          description: The events that will be sent to the client
        file_input:
          $ref: '#/components/schemas/FileInputConfig'
          description: >-
            Configuration for file input (image/PDF uploads) during
            conversations.
          x-convai-client-override: true
        monitoring_enabled:
          type: boolean
          title: Monitoring Enabled
          description: Enable real-time monitoring of conversations via WebSocket
          default: false
        monitoring_events:
          items:
            $ref: '#/components/schemas/ClientEvent'
          type: array
          title: Monitoring Events
          description: The events that will be sent to monitoring connections.
        dtmf_input_settings:
          anyOf:
            - $ref: '#/components/schemas/DTMFInputConfig'
            - type: 'null'
          description: Configure DTMF (keypad) input collection during phone calls
        background_sound:
          $ref: '#/components/schemas/BackgroundSoundConfig'
          description: Configuration for background sound during conversations.
        source_attribution:
          type: boolean
          title: Source Attribution
          description: >-
            When enabled and knowledge base content is present, the LLM is
            instructed to report which sources it used.
          default: false
      type: object
      title: ConversationConfig
      example:
        client_events:
          - audio
          - interruption
        max_duration_seconds: 600
    VADConfig:
      properties:
        background_voice_detection:
          type: boolean
          title: Background Voice Detection
          description: Whether to use background voice filtering
          default: false
          x-fern-ignore: true
      type: object
      title: VADConfig
      example:
        background_voice_detection: false
    AgentConfigAPIModel-Output:
      properties:
        first_message:
          type: string
          title: First Message
          description: >-
            If non-empty, the first message the agent will say. If empty, the
            agent waits for the user to start the discussion.
          default: ''
          x-convai-client-override: true
          x-convai-language-override: true
        language:
          type: string
          title: Language
          description: Language of the agent - used for ASR and TTS
          default: en
          x-convai-client-override: true
        dynamic_variables:
          $ref: '#/components/schemas/DynamicVariablesConfig-Output'
          description: Configuration for dynamic variables
        disable_first_message_interruptions:
          type: boolean
          title: Disable First Message Interruptions
          description: >-
            If true, the user will not be able to interrupt the agent while the
            first message is being delivered.
          default: false
        max_conversation_duration_message:
          type: string
          title: Max Conversation Duration Message
          description: >-
            If non-empty, the message the agent will send when max conversation
            duration is reached.
          default: ''
          x-convai-client-override: true
          x-convai-language-override: true
        text_behavior_overrides:
          anyOf:
            - additionalProperties:
                $ref: '#/components/schemas/BehaviorOverride'
              propertyNames:
                $ref: '#/components/schemas/ConversationInitiationSource'
              type: object
            - type: 'null'
          title: Text Behavior Overrides
          description: >-
            Per-channel response behavior overrides for text conversations.
            Built-in channel defaults apply when unset.
        prompt:
          $ref: '#/components/schemas/PromptAgentAPIModel'
          description: The prompt for the agent
      type: object
      title: AgentConfigAPIModel
      example:
        disable_first_message_interruptions: false
        first_message: Hello, how can I help you today?
        language: en
    EvaluationSettings:
      properties:
        criteria:
          items:
            $ref: '#/components/schemas/PromptEvaluationCriteria'
          type: array
          title: Criteria
          description: Individual criteria that the agent should be evaluated against
      type: object
      title: EvaluationSettings
      description: >-
        Settings to evaluate an agent's performance.

        Agents are evaluated against a set of criteria, with success being
        defined as meeting some combination of those criteria.
    WidgetConfig:
      properties:
        variant:
          $ref: '#/components/schemas/EmbedVariant'
          description: The variant of the widget
          default: full
        placement:
          $ref: '#/components/schemas/WidgetPlacement'
          description: The placement of the widget on the screen
          default: bottom-right
        expandable:
          $ref: '#/components/schemas/WidgetExpandable'
          description: Whether the widget is expandable
          default: never
        avatar:
          anyOf:
            - $ref: '#/components/schemas/OrbAvatar'
            - $ref: '#/components/schemas/URLAvatar'
            - $ref: '#/components/schemas/ImageAvatar'
          title: Avatar
          description: The avatar of the widget
        feedback_mode:
          $ref: '#/components/schemas/WidgetFeedbackMode'
          description: The feedback mode of the widget
          default: none
        end_feedback:
          anyOf:
            - $ref: '#/components/schemas/WidgetEndFeedbackConfig'
            - type: 'null'
          description: Configuration for feedback collected at the end of the conversation
        bg_color:
          type: string
          title: Bg Color
          description: The background color of the widget
          default: '#ffffff'
        text_color:
          type: string
          title: Text Color
          description: The text color of the widget
          default: '#000000'
        btn_color:
          type: string
          title: Btn Color
          description: The button color of the widget
          default: '#000000'
        btn_text_color:
          type: string
          title: Btn Text Color
          description: The button text color of the widget
          default: '#ffffff'
        border_color:
          type: string
          title: Border Color
          description: The border color of the widget
          default: '#e1e1e1'
        focus_color:
          type: string
          title: Focus Color
          description: The focus color of the widget
          default: '#000000'
        border_radius:
          anyOf:
            - type: integer
            - type: 'null'
          title: Border Radius
          description: The border radius of the widget
        btn_radius:
          anyOf:
            - type: integer
            - type: 'null'
          title: Btn Radius
          description: The button radius of the widget
        action_text:
          anyOf:
            - type: string
            - type: 'null'
          title: Action Text
          description: The action text of the widget
        start_call_text:
          anyOf:
            - type: string
            - type: 'null'
          title: Start Call Text
          description: The start call text of the widget
        end_call_text:
          anyOf:
            - type: string
            - type: 'null'
          title: End Call Text
          description: The end call text of the widget
        expand_text:
          anyOf:
            - type: string
            - type: 'null'
          title: Expand Text
          description: The expand text of the widget
        listening_text:
          anyOf:
            - type: string
            - type: 'null'
          title: Listening Text
          description: The text to display when the agent is listening
        speaking_text:
          anyOf:
            - type: string
            - type: 'null'
          title: Speaking Text
          description: The text to display when the agent is speaking
        shareable_page_text:
          anyOf:
            - type: string
            - type: 'null'
          title: Shareable Page Text
          description: The text to display when sharing
        shareable_page_show_terms:
          type: boolean
          title: Shareable Page Show Terms
          description: Whether to show terms and conditions on the shareable page
          default: true
        terms_text:
          anyOf:
            - type: string
            - type: 'null'
          title: Terms Text
          description: The text to display for terms and conditions
        terms_html:
          anyOf:
            - type: string
            - type: 'null'
          title: Terms Html
          description: The HTML to display for terms and conditions
        terms_key:
          anyOf:
            - type: string
            - type: 'null'
          title: Terms Key
          description: The key to display for terms and conditions
        show_avatar_when_collapsed:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Show Avatar When Collapsed
          description: Whether to show the avatar when the widget is collapsed
          default: false
        disable_banner:
          type: boolean
          title: Disable Banner
          description: Whether to disable the banner
          default: false
        override_link:
          anyOf:
            - type: string
            - type: 'null'
          title: Override Link
          description: The override link for the widget
        markdown_link_allowed_hosts:
          items:
            $ref: '#/components/schemas/AllowlistItem'
          type: array
          title: Markdown Link Allowed Hosts
          description: >-
            List of allowed hostnames for clickable markdown links. Use {
            hostname: '*' } to allow any domain. Empty means no links are
            allowed.
        markdown_link_include_www:
          type: boolean
          title: Markdown Link Include Www
          description: Whether to automatically include www. variants of allowed hosts
          default: true
        markdown_link_allow_http:
          type: boolean
          title: Markdown Link Allow Http
          description: Whether to allow http:// in addition to https:// for allowed hosts
          default: true
        mic_muting_enabled:
          type: boolean
          title: Mic Muting Enabled
          description: Whether to enable mic muting
          default: true
        transcript_enabled:
          type: boolean
          title: Transcript Enabled
          description: >-
            Whether the widget should show the conversation transcript as it
            goes on
          default: true
        text_input_enabled:
          type: boolean
          title: Text Input Enabled
          description: Whether the user should be able to send text messages
          default: true
        conversation_mode_toggle_enabled:
          type: boolean
          title: Conversation Mode Toggle Enabled
          description: Whether to enable the conversation mode toggle in the widget
          default: false
        default_expanded:
          type: boolean
          title: Default Expanded
          description: Whether the widget should be expanded by default
          default: false
        always_expanded:
          type: boolean
          title: Always Expanded
          description: Whether the widget should always be expanded
          default: false
        dismissible:
          type: boolean
          title: Dismissible
          description: Whether the widget can be dismissed by the user
          default: false
        show_agent_status:
          type: boolean
          title: Show Agent Status
          description: Whether to show agent working/done/error status during tool use
          default: false
        show_conversation_id:
          type: boolean
          title: Show Conversation Id
          description: Whether to show the conversation ID after disconnection.
          default: true
        strip_audio_tags:
          type: boolean
          title: Strip Audio Tags
          description: Whether to strip audio markup from messages.
          default: true
        syntax_highlight_theme:
          anyOf:
            - type: string
              enum:
                - light
                - dark
            - type: 'null'
          title: Syntax Highlight Theme
          description: >-
            Theme for code block syntax highlighting. Defaults to auto-detection
            by the widget when not set.
        text_contents:
          $ref: '#/components/schemas/WidgetTextContents'
          description: Text contents of the widget
        styles:
          $ref: '#/components/schemas/WidgetStyles'
          description: Styles for the widget
        show_resize_button:
          type: boolean
          title: Show Resize Button
          description: Whether to show the resize button
          default: true
        language_selector:
          type: boolean
          title: Language Selector
          description: Whether to show the language selector
          default: false
        supports_text_only:
          type: boolean
          title: Supports Text Only
          description: Whether the widget can switch to text only mode
          default: true
        custom_avatar_path:
          anyOf:
            - type: string
            - type: 'null'
          title: Custom Avatar Path
          description: The custom avatar path
        language_presets:
          additionalProperties:
            $ref: '#/components/schemas/WidgetLanguagePreset'
          type: object
          title: Language Presets
          description: Language presets for the widget
      type: object
      title: WidgetConfig
      example:
        custom_avatar_path: https://example.com/avatar.png
        language_selector: false
    AnalysisProperty:
      properties:
        type:
          type: string
          enum:
            - boolean
            - string
            - integer
            - number
          title: Type
        description:
          type: string
          title: Description
          description: >-
            The description of the property. When set, the LLM will provide the
            value based on this description. Mutually exclusive with
            dynamic_variable, is_system_provided, constant_value, and
            is_omitted.
          default: ''
        enum:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Enum
          description: List of allowed string values for string type parameters
        is_system_provided:
          type: boolean
          title: Is System Provided
          description: >-
            If true, the value will be populated by the system at runtime. Used
            by API Integration Webhook tools for templating. Mutually exclusive
            with description, dynamic_variable, constant_value, and is_omitted.
          default: false
        dynamic_variable:
          type: string
          title: Dynamic Variable
          description: >-
            The name of the dynamic variable to use for this property's value.
            Mutually exclusive with description, is_system_provided,
            constant_value, and is_omitted.
          default: ''
        allowed_values_dynamic_variable:
          type: string
          title: Allowed Values Dynamic Variable
          description: >-
            When set, the LLM provides the value but the runtime rejects any
            value not present in the list held by this dynamic variable. Use to
            let the LLM pick from a server-verified set (e.g. the IDs the
            current user is allowed to access). Requires description; mutually
            exclusive with dynamic_variable, is_system_provided, constant_value,
            and is_omitted.
          default: ''
        constant_value:
          anyOf:
            - type: string
            - type: integer
            - type: number
            - type: boolean
            - type: 'null'
          title: Constant Value
          description: >-
            A constant value to use for this property. Mutually exclusive with
            description, dynamic_variable, is_system_provided, and is_omitted.
          default: ''
        is_omitted:
          type: boolean
          title: Is Omitted
          description: >-
            If true, this parameter will be completely omitted from the request.
            Only valid for optional parameters. Mutually exclusive with
            description, dynamic_variable, is_system_provided, and
            constant_value.
          default: false
        llm:
          anyOf:
            - $ref: '#/components/schemas/LLM'
            - type: 'null'
          description: >-
            LLM model to use for this analysis item. If not set, uses agent's
            analysis_llm default.
      type: object
      required:
        - type
      title: AnalysisProperty
      description: >-
        Data collection property with optional per-item LLM override for
        post-call analysis.


        TODO: migrate to composition (value_schema: LiteralJsonSchemaProperty +
        llm) instead of

        inheritance, so this generalizes cleanly to object/array schemas in the
        future.
      example:
        constant_value: ''
        description: My property
        dynamic_variable: ''
        is_system_provided: false
        type: string
    AnalysisScope:
      type: string
      enum:
        - conversation
        - agent
      title: AnalysisScope
      default: conversation
    AgentAnalysisItems:
      properties:
        evaluation_criteria:
          items:
            oneOf:
              - $ref: '#/components/schemas/AttachedUserEvaluationRef'
              - $ref: '#/components/schemas/AttachedSystemEvaluationRef'
            discriminator:
              propertyName: source
              mapping:
                system:
                  $ref: '#/components/schemas/AttachedSystemEvaluationRef'
                user:
                  $ref: '#/components/schemas/AttachedUserEvaluationRef'
          type: array
          title: Evaluation Criteria
        data_collection:
          items:
            oneOf:
              - $ref: '#/components/schemas/AttachedUserDataCollectionRef'
              - $ref: '#/components/schemas/AttachedSystemDataCollectionRef'
            discriminator:
              propertyName: source
              mapping:
                system:
                  $ref: '#/components/schemas/AttachedSystemDataCollectionRef'
                user:
                  $ref: '#/components/schemas/AttachedUserDataCollectionRef'
          type: array
          title: Data Collection
      type: object
      title: AgentAnalysisItems
    ConversationInitiationClientDataConfig:
      properties:
        conversation_config_override:
          $ref: '#/components/schemas/ConversationConfigClientOverrideConfig'
          description: Overrides for the conversation configuration
        custom_llm_extra_body:
          type: boolean
          title: Custom Llm Extra Body
          description: Whether to include custom LLM extra body
          default: false
        enable_conversation_initiation_client_data_from_webhook:
          type: boolean
          title: Enable Conversation Initiation Client Data From Webhook
          description: Whether to enable conversation initiation client data from webhooks
          default: false
        enable_starting_workflow_node_id_from_client:
          type: boolean
          title: Enable Starting Workflow Node Id From Client
          description: >-
            Whether clients may pass starting_workflow_node_id in initiation
            client data; if false, sending it fails conversation start.
          default: false
        enable_procedure_ids_from_client:
          type: boolean
          title: Enable Procedure Ids From Client
          description: >-
            Whether clients may pass procedure_ids in initiation client data to
            select which of the agent's procedures are available for the
            conversation; if false, sending it fails conversation start.
          default: false
      type: object
      title: ConversationInitiationClientDataConfig
      example:
        custom_llm_extra_body: true
        enable_conversation_initiation_client_data_from_webhook: true
        enable_procedure_ids_from_client: true
        enable_starting_workflow_node_id_from_client: true
    AgentWorkspaceOverrides:
      properties:
        conversation_initiation_client_data_webhook:
          anyOf:
            - $ref: '#/components/schemas/ConversationInitiationClientDataWebhook'
            - type: 'null'
          description: The webhook to send conversation initiation client data to
        webhooks:
          $ref: '#/components/schemas/ConvAIWebhooks'
      type: object
      title: AgentWorkspaceOverrides
    AgentTestingSettings:
      properties:
        attached_tests:
          items:
            $ref: '#/components/schemas/AttachedTestModel'
          type: array
          maxItems: 5000
          minItems: 0
          title: Attached Tests
          description: List of test IDs that should be run for this agent
      type: object
      title: AgentTestingSettings
      description: Settings for agent testing configuration.
      example:
        attached_tests:
          - environment: staging
            test_id: test_123
            workflow_node_id: node_abc
          - test_id: test_456
        referenced_tests_ids:
          - test_123
          - test_456
    GuardrailsV1:
      properties:
        version:
          type: string
          const: '1'
          title: Version
          default: '1'
        focus:
          $ref: '#/components/schemas/FocusGuardrail'
        prompt_injection:
          $ref: '#/components/schemas/PromptInjectionGuardrail'
        content:
          $ref: '#/components/schemas/ContentGuardrail'
        moderation:
          anyOf:
            - $ref: '#/components/schemas/ModerationGuardrail'
            - type: 'null'
          x-fern-ignore: true
        custom:
          $ref: '#/components/schemas/CustomGuardrail'
      type: object
      title: GuardrailsV1
    AuthSettings:
      properties:
        enable_auth:
          type: boolean
          title: Enable Auth
          description: >-
            If set to true, starting a conversation with an agent will require a
            signed token
          default: false
        allowlist:
          items:
            $ref: '#/components/schemas/AllowlistItem'
          type: array
          title: Allowlist
          description: >-
            A list of hosts that are allowed to start conversations with the
            agent
        require_origin_header:
          type: boolean
          title: Require Origin Header
          description: >-
            When enabled, connections with no origin header will be rejected. If
            the allowlist is empty, this option has no effect.
          default: false
        shareable_token:
          anyOf:
            - type: string
            - type: 'null'
          title: Shareable Token
          description: >-
            A shareable token that can be used to start a conversation with the
            agent
      type: object
      title: AuthSettings
      example:
        allowlist:
          - hostname: https://example.com
        enable_auth: true
        require_origin_header: true
        shareable_token: '1234567890'
    AgentCallLimits:
      properties:
        agent_concurrency_limit:
          type: integer
          title: Agent Concurrency Limit
          description: >-
            The maximum number of concurrent conversations. -1 indicates that
            there is no maximum
          default: -1
        daily_limit:
          type: integer
          title: Daily Limit
          description: The maximum number of conversations per day
          default: 100000
        bursting_enabled:
          type: boolean
          title: Bursting Enabled
          description: >-
            Whether to enable bursting. If true, exceeding workspace concurrency
            limit will be allowed up to 3 times the limit. Calls will be charged
            at double rate when exceeding the limit.
          default: true
      type: object
      title: AgentCallLimits
      example:
        agent_concurrency_limit: -1
        bursting_enabled: true
        daily_limit: 100000
    PrivacyConfig:
      properties:
        record_voice:
          type: boolean
          title: Record Voice
          description: Whether to record the conversation
          default: true
        retention_days:
          type: integer
          title: Retention Days
          description: >-
            The number of days to retain the conversation. -1 indicates there is
            no retention limit
          default: -1
        delete_transcript_and_pii:
          type: boolean
          title: Delete Transcript And Pii
          description: Whether to delete the transcript and PII
          default: false
        delete_audio:
          type: boolean
          title: Delete Audio
          description: Whether to delete the audio
          default: false
        apply_to_existing_conversations:
          type: boolean
          title: Apply To Existing Conversations
          description: Whether to apply the privacy settings to existing conversations
          default: false
        zero_retention_mode:
          type: boolean
          title: Zero Retention Mode
          description: Whether to enable zero retention mode - no PII data is stored
          default: false
        conversation_history_redaction:
          $ref: '#/components/schemas/ConversationHistoryRedactionConfig'
          description: Config for PII redaction in the conversation history
      type: object
      title: PrivacyConfig
      example:
        apply_to_existing_conversations: false
        delete_audio: false
        delete_transcript_and_pii: false
        record_voice: true
        retention_days: -1
        zero_retention_mode: false
    AgentTrustContext:
      type: string
      enum:
        - unknown
        - low
        - high
      title: AgentTrustContext
      description: >-
        The trust context in which the agent operates.


        UNKNOWN: not yet classified (existing agents created before this
        feature).

        LOW: serves untrusted external participants (e.g. customer support,
        sales) —
             outputs should be vetted and tool access scoped.
        HIGH: serves the owner (e.g. personal assistant) — full tool access is
        appropriate.
    LLM:
      type: string
      enum:
        - gpt-4o-mini
        - gpt-4o
        - gpt-4
        - gpt-4-turbo
        - gpt-4.1
        - gpt-4.1-mini
        - gpt-4.1-nano
        - gpt-5
        - gpt-5.1
        - gpt-5.2
        - gpt-5.2-chat-latest
        - gpt-5.4
        - gpt-5.5
        - gpt-5.6-sol
        - gpt-5.6-terra
        - gpt-5.6-luna
        - gpt-5-mini
        - gpt-5-nano
        - gpt-3.5-turbo
        - gemini-1.5-pro
        - gemini-1.5-flash
        - gemini-2.0-flash
        - gemini-2.0-flash-lite
        - gemini-2.5-flash-lite
        - gemini-2.5-flash
        - gemini-3-pro-preview
        - gemini-3-flash-preview
        - gemini-3.1-pro-preview
        - gemini-3.1-flash-lite-preview
        - gemini-3.6-flash
        - gemini-3.7-flash
        - claude-sonnet-4-5
        - claude-opus-4-7
        - claude-sonnet-4-6
        - claude-sonnet-4
        - claude-haiku-4-5
        - claude-3-7-sonnet
        - claude-3-5-sonnet
        - claude-3-5-sonnet-v1
        - claude-3-haiku
        - grok-beta
        - custom-llm
        - qwen3-4b
        - qwen3-30b-a3b
        - qwen36-35b-a3b
        - gpt-oss-20b
        - gpt-oss-120b
        - glm-45-air-fp8
        - gemini-2.5-flash-preview-09-2025
        - gemini-2.5-flash-lite-preview-09-2025
        - gemini-2.5-flash-preview-05-20
        - gemini-2.5-flash-preview-04-17
        - gemini-2.5-flash-lite-preview-06-17
        - gemini-2.0-flash-lite-001
        - gemini-2.0-flash-001
        - gemini-1.5-flash-002
        - gemini-1.5-flash-001
        - gemini-1.5-pro-002
        - gemini-1.5-pro-001
        - claude-sonnet-4@20250514
        - claude-sonnet-4-5@20250929
        - claude-haiku-4-5@20251001
        - claude-3-7-sonnet@20250219
        - claude-3-5-sonnet@20240620
        - claude-3-5-sonnet-v2@20241022
        - claude-3-haiku@20240307
        - gpt-5-2025-08-07
        - gpt-5.1-2025-11-13
        - gpt-5.2-2025-12-11
        - gpt-5.4-2026-03-05
        - gpt-5.5-2026-04-23
        - gpt-5-mini-2025-08-07
        - gpt-5-nano-2025-08-07
        - gpt-4.1-2025-04-14
        - gpt-4.1-mini-2025-04-14
        - gpt-4.1-nano-2025-04-14
        - gpt-4o-mini-2024-07-18
        - gpt-4o-2024-11-20
        - gpt-4o-2024-08-06
        - gpt-4o-2024-05-13
        - gpt-4-0613
        - gpt-4-0314
        - gpt-4-turbo-2024-04-09
        - gpt-3.5-turbo-0125
        - gpt-3.5-turbo-1106
        - watt-tool-8b
        - watt-tool-70b
      title: LLM
    TopicDiscoverySettings:
      properties: {}
      type: object
      title: TopicDiscoverySettings
      description: |-
        Per-agent topic-discovery configuration. Cadence and analysis window are
        managed internally; this only exposes the customer-facing on/off toggle.
    SentimentAnalysisSettings:
      properties: {}
      type: object
      title: SentimentAnalysisSettings
      description: Per-agent post-call sentiment analysis configuration.
    AlertingSettingsResponse:
      properties:
        monitor_configs:
          additionalProperties:
            $ref: '#/components/schemas/AlertingMonitorConfig'
          type: object
          title: Monitor Configs
        auto_resolve_after_inactive_minutes:
          anyOf:
            - type: integer
            - type: 'null'
          title: Auto Resolve After Inactive Minutes
        notifiers:
          items:
            oneOf:
              - $ref: '#/components/schemas/AlertingWebhookNotifierResponse'
              - $ref: '#/components/schemas/AlertingIntegrationNotifierResponse'
            discriminator:
              propertyName: type
              mapping:
                integration:
                  $ref: '#/components/schemas/AlertingIntegrationNotifierResponse'
                webhook:
                  $ref: '#/components/schemas/AlertingWebhookNotifierResponse'
          type: array
          title: Notifiers
      type: object
      title: AlertingSettingsResponse
      description: >-
        Customer-facing view of alerting settings. Unlike
        AdminAlertingSettingsResponse,

        it has no internal_notifiers field: those are ElevenLabs-internal
        delivery

        channels whose URLs must never be returned outside the admin API.
    SafetyResponseModel:
      properties:
        is_blocked_ivc:
          type: boolean
          title: Is Blocked Ivc
          default: false
        is_blocked_non_ivc:
          type: boolean
          title: Is Blocked Non Ivc
          default: false
        ignore_safety_evaluation:
          type: boolean
          title: Ignore Safety Evaluation
          default: false
      type: object
      title: SafetyResponseModel
    PhoneNumberAgentInfo:
      properties:
        agent_id:
          type: string
          title: Agent Id
          description: The ID of the agent
        agent_name:
          type: string
          title: Agent Name
          description: The name of the agent
        environment:
          anyOf:
            - type: string
            - type: 'null'
          title: Environment
          description: >-
            Environment to use for resolving environment variables on calls to
            this number.
        branch_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Branch Id
          description: Agent branch to use for calls to this number.
      type: object
      required:
        - agent_id
        - agent_name
      title: PhoneNumberAgentInfo
      example:
        agent_id: F3Pbu5gP6NNKBscdCdwB
        agent_name: My Agent
    PhoneNumberFulfillmentProvider:
      type: string
      enum:
        - twilio
        - exotel
      title: PhoneNumberFulfillmentProvider
    GetPhoneNumberOutboundSIPTrunkConfigResponseModel:
      properties:
        address:
          type: string
          title: Address
          description: Hostname or IP the SIP INVITE is sent to
        transport:
          $ref: '#/components/schemas/SIPTrunkTransportEnum'
          description: Protocol to use for SIP transport
        media_encryption:
          $ref: '#/components/schemas/SIPMediaEncryptionEnum'
          description: Whether or not to encrypt media (data layer).
        headers:
          additionalProperties:
            type: string
          type: object
          title: Headers
          description: SIP headers for INVITE request
        attributes_to_headers:
          additionalProperties:
            type: string
          type: object
          title: Attributes To Headers
          description: >-
            Map of dynamic variable name to header name for
            attributes_to_headers
        has_auth_credentials:
          type: boolean
          title: Has Auth Credentials
          description: Whether authentication credentials are configured
        username:
          anyOf:
            - type: string
            - type: 'null'
          title: Username
          description: SIP trunk username (if available)
        has_outbound_trunk:
          type: boolean
          title: Has Outbound Trunk
          description: Whether a LiveKit SIP outbound trunk is configured
          default: false
        enabled_codecs:
          items:
            $ref: '#/components/schemas/MediaCodec'
          type: array
          title: Enabled Codecs
          description: >-
            Media codecs that are offered in the SDP for outbound calls. If
            empty, all supported codecs are offered.
      type: object
      required:
        - address
        - transport
        - media_encryption
        - has_auth_credentials
      title: GetPhoneNumberOutboundSIPTrunkConfigResponseModel
      description: SIP Trunk configuration details for a phone number
    GetPhoneNumberInboundSIPTrunkConfigResponseModel:
      properties:
        allowed_addresses:
          items:
            type: string
          type: array
          title: Allowed Addresses
          description: >-
            List of IP addresses that are allowed to use the trunk. Each item in
            the list can be an individual IP address or a Classless Inter-Domain
            Routing notation representing a CIDR block.
        allowed_numbers:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Allowed Numbers
          description: List of phone numbers that are allowed to use the trunk.
        media_encryption:
          $ref: '#/components/schemas/SIPMediaEncryptionEnum'
        has_auth_credentials:
          type: boolean
          title: Has Auth Credentials
          description: Whether authentication credentials are configured
        username:
          anyOf:
            - type: string
            - type: 'null'
          title: Username
          description: SIP trunk username (if available)
        remote_domains:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Remote Domains
          description: Domains of remote SIP servers used to validate TLS certificates.
        attributes_to_headers:
          additionalProperties:
            type: string
          type: object
          title: Attributes To Headers
          description: >-
            Map of dynamic variable name to header name for
            attributes_to_headers
      type: object
      required:
        - allowed_addresses
        - allowed_numbers
        - media_encryption
        - has_auth_credentials
      title: GetPhoneNumberInboundSIPTrunkConfigResponseModel
    LivekitStackType:
      type: string
      enum:
        - standard
        - static
      title: LivekitStackType
    WhatsAppRegistrationStatus:
      type: string
      enum:
        - UNKNOWN
        - REGISTERING
        - REGISTERED
        - UNCERTAIN
        - ACTION_REQUIRED
      title: WhatsAppRegistrationStatus
    WorkflowEdgeModel-Output:
      properties:
        source:
          type: string
          title: Source
          description: ID of the source node.
        target:
          type: string
          title: Target
          description: ID of the target node.
        forward_condition:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/WorkflowUnconditionalModel'
                  description: Condition that is always true.
                - $ref: '#/components/schemas/WorkflowLLMConditionModel'
                  description: >-
                    Condition described using human language and evaluated by an
                    LLM.
                - $ref: '#/components/schemas/WorkflowResultConditionModel'
                  description: >-
                    Condition based on the result of the last executed tool
                    dispatch node.
                - $ref: '#/components/schemas/WorkflowExpressionConditionModel-Output'
                  description: Condition described using a deterministic expression.
              discriminator:
                propertyName: type
                mapping:
                  expression:
                    $ref: >-
                      #/components/schemas/WorkflowExpressionConditionModel-Output
                  llm:
                    $ref: '#/components/schemas/WorkflowLLMConditionModel'
                  result:
                    $ref: '#/components/schemas/WorkflowResultConditionModel'
                  unconditional:
                    $ref: '#/components/schemas/WorkflowUnconditionalModel'
            - type: 'null'
          title: Forward Condition
          description: >-
            Condition that must be met for the edge to be traversed in the
            forward direction (source to target).
        backward_condition:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/WorkflowUnconditionalModel'
                  description: Condition that is always true.
                - $ref: '#/components/schemas/WorkflowLLMConditionModel'
                  description: >-
                    Condition described using human language and evaluated by an
                    LLM.
                - $ref: '#/components/schemas/WorkflowResultConditionModel'
                  description: >-
                    Condition based on the result of the last executed tool
                    dispatch node.
                - $ref: '#/components/schemas/WorkflowExpressionConditionModel-Output'
                  description: Condition described using a deterministic expression.
              discriminator:
                propertyName: type
                mapping:
                  expression:
                    $ref: >-
                      #/components/schemas/WorkflowExpressionConditionModel-Output
                  llm:
                    $ref: '#/components/schemas/WorkflowLLMConditionModel'
                  result:
                    $ref: '#/components/schemas/WorkflowResultConditionModel'
                  unconditional:
                    $ref: '#/components/schemas/WorkflowUnconditionalModel'
            - type: 'null'
          title: Backward Condition
          description: >-
            Condition that must be met for the edge to be traversed in the
            backward direction (target to source).
      type: object
      required:
        - source
        - target
      title: WorkflowEdgeModel
    WorkflowStartNodeModel-Output:
      properties:
        type:
          type: string
          const: start
          title: Type
          default: start
        position:
          $ref: '#/components/schemas/Position-Output'
          description: Position of the node in the workflow.
        edge_order:
          items:
            type: string
          type: array
          title: Edge Order
          description: The ids of outgoing edges in the order they should be evaluated.
      type: object
      required:
        - type
        - position
        - edge_order
      title: WorkflowStartNodeModel
    WorkflowEndNodeModel-Output:
      properties:
        type:
          type: string
          const: end
          title: Type
          default: end
        position:
          $ref: '#/components/schemas/Position-Output'
          description: Position of the node in the workflow.
        edge_order:
          items:
            type: string
          type: array
          title: Edge Order
          description: The ids of outgoing edges in the order they should be evaluated.
      type: object
      required:
        - type
        - position
        - edge_order
      title: WorkflowEndNodeModel
    WorkflowPhoneNumberNodeModel-Output:
      properties:
        custom_sip_headers:
          items:
            oneOf:
              - $ref: '#/components/schemas/CustomSIPHeader'
              - $ref: '#/components/schemas/CustomSIPHeaderWithDynamicVariable'
            discriminator:
              propertyName: type
              mapping:
                dynamic:
                  $ref: '#/components/schemas/CustomSIPHeaderWithDynamicVariable'
                static:
                  $ref: '#/components/schemas/CustomSIPHeader'
          type: array
          maxItems: 20
          title: Custom Sip Headers
          description: >-
            Custom SIP headers to include when transferring the call. Each
            header can be either a static value or a dynamic variable reference.
        transfer_destination:
          oneOf:
            - $ref: '#/components/schemas/PhoneNumberTransferDestination'
            - $ref: '#/components/schemas/SIPUriTransferDestination'
            - $ref: >-
                #/components/schemas/PhoneNumberDynamicVariableTransferDestination
            - $ref: '#/components/schemas/SIPUriDynamicVariableTransferDestination'
          title: Transfer Destination
          discriminator:
            propertyName: type
            mapping:
              phone:
                $ref: '#/components/schemas/PhoneNumberTransferDestination'
              phone_dynamic_variable:
                $ref: >-
                  #/components/schemas/PhoneNumberDynamicVariableTransferDestination
              sip_uri:
                $ref: '#/components/schemas/SIPUriTransferDestination'
              sip_uri_dynamic_variable:
                $ref: '#/components/schemas/SIPUriDynamicVariableTransferDestination'
        transfer_type:
          $ref: '#/components/schemas/TransferTypeEnum'
          default: conference
        sip_refer_play_dialtone:
          type: boolean
          title: Sip Refer Play Dialtone
          description: >-
            When True, a ringing tone is played on the original call leg while a
            SIP REFER transfer completes. The tone is carried over RTP to the
            SIP peer executing the REFER, so disable this if the receiving
            system (e.g. an SBC or contact center) should not hear it. When
            disabled the caller hears silence until the transfer completes. SIP
            REFER transfers only.
          default: true
        uui:
          anyOf:
            - $ref: '#/components/schemas/UUITransferConfig'
            - type: 'null'
          description: >-
            User-to-User Information (RFC 7433) to attach to SIP REFER
            transfers. Carries call context such as CRM identifiers or
            escalation reason across the transfer boundary.
        post_dial_digits:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/PostDialDigitsStatic'
                - $ref: '#/components/schemas/PostDialDigitsDynamicVariable'
              discriminator:
                propertyName: type
                mapping:
                  dynamic:
                    $ref: '#/components/schemas/PostDialDigitsDynamicVariable'
                  static:
                    $ref: '#/components/schemas/PostDialDigitsStatic'
            - type: 'null'
          title: Post Dial Digits
          description: >-
            DTMF digits to send after call connects (e.g., 'ww1234' for
            extension). Can be either a static value or a dynamic variable
            reference. Use 'w' for 0.5s pause. Only supported for Twilio
            transfers.
        type:
          type: string
          const: phone_number
          title: Type
          default: phone_number
        position:
          $ref: '#/components/schemas/Position-Output'
          description: Position of the node in the workflow.
        edge_order:
          items:
            type: string
          type: array
          title: Edge Order
          description: The ids of outgoing edges in the order they should be evaluated.
      type: object
      required:
        - custom_sip_headers
        - transfer_destination
        - transfer_type
        - sip_refer_play_dialtone
        - uui
        - post_dial_digits
        - type
        - position
        - edge_order
      title: WorkflowPhoneNumberNodeModel
    WorkflowOverrideAgentNodeModel-Output:
      properties:
        type:
          type: string
          const: override_agent
          title: Type
          default: override_agent
        position:
          $ref: '#/components/schemas/Position-Output'
          description: Position of the node in the workflow.
        edge_order:
          items:
            type: string
          type: array
          title: Edge Order
          description: The ids of outgoing edges in the order they should be evaluated.
        conversation_config:
          $ref: >-
            #/components/schemas/ConversationalConfigAPIModelWorkflowOverride-Output
          description: >-
            Configuration overrides applied while the subagent is conducting the
            conversation.
        additional_prompt:
          type: string
          title: Additional Prompt
          description: >-
            Specific goal for this subagent. It will be added to the system
            prompt and can be used to further refine the agent's behavior in
            this specific context.
        additional_knowledge_base:
          items:
            $ref: '#/components/schemas/KnowledgeBaseLocator'
          type: array
          title: Additional Knowledge Base
          description: >-
            Additional knowledge base documents that the subagent has access to.
            These will be used in addition to the main agent's documents.
        additional_tool_ids:
          items:
            type: string
          type: array
          title: Additional Tool Ids
          description: >-
            IDs of additional tools that the subagent has access to. These will
            be used in addition to the main agent's tools.
        label:
          type: string
          title: Label
          description: Human-readable label for the node used throughout the UI.
        entry_behavior:
          $ref: '#/components/schemas/EntryBehavior'
          description: >-
            Dictates whether this node should immediately generate a response
            upon entry or wait for the user input. When set to "auto", the
            behavior will be decided based on the type of the preceding node:
            "wait_for_user" after the "say" and "start" nodes and
            "generate_immediately" otherwise.
          default: auto
      type: object
      required:
        - type
        - position
        - edge_order
        - conversation_config
        - additional_prompt
        - additional_knowledge_base
        - additional_tool_ids
        - label
        - entry_behavior
      title: WorkflowOverrideAgentNodeModel
    WorkflowStandaloneAgentNodeModel-Output:
      properties:
        type:
          type: string
          const: standalone_agent
          title: Type
          default: standalone_agent
        position:
          $ref: '#/components/schemas/Position-Output'
          description: Position of the node in the workflow.
        edge_order:
          items:
            type: string
          type: array
          title: Edge Order
          description: The ids of outgoing edges in the order they should be evaluated.
        agent_id:
          type: string
          title: Agent Id
          description: The ID of the agent to transfer the conversation to.
        delay_ms:
          type: integer
          title: Delay Ms
          description: >-
            Artificial delay in milliseconds applied before transferring the
            conversation.
          default: 0
        transfer_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Transfer Message
          description: Optional message sent to the user before the transfer is initiated.
        enable_transferred_agent_first_message:
          type: boolean
          title: Enable Transferred Agent First Message
          description: >-
            Whether to enable the transferred agent to send its configured first
            message after the transfer.
          default: false
      type: object
      required:
        - type
        - position
        - edge_order
        - agent_id
        - delay_ms
        - transfer_message
        - enable_transferred_agent_first_message
      title: WorkflowStandaloneAgentNodeModel
    WorkflowToolNodeModel-Output:
      properties:
        type:
          type: string
          const: tool
          title: Type
          default: tool
        position:
          $ref: '#/components/schemas/Position-Output'
          description: Position of the node in the workflow.
        edge_order:
          items:
            type: string
          type: array
          title: Edge Order
          description: The ids of outgoing edges in the order they should be evaluated.
        tools:
          items:
            $ref: '#/components/schemas/WorkflowToolLocator'
          type: array
          title: Tools
          description: >-
            List of tools to execute in parallel. The entire node is considered
            successful if all tools are executed successfully.
      type: object
      required:
        - type
        - position
        - edge_order
        - tools
      title: WorkflowToolNodeModel
    TurnMode:
      type: string
      enum:
        - silence
        - turn
      title: TurnMode
    TurnEagerness:
      type: string
      enum:
        - patient
        - normal
        - eager
      title: TurnEagerness
    SpellingPatience:
      type: string
      enum:
        - auto
        - 'off'
      title: SpellingPatience
    TurnModel:
      type: string
      enum:
        - turn_v2
        - turn_v3
      title: TurnModel
    SoftTimeoutConfigWorkflowOverride:
      properties:
        timeout_seconds:
          anyOf:
            - type: number
            - type: 'null'
          title: Timeout Seconds
          description: >-
            Time in seconds before showing the predefined message while waiting
            for LLM response. Set to -1 to disable.
        message:
          anyOf:
            - type: string
            - type: 'null'
          title: Message
          description: >-
            Message to show when the first soft timeout is reached while waiting
            for LLM response. Supports dynamic variables (e.g.,
            {{system__time}}, {{custom_variable}}).
          x-convai-client-override: true
          x-convai-language-override: true
        additional_soft_timeout_messages:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Additional Soft Timeout Messages
          description: >-
            Extra static filler messages for subsequent soft timeouts in the
            same LLM generation. The first timeout uses `message`. If fewer
            messages are configured than `max_soft_timeouts_per_generation`, the
            last configured message is repeated; otherwise a built-in filler is
            used.
          x-convai-client-override: true
          x-convai-language-override: true
        use_llm_generated_message:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Use Llm Generated Message
          description: >-
            If enabled, the soft timeout message will be generated dynamically
            instead of using the static message.
        randomize_fillers:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Randomize Fillers
          description: >-
            If enabled, shuffle the order of static soft timeout messages once
            at the start of each turn. Only applies when
            use_llm_generated_message is false.
        max_soft_timeouts_per_generation:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Soft Timeouts Per Generation
          description: >-
            Maximum filler messages while waiting for a single LLM response.
            Fires every timeout_seconds until the LLM streams content or this
            limit is reached.
        llm_generated_message_prompt_override:
          anyOf:
            - type: string
            - type: 'null'
          title: Llm Generated Message Prompt Override
          description: >-
            Custom prompt for generating the soft timeout filler message when
            use_llm_generated_message is enabled. Recent conversation context is
            provided as a separate user message. If not set, the default prompt
            will be used. Supports dynamic variables (e.g., {{system__time}},
            {{custom_variable}}).
          examples:
            - >-
              Output a SHORT neutral filler phrase (1-4 words MAX) acknowledging
              you heard the user.
        disable_until_first_user_message:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Disable Until First User Message
          description: >-
            When true, soft timeout fillers are suppressed until the
            conversation has at least one real user message. Prevents fillers
            during the agent's opening turn (e.g. workflow generate-immediately
            / tool calls before the user speaks).
      type: object
      title: SoftTimeoutConfigWorkflowOverride
      example:
        message: Hhmmmm...yeah.
        timeout_seconds: -1
        use_llm_generated_message: false
    TTSPerformance:
      type: string
      enum:
        - latency
        - quality
      title: TTSPerformance
      description: |-
        User-facing TTS performance tier. Decouples the UI from vendor names.

        latency  -> optimized for response speed (currently Cartesia Sonic).
        quality  -> optimized for expressiveness (currently ElevenLabs v3).
    PydanticPronunciationDictionaryVersionLocator:
      properties:
        pronunciation_dictionary_id:
          type: string
          title: Pronunciation Dictionary Id
          description: The ID of the pronunciation dictionary
        version_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Version Id
          description: The ID of the version of the pronunciation dictionary
      type: object
      required:
        - pronunciation_dictionary_id
        - version_id
      title: PydanticPronunciationDictionaryVersionLocator
      description: >-
        A locator for other documents to be able to reference a specific
        dictionary and it's version.

        This is a pydantic version of
        PronunciationDictionaryVersionLocatorDBModel.

        Required to ensure compat with the rest of the agent data models.
    CartesiaSonic36LiveKitInferenceTTSOptions:
      properties:
        adapter_contract:
          type: string
          const: livekit_inference_cartesia_sonic_3_6_2026_08_27_v1
          title: Adapter Contract
          default: livekit_inference_cartesia_sonic_3_6_2026_08_27_v1
        speed:
          anyOf:
            - $ref: '#/components/schemas/CartesiaSpeedPreset'
            - type: number
              maximum: 1.5
              minimum: 0.6
            - type: 'null'
          title: Speed
        volume:
          anyOf:
            - type: number
              maximum: 2
              minimum: 0.5
            - type: 'null'
          title: Volume
        emotion:
          anyOf:
            - $ref: '#/components/schemas/CartesiaEmotion'
            - type: 'null'
        duration_seconds:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: 'null'
          title: Duration Seconds
        max_buffer_delay_ms:
          anyOf:
            - type: integer
              minimum: 0
            - type: 'null'
          title: Max Buffer Delay Ms
        add_timestamps:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Add Timestamps
        add_phoneme_timestamps:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Add Phoneme Timestamps
        use_normalized_timestamps:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Use Normalized Timestamps
      additionalProperties: false
      type: object
      title: CartesiaSonic36LiveKitInferenceTTSOptions
      description: Options for the pinned Sonic 3.6 LiveKit Inference variant.
    SarvamBulbulV3LiveKitPluginTTSOptions:
      properties:
        adapter_contract:
          type: string
          const: livekit_plugin_python_sarvam_bulbul_v3_v1
          title: Adapter Contract
          default: livekit_plugin_python_sarvam_bulbul_v3_v1
        pace:
          anyOf:
            - type: number
              maximum: 2
              minimum: 0.5
            - type: 'null'
          title: Pace
        temperature:
          anyOf:
            - type: number
              maximum: 1
              minimum: 0.01
            - type: 'null'
          title: Temperature
        min_buffer_size:
          anyOf:
            - type: integer
              maximum: 200
              minimum: 30
            - type: 'null'
          title: Min Buffer Size
        max_chunk_length:
          anyOf:
            - type: integer
              maximum: 500
              minimum: 50
            - type: 'null'
          title: Max Chunk Length
      additionalProperties: false
      type: object
      title: SarvamBulbulV3LiveKitPluginTTSOptions
      description: User-facing Bulbul v3 controls compiled to the LiveKit Python plugin.
    ClientEvent:
      type: string
      enum:
        - conversation_initiation_metadata
        - asr_initiation_metadata
        - ping
        - audio
        - interruption
        - user_transcript
        - tentative_user_transcript
        - agent_response
        - agent_response_correction
        - client_tool_call
        - mcp_tool_call
        - mcp_connection_status
        - agent_tool_request
        - agent_tool_response
        - agent_tool_response_full_payload
        - agent_response_metadata
        - vad_score
        - agent_chat_response_part
        - client_error
        - guardrail_triggered
        - dtmf_request
        - agent_response_complete
        - context_usage
        - internal_turn_probability
        - internal_tentative_agent_response
      title: ClientEvent
    FileInputConfigWorkflowOverride:
      properties:
        enabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enabled
          description: >-
            When enabled, users may attach images or PDFs in chat when the LLM
            supports multimodal input.
        max_files_in_memory:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Files In Memory
          description: >-
            Number of most-recent files kept in memory during a conversation.
            Older files are summarized and their bytes freed.
        max_files_per_conversation:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Files Per Conversation
          description: >-
            Total files a user can upload in one conversation. Uploads are
            billed per file. Use -1 for no limit, or a value >=
            max_files_in_memory.
      type: object
      title: FileInputConfigWorkflowOverride
    DTMFInputConfig:
      properties:
        dtmf_input_timeout:
          type: number
          maximum: 10
          minimum: 0.5
          title: Dtmf Input Timeout
          description: Timeout in seconds to wait for additional DTMF digits
          default: 2
        hash_terminator:
          type: boolean
          title: Hash Terminator
          description: 'If true, pressing # immediately completes DTMF input'
          default: true
        redact_input:
          type: boolean
          title: Redact Input
          description: >-
            If true, replace the caller's DTMF (keypad) entries with a redaction
            marker in the transcript, conversation log and analysis. Digits the
            agent repeats back or passes to a tool are not affected.
          default: false
      type: object
      title: DTMFInputConfig
      description: Configuration for DTMF (keypad) input collection during phone calls.
    BackgroundSoundConfigWorkflowOverride:
      properties:
        source_type:
          anyOf:
            - $ref: '#/components/schemas/BackgroundSoundSourceType'
            - type: 'null'
          description: The type of background sound source.
        source_id:
          anyOf:
            - $ref: '#/components/schemas/BackgroundSoundPresetId'
            - type: 'null'
          description: Identifier for the sound source.
        volume:
          anyOf:
            - type: number
            - type: 'null'
          title: Volume
          description: Volume level for background sound (0.01 to 1.0).
        crossfade_loop:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Crossfade Loop
          description: >-
            Apply a crossfade at the loop boundary to avoid audible pops when
            the sound loops.
      type: object
      title: BackgroundSoundConfigWorkflowOverride
    ConversationConfigClientOverride:
      properties:
        turn:
          anyOf:
            - $ref: '#/components/schemas/TurnConfigOverride'
            - type: 'null'
          description: Configuration for turn detection
        tts:
          anyOf:
            - $ref: '#/components/schemas/TTSConversationalConfigOverride'
            - type: 'null'
          description: Configuration for conversational text to speech
        conversation:
          anyOf:
            - $ref: '#/components/schemas/ConversationConfigOverride'
            - type: 'null'
          description: Configuration for conversational events
        agent:
          anyOf:
            - $ref: '#/components/schemas/AgentConfigOverride'
            - type: 'null'
          description: Agent specific configuration
      type: object
      title: ConversationConfigClientOverride
      example:
        agent:
          first_message: Hello, how can I help you today?
          language: en
          prompt:
            knowledge_base: []
            llm: gemini-2.0-flash-001
            prompt: >-
              You are a helpful assistant that can answer questions about the
              topic of the conversation.
            tool_ids: []
        tts:
          performance: latency
          voice_id: ME9RtCnWp5vX2LhJdF3k
    LanguagePresetTranslation:
      properties:
        source_hash:
          type: string
          title: Source Hash
        text:
          type: string
          title: Text
      type: object
      required:
        - source_hash
        - text
      title: LanguagePresetTranslation
    DynamicVariablesConfigWorkflowOverride-Input:
      properties:
        dynamic_variable_placeholders:
          anyOf:
            - additionalProperties:
                $ref: '#/components/schemas/DynamicVariableValueType-Input'
              type: object
            - type: 'null'
          title: Dynamic Variable Placeholders
          description: A dictionary of dynamic variable placeholders and their values
      type: object
      title: DynamicVariablesConfigWorkflowOverride
      example:
        dynamic_variable_placeholders:
          user_name: John Doe
    BehaviorOverride:
      properties:
        verbosity:
          anyOf:
            - $ref: '#/components/schemas/Verbosity'
            - type: 'null'
          description: Verbosity override. Underlying default applies when unset.
        output_format:
          anyOf:
            - $ref: '#/components/schemas/OutputFormat'
            - type: 'null'
          description: Output format override. Underlying default applies when unset.
        interaction_budget:
          anyOf:
            - $ref: '#/components/schemas/InteractionBudget'
            - type: 'null'
          description: Interaction budget override. Underlying default applies when unset.
      type: object
      title: BehaviorOverride
    PromptAgentAPIModelWorkflowOverride-Input:
      properties:
        prompt:
          anyOf:
            - type: string
            - type: 'null'
          title: Prompt
          description: The prompt for the agent
          x-convai-client-override: true
        llm:
          anyOf:
            - $ref: '#/components/schemas/LLM'
            - type: 'null'
          description: >-
            The LLM to query with the prompt and the chat history. If using data
            residency, the LLM must be supported in the data residency
            environment
          x-convai-client-override: true
        reasoning_effort:
          anyOf:
            - $ref: '#/components/schemas/LLMReasoningEffort'
            - type: 'null'
          description: Reasoning effort of the model. Only available for some models.
        thinking_budget:
          anyOf:
            - type: integer
            - type: 'null'
          title: Thinking Budget
          description: >-
            Max number of tokens used for thinking. Use 0 to turn off if
            supported by the model.
        enable_reasoning_summary:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enable Reasoning Summary
          description: >-
            Enable model reasoning summaries. When disabled, we do not request
            summaries from provider if possible for faster TTFB. Not ZRM
            compatible.
        temperature:
          anyOf:
            - type: number
            - type: 'null'
          title: Temperature
          description: >-
            The temperature for the LLM. Defaults to 0. Set to null to omit the
            parameter from the LLM request entirely (useful for custom LLMs that
            reject the temperature field).
        max_tokens:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Tokens
          description: If greater than 0, maximum number of tokens the LLM can predict
        tool_ids:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Tool Ids
          description: A list of IDs of tools used by the agent
          x-convai-client-override: true
        built_in_tools:
          anyOf:
            - $ref: '#/components/schemas/BuiltInToolsWorkflowOverride'
            - type: 'null'
          description: Built-in system tools to be used by the agent
        mcp_server_ids:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Mcp Server Ids
          description: A list of MCP server ids to be used by the agent
        native_mcp_server_ids:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Native Mcp Server Ids
          description: A list of Native MCP server ids to be used by the agent
          x-convai-client-override: true
        knowledge_base:
          anyOf:
            - items:
                $ref: '#/components/schemas/KnowledgeBaseLocator'
              type: array
            - type: 'null'
          title: Knowledge Base
          description: A list of knowledge bases to be used by the agent
          x-convai-client-override: true
        custom_llm:
          anyOf:
            - $ref: '#/components/schemas/CustomLLM'
            - type: 'null'
          description: Definition for a custom LLM if LLM field is set to 'CUSTOM_LLM'
        ignore_default_personality:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Ignore Default Personality
          description: >-
            Whether to remove the default personality lines from the system
            prompt
        rag:
          anyOf:
            - $ref: '#/components/schemas/RagConfigWorkflowOverride'
            - type: 'null'
          description: Configuration for RAG
        timezone:
          anyOf:
            - type: string
            - type: 'null'
          title: Timezone
          description: >-
            Timezone for displaying current time in system prompt. If set, the
            current time will be included in the system prompt using this
            timezone. Must be a valid timezone name (e.g., 'America/New_York',
            'Europe/London', 'UTC'). Recommended for accurate time-aware
            responses; without this, the agent has no knowledge of the current
            date/time unless you provide it via dynamic variables or tools,
            which can lead to incorrect or hallucinated time references.
        backup_llm_config:
          anyOf:
            - $ref: '#/components/schemas/BackupLLMDefault'
            - $ref: '#/components/schemas/BackupLLMDisabled'
            - $ref: '#/components/schemas/BackupLLMOverride'
            - type: 'null'
          title: Backup Llm Config
          description: >-
            Configuration for backup LLM cascading. Can be disabled, use system
            defaults, or specify custom order.
        cascade_timeout_seconds:
          anyOf:
            - type: number
            - type: 'null'
          title: Cascade Timeout Seconds
          description: >-
            Time in seconds before cascading to backup LLM. Must be between 2
            and 15 seconds.
        tools:
          anyOf:
            - items:
                oneOf:
                  - $ref: '#/components/schemas/WebhookToolConfig-Input'
                  - $ref: '#/components/schemas/ClientToolConfig-Input'
                  - $ref: '#/components/schemas/SystemToolConfig'
                  - $ref: '#/components/schemas/MCPToolConfig-Input'
                  - $ref: '#/components/schemas/ApiIntegrationWebhookToolConfig-Input'
                  - $ref: '#/components/schemas/SMBToolConfig'
                description: The type of tool
                discriminator:
                  propertyName: type
                  mapping:
                    api_integration_webhook:
                      $ref: >-
                        #/components/schemas/ApiIntegrationWebhookToolConfig-Input
                    client:
                      $ref: '#/components/schemas/ClientToolConfig-Input'
                    mcp:
                      $ref: '#/components/schemas/MCPToolConfig-Input'
                    smb:
                      $ref: '#/components/schemas/SMBToolConfig'
                    system:
                      $ref: '#/components/schemas/SystemToolConfig'
                    webhook:
                      $ref: '#/components/schemas/WebhookToolConfig-Input'
              type: array
            - type: 'null'
          title: Tools
          description: >-
            A list of tools that the agent can use over the course of the
            conversation, use tool_ids instead
      type: object
      title: PromptAgentAPIModelWorkflowOverride
      example:
        knowledge_base: []
        llm: gemini-2.0-flash-001
        max_tokens: -1
        prompt: >-
          You are a helpful assistant that can answer questions about the topic
          of the conversation.
        temperature: 0
        tool_ids: []
        tools: []
    ASRFixedRecognition:
      properties:
        mode:
          type: string
          const: fixed
          title: Mode
          default: fixed
      additionalProperties: false
      type: object
      title: ASRFixedRecognition
      description: Recognize the agent's configured base language.
    ASRAutomaticAgentLanguagesRecognition:
      properties:
        mode:
          type: string
          const: automatic_agent_languages
          title: Mode
          default: automatic_agent_languages
      additionalProperties: false
      type: object
      title: ASRAutomaticAgentLanguagesRecognition
      description: Detect only among the base language and configured language presets.
    ASRAutomaticProviderLanguagesRecognition:
      properties:
        mode:
          type: string
          const: automatic_provider_languages
          title: Mode
          default: automatic_provider_languages
      additionalProperties: false
      type: object
      title: ASRAutomaticProviderLanguagesRecognition
      description: Allow detection across every language supported by the resolved route.
    ASRTranscriptTask:
      type: string
      enum:
        - transcribe
        - translate
        - verbatim
        - transliterate
        - code_mixed
      title: ASRTranscriptTask
    CartesiaInk2LiveKitInferenceASROptions:
      properties:
        adapter_contract:
          type: string
          const: livekit_inference_cartesia_ink_2_v1
          title: Adapter Contract
          default: livekit_inference_cartesia_ink_2_v1
        turn_start_threshold:
          anyOf:
            - type: number
              maximum: 0.9
              minimum: 0.5
            - type: 'null'
          title: Turn Start Threshold
        turn_eager_end_threshold:
          anyOf:
            - type: number
              maximum: 0.6
              minimum: 0.3
            - type: 'null'
          title: Turn Eager End Threshold
        turn_end_threshold:
          anyOf:
            - type: number
              maximum: 0.5
              minimum: 0.05
            - type: 'null'
          title: Turn End Threshold
        turn_end_timeout_ms:
          anyOf:
            - type: integer
              maximum: 11200
              minimum: 640
            - type: 'null'
          title: Turn End Timeout Ms
      additionalProperties: false
      type: object
      title: CartesiaInk2LiveKitInferenceASROptions
      description: Options for Cartesia Ink 2 through LiveKit Inference.
    CartesiaInkWhisperLiveKitInferenceASROptions:
      properties:
        adapter_contract:
          type: string
          const: livekit_inference_cartesia_ink_whisper_v1
          title: Adapter Contract
          default: livekit_inference_cartesia_ink_whisper_v1
        min_volume:
          anyOf:
            - type: number
              maximum: 1
              minimum: 0
            - type: 'null'
          title: Min Volume
        max_silence_duration_secs:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: 'null'
          title: Max Silence Duration Secs
      additionalProperties: false
      type: object
      title: CartesiaInkWhisperLiveKitInferenceASROptions
      description: Options for Cartesia Ink Whisper through LiveKit Inference.
    SarvamSaarasV4DirectRealtimeASROptions:
      properties:
        adapter_contract:
          type: string
          const: sarvam_direct_realtime_saaras_v4_2026_09_v1
          title: Adapter Contract
          default: sarvam_direct_realtime_saaras_v4_2026_09_v1
        stream_type:
          $ref: '#/components/schemas/SarvamStreamType'
          default: balanced
        endpointing:
          $ref: '#/components/schemas/ASREndpointingMode'
          default: vad
        threshold:
          anyOf:
            - type: number
              maximum: 1
              minimum: 0
            - type: 'null'
          title: Threshold
        silence_duration_ms:
          anyOf:
            - type: integer
              minimum: 0
            - type: 'null'
          title: Silence Duration Ms
        min_speech_duration_ms:
          anyOf:
            - type: integer
              minimum: 0
            - type: 'null'
          title: Min Speech Duration Ms
        return_timestamps:
          type: boolean
          title: Return Timestamps
          default: false
        prompt:
          anyOf:
            - type: string
            - type: 'null'
          title: Prompt
      additionalProperties: false
      type: object
      title: SarvamSaarasV4DirectRealtimeASROptions
      description: Options for Saaras v4 on Sarvam's direct realtime WebSocket API.
    WorkflowUnconditionalModel:
      properties:
        label:
          anyOf:
            - type: string
            - type: 'null'
          title: Label
          description: >-
            Optional human-readable label for the condition used throughout the
            UI.
        type:
          type: string
          const: unconditional
          title: Type
          default: unconditional
      type: object
      title: WorkflowUnconditionalModel
    WorkflowLLMConditionModel:
      properties:
        label:
          anyOf:
            - type: string
            - type: 'null'
          title: Label
          description: >-
            Optional human-readable label for the condition used throughout the
            UI.
        type:
          type: string
          const: llm
          title: Type
          default: llm
        condition:
          type: string
          title: Condition
          description: Condition to evaluate
          examples:
            - User's last message contains a question about our pricing.
            - User provided their email address.
      type: object
      required:
        - condition
      title: WorkflowLLMConditionModel
    WorkflowResultConditionModel:
      properties:
        label:
          anyOf:
            - type: string
            - type: 'null'
          title: Label
          description: >-
            Optional human-readable label for the condition used throughout the
            UI.
        type:
          type: string
          const: result
          title: Type
          default: result
        successful:
          type: boolean
          title: Successful
          description: >-
            Whether all tools in the previously executed tool node were executed
            successfully.
      type: object
      required:
        - successful
      title: WorkflowResultConditionModel
    WorkflowExpressionConditionModel-Input:
      properties:
        label:
          anyOf:
            - type: string
            - type: 'null'
          title: Label
          description: >-
            Optional human-readable label for the condition used throughout the
            UI.
        type:
          type: string
          const: expression
          title: Type
          default: expression
        expression:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Expression to evaluate.
      type: object
      required:
        - expression
      title: WorkflowExpressionConditionModel
    Position-Input:
      properties:
        x:
          type: number
          title: X
          default: 0
        'y':
          type: number
          title: 'Y'
          default: 0
      type: object
      title: Position
    CustomSIPHeader:
      properties:
        type:
          type: string
          const: static
          title: Type
          default: static
        key:
          type: string
          maxLength: 64
          minLength: 1
          pattern: ^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$
          title: Key
          description: The SIP header name (e.g., 'X-Customer-ID')
        value:
          type: string
          maxLength: 512
          minLength: 1
          pattern: ^[\x09\x20-\x7E]+$
          title: Value
          description: The header value
      additionalProperties: false
      type: object
      required:
        - key
        - value
      title: CustomSIPHeader
    CustomSIPHeaderWithDynamicVariable:
      properties:
        type:
          type: string
          const: dynamic
          title: Type
        key:
          type: string
          maxLength: 64
          minLength: 1
          pattern: ^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$
          title: Key
          description: The SIP header name (e.g., 'X-Customer-ID')
        value:
          type: string
          minLength: 1
          title: Value
          description: The dynamic variable name to resolve
      additionalProperties: false
      type: object
      required:
        - type
        - key
        - value
      title: CustomSIPHeaderWithDynamicVariable
    PhoneNumberTransferDestination:
      properties:
        type:
          type: string
          const: phone
          title: Type
          default: phone
        phone_number:
          type: string
          title: Phone Number
      additionalProperties: false
      type: object
      required:
        - phone_number
      title: PhoneNumberTransferDestination
    SIPUriTransferDestination:
      properties:
        type:
          type: string
          const: sip_uri
          title: Type
          default: sip_uri
        sip_uri:
          type: string
          title: Sip Uri
      additionalProperties: false
      type: object
      required:
        - sip_uri
      title: SIPUriTransferDestination
    PhoneNumberDynamicVariableTransferDestination:
      properties:
        type:
          type: string
          const: phone_dynamic_variable
          title: Type
          default: phone_dynamic_variable
        phone_number:
          type: string
          title: Phone Number
      additionalProperties: false
      type: object
      required:
        - phone_number
      title: PhoneNumberDynamicVariableTransferDestination
    SIPUriDynamicVariableTransferDestination:
      properties:
        type:
          type: string
          const: sip_uri_dynamic_variable
          title: Type
          default: sip_uri_dynamic_variable
        sip_uri:
          type: string
          title: Sip Uri
      additionalProperties: false
      type: object
      required:
        - sip_uri
      title: SIPUriDynamicVariableTransferDestination
    TransferTypeEnum:
      type: string
      enum:
        - blind
        - conference
        - sip_refer
      title: TransferTypeEnum
    UUITransferConfig:
      properties:
        data:
          type: string
          maxLength: 8192
          title: Data
          description: >-
            UUI payload to send on SIP REFER transfers. Supports inline dynamic
            variables and is hex-encoded at transfer time.
        protocol_discriminator:
          anyOf:
            - type: string
              pattern: ^[0-9A-Fa-f]{2}$
            - type: 'null'
          title: Protocol Discriminator
          description: >-
            Optional one-octet protocol discriminator (two hex digits, e.g.
            '00'). Required by platforms such as Genesys Cloud, which otherwise
            strip the first octet of the payload. Leave unset for platforms like
            Talkdesk that expect a bare hex payload.
        protocol_discriminator_mode:
          type: string
          enum:
            - prefix
            - pd_parameter
          title: Protocol Discriminator Mode
          description: >-
            How to attach protocol_discriminator. 'prefix' prepends the octet to
            the hex payload (User-to-User=XX<hex>;encoding=hex). 'pd_parameter'
            sends it as a separate parameter
            (User-to-User=<hex>;pd=XX;encoding=hex). Ignored when
            protocol_discriminator is unset.
          default: prefix
      additionalProperties: false
      type: object
      required:
        - data
      title: UUITransferConfig
      description: >-
        User-to-User Information envelope for SIP REFER transfers (RFC 7433).


        Outbound payloads are hex-encoded (the only encoding RFC 7433 defines).
        The

        protocol discriminator axis lets per-platform formats (Talkdesk,
        Genesys, ...)

        be expressed by configuration rather than scattered transfer flags.
        Further

        axes (ASCII encoding, header name, purpose/content parameters) can be
        added

        here without touching the transfer model.
    PostDialDigitsStatic:
      properties:
        type:
          type: string
          const: static
          title: Type
          default: static
        value:
          type: string
          minLength: 1
          pattern: ^[0-9*#wW]*$
          title: Value
          description: >-
            DTMF digits to send after call connects (e.g., 'ww1234' for
            extension)
      additionalProperties: false
      type: object
      required:
        - value
      title: PostDialDigitsStatic
    PostDialDigitsDynamicVariable:
      properties:
        type:
          type: string
          const: dynamic
          title: Type
          default: dynamic
        value:
          type: string
          minLength: 1
          title: Value
          description: The dynamic variable name to resolve
      additionalProperties: false
      type: object
      required:
        - value
      title: PostDialDigitsDynamicVariable
    ConversationalConfigAPIModelWorkflowOverride-Input:
      properties:
        turn:
          anyOf:
            - $ref: '#/components/schemas/TurnConfigWorkflowOverride'
            - type: 'null'
          description: Configuration for turn detection
        tts:
          anyOf:
            - $ref: '#/components/schemas/TTSConversationalConfigWorkflowOverride'
            - type: 'null'
          description: Configuration for conversational text to speech
        conversation:
          anyOf:
            - $ref: '#/components/schemas/ConversationConfigWorkflowOverride'
            - type: 'null'
          description: Configuration for conversational events
        language_presets:
          anyOf:
            - additionalProperties:
                $ref: '#/components/schemas/LanguagePreset'
              type: object
            - type: 'null'
          title: Language Presets
          description: Language presets for conversations
        vad:
          anyOf:
            - $ref: '#/components/schemas/VADConfigWorkflowOverride'
            - type: 'null'
          description: Configuration for voice activity detection
        agent:
          anyOf:
            - $ref: '#/components/schemas/AgentConfigAPIModelWorkflowOverride-Input'
            - type: 'null'
          description: Agent specific configuration
      type: object
      title: ConversationalConfigAPIModelWorkflowOverride
      example:
        agent:
          disable_first_message_interruptions: false
          dynamic_variables:
            dynamic_variable_placeholders:
              user_name: John Doe
          first_message: Hello, how can I help you today?
          language: en
          prompt:
            knowledge_base: []
            llm: gemini-2.0-flash-001
            max_tokens: -1
            prompt: >-
              You are a helpful assistant that can answer questions about the
              topic of the conversation.
            temperature: 0
            tool_ids: []
        conversation:
          client_events:
            - audio
            - interruption
          max_duration_seconds: 600
        tts:
          performance: latency
          voice_id: ME9RtCnWp5vX2LhJdF3k
        turn:
          interruption_ignore_term_languages: []
          interruption_ignore_terms: []
          merge_with_default_ignore_terms: false
          mode: turn
          retranscribe_on_turn_timeout: false
          silence_end_call_timeout: -1
          soft_timeout_config:
            message: Hhmmmm...yeah.
            timeout_seconds: -1
            use_llm_generated_message: false
          speculative_turn: false
          spelling_patience: auto
          transcribe_on_disabled_interruptions: false
          turn_eagerness: normal
          turn_model: turn_v3
          turn_timeout: 7
    KnowledgeBaseLocator:
      properties:
        type:
          $ref: '#/components/schemas/KnowledgeBaseDocumentType'
          description: The type of the knowledge base
        name:
          type: string
          title: Name
          description: The name of the knowledge base
        id:
          type: string
          title: Id
          description: The ID of the knowledge base
        usage_mode:
          $ref: '#/components/schemas/DocumentUsageModeEnum'
          description: The usage mode of the knowledge base
          default: auto
      type: object
      required:
        - type
        - name
        - id
      title: KnowledgeBaseLocator
      example:
        id: '123'
        name: My Knowledge Base
        type: file
        usage_mode: auto
    EntryBehavior:
      type: string
      enum:
        - generate_immediately
        - wait_for_user
        - auto
      title: EntryBehavior
      default: auto
    WorkflowToolLocator:
      properties:
        tool_id:
          type: string
          title: Tool Id
        schema_overrides:
          anyOf:
            - additionalProperties:
                oneOf:
                  - $ref: '#/components/schemas/ConstantSchemaOverride'
                  - $ref: '#/components/schemas/DynamicVariableSchemaOverride'
                  - $ref: '#/components/schemas/LLMSchemaOverride'
                  - $ref: '#/components/schemas/OmitSchemaOverride'
                discriminator:
                  propertyName: source
                  mapping:
                    constant:
                      $ref: '#/components/schemas/ConstantSchemaOverride'
                    dynamic_variable:
                      $ref: '#/components/schemas/DynamicVariableSchemaOverride'
                    llm:
                      $ref: '#/components/schemas/LLMSchemaOverride'
                    omit:
                      $ref: '#/components/schemas/OmitSchemaOverride'
              type: object
            - type: 'null'
          title: Schema Overrides
          description: >-
            Per-node parameter overrides applied on top of the tool's own
            configuration. Keys are dotted parameter paths (webhook tools prefix
            keys with path_params./query_params./request_body.). These take
            precedence over any overrides already defined on the tool itself.
      type: object
      required:
        - tool_id
      title: WorkflowToolLocator
    SoftTimeoutConfig:
      properties:
        timeout_seconds:
          type: number
          title: Timeout Seconds
          description: >-
            Time in seconds before showing the predefined message while waiting
            for LLM response. Set to -1 to disable.
          default: -1
        message:
          type: string
          maxLength: 200
          minLength: 1
          title: Message
          description: >-
            Message to show when the first soft timeout is reached while waiting
            for LLM response. Supports dynamic variables (e.g.,
            {{system__time}}, {{custom_variable}}).
          default: Hhmmmm...yeah.
          x-convai-client-override: true
          x-convai-language-override: true
        additional_soft_timeout_messages:
          items:
            type: string
          type: array
          maxItems: 7
          title: Additional Soft Timeout Messages
          description: >-
            Extra static filler messages for subsequent soft timeouts in the
            same LLM generation. The first timeout uses `message`. If fewer
            messages are configured than `max_soft_timeouts_per_generation`, the
            last configured message is repeated; otherwise a built-in filler is
            used.
          x-convai-client-override: true
          x-convai-language-override: true
        use_llm_generated_message:
          type: boolean
          title: Use Llm Generated Message
          description: >-
            If enabled, the soft timeout message will be generated dynamically
            instead of using the static message.
          default: false
        randomize_fillers:
          type: boolean
          title: Randomize Fillers
          description: >-
            If enabled, shuffle the order of static soft timeout messages once
            at the start of each turn. Only applies when
            use_llm_generated_message is false.
          default: false
        max_soft_timeouts_per_generation:
          type: integer
          maximum: 8
          minimum: 1
          title: Max Soft Timeouts Per Generation
          description: >-
            Maximum filler messages while waiting for a single LLM response.
            Fires every timeout_seconds until the LLM streams content or this
            limit is reached.
          default: 1
        llm_generated_message_prompt_override:
          anyOf:
            - type: string
              maxLength: 1000
              minLength: 1
            - type: 'null'
          title: Llm Generated Message Prompt Override
          description: >-
            Custom prompt for generating the soft timeout filler message when
            use_llm_generated_message is enabled. Recent conversation context is
            provided as a separate user message. If not set, the default prompt
            will be used. Supports dynamic variables (e.g., {{system__time}},
            {{custom_variable}}).
          examples:
            - >-
              Output a SHORT neutral filler phrase (1-4 words MAX) acknowledging
              you heard the user.
        disable_until_first_user_message:
          type: boolean
          title: Disable Until First User Message
          description: >-
            When true, soft timeout fillers are suppressed until the
            conversation has at least one real user message. Prevents fillers
            during the agent's opening turn (e.g. workflow generate-immediately
            / tool calls before the user speaks).
          default: false
      type: object
      title: SoftTimeoutConfig
      description: >-
        Configuration for soft timeout functionality during LLM response
        generation.
      example:
        message: Hhmmmm...yeah.
        timeout_seconds: 2
        use_llm_generated_message: false
    FileInputConfig:
      properties:
        enabled:
          type: boolean
          title: Enabled
          description: >-
            When enabled, users may attach images or PDFs in chat when the LLM
            supports multimodal input.
          default: true
        max_files_in_memory:
          type: integer
          maximum: 30
          minimum: 1
          title: Max Files In Memory
          description: >-
            Number of most-recent files kept in memory during a conversation.
            Older files are summarized and their bytes freed.
          default: 10
        max_files_per_conversation:
          type: integer
          title: Max Files Per Conversation
          description: >-
            Total files a user can upload in one conversation. Uploads are
            billed per file. Use -1 for no limit, or a value >=
            max_files_in_memory.
          default: 10
      type: object
      title: FileInputConfig
    BackgroundSoundConfig:
      properties:
        source_type:
          anyOf:
            - $ref: '#/components/schemas/BackgroundSoundSourceType'
            - type: 'null'
          description: The type of background sound source.
        source_id:
          anyOf:
            - $ref: '#/components/schemas/BackgroundSoundPresetId'
            - type: 'null'
          description: Identifier for the sound source.
        volume:
          type: number
          maximum: 1
          minimum: 0.01
          title: Volume
          description: Volume level for background sound (0.01 to 1.0).
          default: 0.15
        crossfade_loop:
          type: boolean
          title: Crossfade Loop
          description: >-
            Apply a crossfade at the loop boundary to avoid audible pops when
            the sound loops.
          default: true
      type: object
      title: BackgroundSoundConfig
    DynamicVariablesConfig-Output:
      properties:
        dynamic_variable_placeholders:
          additionalProperties:
            $ref: '#/components/schemas/DynamicVariableValueType-Output'
          type: object
          title: Dynamic Variable Placeholders
          description: A dictionary of dynamic variable placeholders and their values
      type: object
      title: DynamicVariablesConfig
      example:
        dynamic_variable_placeholders:
          user_name: John Doe
    PromptAgentAPIModel:
      properties:
        prompt:
          type: string
          title: Prompt
          description: The prompt for the agent
          default: ''
          x-convai-client-override: true
        llm:
          $ref: '#/components/schemas/LLM'
          description: >-
            The LLM to query with the prompt and the chat history. If using data
            residency, the LLM must be supported in the data residency
            environment
          default: gemini-2.5-flash
          x-convai-client-override: true
        reasoning_effort:
          anyOf:
            - $ref: '#/components/schemas/LLMReasoningEffort'
            - type: 'null'
          description: Reasoning effort of the model. Only available for some models.
        thinking_budget:
          anyOf:
            - type: integer
            - type: 'null'
          title: Thinking Budget
          description: >-
            Max number of tokens used for thinking. Use 0 to turn off if
            supported by the model.
        enable_reasoning_summary:
          type: boolean
          title: Enable Reasoning Summary
          description: >-
            Enable model reasoning summaries. When disabled, we do not request
            summaries from provider if possible for faster TTFB. Not ZRM
            compatible.
          default: false
        temperature:
          anyOf:
            - type: number
            - type: 'null'
          title: Temperature
          description: >-
            The temperature for the LLM. Defaults to 0. Set to null to omit the
            parameter from the LLM request entirely (useful for custom LLMs that
            reject the temperature field).
          default: 0
        max_tokens:
          type: integer
          title: Max Tokens
          description: If greater than 0, maximum number of tokens the LLM can predict
          default: -1
        tool_ids:
          items:
            type: string
          type: array
          title: Tool Ids
          description: A list of IDs of tools used by the agent
          x-convai-client-override: true
        built_in_tools:
          $ref: '#/components/schemas/BuiltInTools'
          description: Built-in system tools to be used by the agent
        mcp_server_ids:
          items:
            type: string
          type: array
          maxItems: 10
          title: Mcp Server Ids
          description: A list of MCP server ids to be used by the agent
        native_mcp_server_ids:
          items:
            type: string
          type: array
          maxItems: 10
          title: Native Mcp Server Ids
          description: A list of Native MCP server ids to be used by the agent
          x-convai-client-override: true
        knowledge_base:
          items:
            $ref: '#/components/schemas/KnowledgeBaseLocator'
          type: array
          title: Knowledge Base
          description: A list of knowledge bases to be used by the agent
          x-convai-client-override: true
        custom_llm:
          anyOf:
            - $ref: '#/components/schemas/CustomLLM'
            - type: 'null'
          description: Definition for a custom LLM if LLM field is set to 'CUSTOM_LLM'
        ignore_default_personality:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Ignore Default Personality
          description: >-
            Whether to remove the default personality lines from the system
            prompt
          default: false
        rag:
          $ref: '#/components/schemas/RagConfig'
          description: Configuration for RAG
        timezone:
          anyOf:
            - type: string
            - type: 'null'
          title: Timezone
          description: >-
            Timezone for displaying current time in system prompt. If set, the
            current time will be included in the system prompt using this
            timezone. Must be a valid timezone name (e.g., 'America/New_York',
            'Europe/London', 'UTC'). Recommended for accurate time-aware
            responses; without this, the agent has no knowledge of the current
            date/time unless you provide it via dynamic variables or tools,
            which can lead to incorrect or hallucinated time references.
        backup_llm_config:
          oneOf:
            - $ref: '#/components/schemas/BackupLLMDefault'
            - $ref: '#/components/schemas/BackupLLMDisabled'
            - $ref: '#/components/schemas/BackupLLMOverride'
          title: Backup Llm Config
          description: >-
            Configuration for backup LLM cascading. Can be disabled, use system
            defaults, or specify custom order.
          discriminator:
            propertyName: preference
            mapping:
              default:
                $ref: '#/components/schemas/BackupLLMDefault'
              disabled:
                $ref: '#/components/schemas/BackupLLMDisabled'
              override:
                $ref: '#/components/schemas/BackupLLMOverride'
        cascade_timeout_seconds:
          type: number
          maximum: 15
          minimum: 2
          title: Cascade Timeout Seconds
          description: >-
            Time in seconds before cascading to backup LLM. Must be between 2
            and 15 seconds.
          default: 4
      type: object
      title: PromptAgentAPIModel
      example:
        knowledge_base: []
        llm: gemini-2.0-flash-001
        max_tokens: -1
        prompt: >-
          You are a helpful assistant that can answer questions about the topic
          of the conversation.
        temperature: 0
        tool_ids: []
    PromptEvaluationCriteria:
      properties:
        id:
          type: string
          title: Id
          description: The unique identifier for the evaluation criteria
        name:
          type: string
          title: Name
        type:
          type: string
          const: prompt
          title: Type
          description: The type of evaluation criteria
          default: prompt
        conversation_goal_prompt:
          type: string
          maxLength: 2000
          title: Conversation Goal Prompt
          description: The prompt that the agent should use to evaluate the conversation
        use_knowledge_base:
          type: boolean
          title: Use Knowledge Base
          description: >-
            When evaluating the prompt, should the agent's knowledge base be
            used.
          default: false
        scope:
          $ref: '#/components/schemas/AnalysisScope'
          description: >-
            The scope of transcript context used when evaluating this criterion.
            'conversation' uses the full transcript; 'agent' uses only the
            portion where the defining agent was active.
        llm:
          anyOf:
            - $ref: '#/components/schemas/LLM'
            - type: 'null'
          description: >-
            LLM model to use for this evaluation criteria. If not set, uses
            agent's analysis_llm default.
        scoring_mode:
          $ref: '#/components/schemas/CriteriaScoringMode'
          description: >-
            How this criterion is scored. 'binary' resolves to
            success/failure/unknown. 'numeric_uniform' returns a number on the
            [0, max_score] scale which is normalized into the aggregate
            conversation success percentage.
          default: binary
        max_score:
          type: integer
          title: Max Score
          description: >-
            Maximum value of the numeric score scale (minimum is always 0). Only
            used when scoring_mode is 'numeric_uniform'.
          default: 100
        score_instructions:
          anyOf:
            - type: string
              maxLength: 2000
            - type: 'null'
          title: Score Instructions
          description: >-
            Optional free-text instructions describing how to assign values on
            the numeric scale. Only used when scoring_mode is 'numeric_uniform'.
      type: object
      required:
        - id
        - name
        - conversation_goal_prompt
      title: PromptEvaluationCriteria
      description: >-
        An evaluation using the transcript and a prompt for a yes/no achieved
        answer
      examples:
        - conversation_goal_prompt: Determine whether the agent fully resolved the user's issue.
          id: criterion_binary_001
          max_score: 100
          name: Issue resolved
          scope: conversation
          scoring_mode: binary
          use_knowledge_base: false
        - conversation_goal_prompt: Rate how completely and correctly the issue was resolved.
          id: criterion_numeric_001
          max_score: 100
          name: Resolution quality
          scope: conversation
          score_instructions: >-
            0 means unresolved, 50 means partially resolved, 100 means fully
            resolved with correct details.
          scoring_mode: numeric_uniform
          use_knowledge_base: false
    EmbedVariant:
      type: string
      enum:
        - tiny
        - compact
        - full
        - expandable
      title: EmbedVariant
      default: full
    WidgetPlacement:
      type: string
      enum:
        - top-left
        - top
        - top-right
        - bottom-left
        - bottom
        - bottom-right
      title: WidgetPlacement
      default: bottom-right
    WidgetExpandable:
      type: string
      enum:
        - never
        - mobile
        - desktop
        - always
      title: WidgetExpandable
      default: never
    OrbAvatar:
      properties:
        type:
          type: string
          const: orb
          title: Type
          description: The type of the avatar
          default: orb
        color_1:
          type: string
          title: Color 1
          description: The first color of the avatar
          default: '#2792dc'
        color_2:
          type: string
          title: Color 2
          description: The second color of the avatar
          default: '#9ce6e6'
      type: object
      title: OrbAvatar
      example:
        color_1: '#2792dc'
        color_2: '#9ce6e6'
        type: orb
    URLAvatar:
      properties:
        type:
          type: string
          const: url
          title: Type
          description: The type of the avatar
          default: url
        custom_url:
          type: string
          title: Custom Url
          description: The custom URL of the avatar
          default: ''
      type: object
      title: URLAvatar
    ImageAvatar:
      properties:
        type:
          type: string
          const: image
          title: Type
          description: The type of the avatar
          default: image
        url:
          type: string
          title: Url
          description: The URL of the avatar
          default: ''
      type: object
      title: ImageAvatar
    WidgetFeedbackMode:
      type: string
      enum:
        - none
        - during
        - end
      title: WidgetFeedbackMode
      default: none
    WidgetEndFeedbackConfig:
      properties:
        type:
          $ref: '#/components/schemas/WidgetEndFeedbackType'
          description: The type of feedback to collect at the end of the conversation
          default: rating
      type: object
      title: WidgetEndFeedbackConfig
    AllowlistItem:
      properties:
        hostname:
          type: string
          title: Hostname
          description: The hostname of the allowed origin
      type: object
      required:
        - hostname
      title: AllowlistItem
    WidgetTextContents:
      properties:
        main_label:
          anyOf:
            - type: string
            - type: 'null'
          title: Main Label
          description: Call to action displayed inside the compact and full variants.
        start_call:
          anyOf:
            - type: string
            - type: 'null'
          title: Start Call
          description: Text and ARIA label for the start call button.
        start_chat:
          anyOf:
            - type: string
            - type: 'null'
          title: Start Chat
          description: Text and ARIA label for the start chat button (text only)
        new_call:
          anyOf:
            - type: string
            - type: 'null'
          title: New Call
          description: >-
            Text and ARIA label for the new call button. Displayed when the
            caller already finished at least one call in order ot start the next
            one.
        end_call:
          anyOf:
            - type: string
            - type: 'null'
          title: End Call
          description: Text and ARIA label for the end call button.
        mute_microphone:
          anyOf:
            - type: string
            - type: 'null'
          title: Mute Microphone
          description: ARIA label for the mute microphone button.
        change_language:
          anyOf:
            - type: string
            - type: 'null'
          title: Change Language
          description: ARIA label for the change language dropdown.
        collapse:
          anyOf:
            - type: string
            - type: 'null'
          title: Collapse
          description: ARIA label for the collapse button.
        expand:
          anyOf:
            - type: string
            - type: 'null'
          title: Expand
          description: ARIA label for the expand button.
        copied:
          anyOf:
            - type: string
            - type: 'null'
          title: Copied
          description: Text displayed when the user copies a value using the copy button.
        accept_terms:
          anyOf:
            - type: string
            - type: 'null'
          title: Accept Terms
          description: Text and ARIA label for the accept terms button.
        dismiss_terms:
          anyOf:
            - type: string
            - type: 'null'
          title: Dismiss Terms
          description: Text and ARIA label for the cancel terms button.
        listening_status:
          anyOf:
            - type: string
            - type: 'null'
          title: Listening Status
          description: Status displayed when the agent is listening.
        speaking_status:
          anyOf:
            - type: string
            - type: 'null'
          title: Speaking Status
          description: Status displayed when the agent is speaking.
        connecting_status:
          anyOf:
            - type: string
            - type: 'null'
          title: Connecting Status
          description: Status displayed when the agent is connecting.
        chatting_status:
          anyOf:
            - type: string
            - type: 'null'
          title: Chatting Status
          description: Status displayed when the agent is chatting (text only)
        input_label:
          anyOf:
            - type: string
            - type: 'null'
          title: Input Label
          description: ARIA label for the text message input.
        input_placeholder:
          anyOf:
            - type: string
            - type: 'null'
          title: Input Placeholder
          description: Placeholder text for the text message input.
        input_placeholder_text_only:
          anyOf:
            - type: string
            - type: 'null'
          title: Input Placeholder Text Only
          description: Placeholder text for the text message input (text only)
        input_placeholder_new_conversation:
          anyOf:
            - type: string
            - type: 'null'
          title: Input Placeholder New Conversation
          description: >-
            Placeholder text for the text message input when starting a new
            conversation (text only)
        user_ended_conversation:
          anyOf:
            - type: string
            - type: 'null'
          title: User Ended Conversation
          description: Information message displayed when the user ends the conversation.
        agent_ended_conversation:
          anyOf:
            - type: string
            - type: 'null'
          title: Agent Ended Conversation
          description: Information message displayed when the agent ends the conversation.
        conversation_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Conversation Id
          description: Text label used next to the conversation ID.
        error_occurred:
          anyOf:
            - type: string
            - type: 'null'
          title: Error Occurred
          description: Text label used when an error occurs.
        copy_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Copy Id
          description: Text and ARIA label used for the copy ID button.
        initiate_feedback:
          anyOf:
            - type: string
            - type: 'null'
          title: Initiate Feedback
          description: Text displayed to prompt the user for feedback.
        request_follow_up_feedback:
          anyOf:
            - type: string
            - type: 'null'
          title: Request Follow Up Feedback
          description: Text displayed to request additional feedback details.
        thanks_for_feedback:
          anyOf:
            - type: string
            - type: 'null'
          title: Thanks For Feedback
          description: Text displayed to thank the user for providing feedback.
        thanks_for_feedback_details:
          anyOf:
            - type: string
            - type: 'null'
          title: Thanks For Feedback Details
          description: Additional text displayed explaining the value of user feedback.
        follow_up_feedback_placeholder:
          anyOf:
            - type: string
            - type: 'null'
          title: Follow Up Feedback Placeholder
          description: Placeholder text for the follow-up feedback input field.
        submit:
          anyOf:
            - type: string
            - type: 'null'
          title: Submit
          description: Text and ARIA label for the submit button.
        go_back:
          anyOf:
            - type: string
            - type: 'null'
          title: Go Back
          description: Text and ARIA label for the go back button.
        send_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Send Message
          description: Text and ARIA label for the send message button.
        text_mode:
          anyOf:
            - type: string
            - type: 'null'
          title: Text Mode
          description: Text and ARIA label for the switch to text mode button.
        voice_mode:
          anyOf:
            - type: string
            - type: 'null'
          title: Voice Mode
          description: Text and ARIA label for the switch to voice mode button.
        switched_to_text_mode:
          anyOf:
            - type: string
            - type: 'null'
          title: Switched To Text Mode
          description: Toast notification displayed when switching to text mode.
        switched_to_voice_mode:
          anyOf:
            - type: string
            - type: 'null'
          title: Switched To Voice Mode
          description: Toast notification displayed when switching to voice mode.
        copy:
          anyOf:
            - type: string
            - type: 'null'
          title: Copy
          description: Text and ARIA label for the copy button.
        download:
          anyOf:
            - type: string
            - type: 'null'
          title: Download
          description: Text and ARIA label for the download button.
        wrap:
          anyOf:
            - type: string
            - type: 'null'
          title: Wrap
          description: Text and ARIA label for the wrap toggle button.
        agent_working:
          anyOf:
            - type: string
            - type: 'null'
          title: Agent Working
          description: Status text displayed when the agent is processing a tool call.
        agent_done:
          anyOf:
            - type: string
            - type: 'null'
          title: Agent Done
          description: >-
            Status text displayed when the agent finishes processing a tool
            call.
        agent_error:
          anyOf:
            - type: string
            - type: 'null'
          title: Agent Error
          description: >-
            Status text displayed when the agent encounters an error during a
            tool call.
        attach_file:
          anyOf:
            - type: string
            - type: 'null'
          title: Attach File
          description: Text and ARIA label for the attach file button.
        remove_file:
          anyOf:
            - type: string
            - type: 'null'
          title: Remove File
          description: ARIA label for the remove file button.
        file_upload_error:
          anyOf:
            - type: string
            - type: 'null'
          title: File Upload Error
          description: Error message displayed when a file fails to upload.
        file_type_unsupported:
          anyOf:
            - type: string
            - type: 'null'
          title: File Type Unsupported
          description: >-
            Error message displayed when an unsupported file type is selected.
            Followed by the list of accepted types.
        file_too_large:
          anyOf:
            - type: string
            - type: 'null'
          title: File Too Large
          description: Error message displayed when a file exceeds the maximum size limit.
        file_limit_reached:
          anyOf:
            - type: string
            - type: 'null'
          title: File Limit Reached
          description: >-
            Error message displayed when the maximum number of files for a
            conversation is reached.
        typing_indicator:
          anyOf:
            - type: string
            - type: 'null'
          title: Typing Indicator
          description: Status text displayed while the agent is typing.
      type: object
      title: WidgetTextContents
    WidgetStyles:
      properties:
        base:
          anyOf:
            - type: string
            - type: 'null'
          title: Base
          description: The base background color.
        base_hover:
          anyOf:
            - type: string
            - type: 'null'
          title: Base Hover
          description: The color of the base background when hovered.
        base_active:
          anyOf:
            - type: string
            - type: 'null'
          title: Base Active
          description: The color of the base background when active (clicked).
        base_border:
          anyOf:
            - type: string
            - type: 'null'
          title: Base Border
          description: The color of the border against the base background.
        base_subtle:
          anyOf:
            - type: string
            - type: 'null'
          title: Base Subtle
          description: The color of subtle text against the base background.
        base_primary:
          anyOf:
            - type: string
            - type: 'null'
          title: Base Primary
          description: The color of primary text against the base background.
        base_error:
          anyOf:
            - type: string
            - type: 'null'
          title: Base Error
          description: The color of error text against the base background.
        accent:
          anyOf:
            - type: string
            - type: 'null'
          title: Accent
          description: The accent background color.
        accent_hover:
          anyOf:
            - type: string
            - type: 'null'
          title: Accent Hover
          description: The color of the accent background when hovered.
        accent_active:
          anyOf:
            - type: string
            - type: 'null'
          title: Accent Active
          description: The color of the accent background when active (clicked).
        accent_border:
          anyOf:
            - type: string
            - type: 'null'
          title: Accent Border
          description: The color of the border against the accent background.
        accent_subtle:
          anyOf:
            - type: string
            - type: 'null'
          title: Accent Subtle
          description: The color of subtle text against the accent background.
        accent_primary:
          anyOf:
            - type: string
            - type: 'null'
          title: Accent Primary
          description: The color of primary text against the accent background.
        overlay_padding:
          anyOf:
            - type: number
            - type: 'null'
          title: Overlay Padding
          description: The padding around the edges of the viewport.
        button_radius:
          anyOf:
            - type: number
            - type: 'null'
          title: Button Radius
          description: The radius of the buttons.
        input_radius:
          anyOf:
            - type: number
            - type: 'null'
          title: Input Radius
          description: The radius of the input fields.
        bubble_radius:
          anyOf:
            - type: number
            - type: 'null'
          title: Bubble Radius
          description: The radius of the chat bubbles.
        sheet_radius:
          anyOf:
            - type: number
            - type: 'null'
          title: Sheet Radius
          description: The default radius of sheets.
        compact_sheet_radius:
          anyOf:
            - type: number
            - type: 'null'
          title: Compact Sheet Radius
          description: The radius of the sheet in compact mode.
        dropdown_sheet_radius:
          anyOf:
            - type: number
            - type: 'null'
          title: Dropdown Sheet Radius
          description: The radius of the dropdown sheet.
      type: object
      title: WidgetStyles
    WidgetLanguagePreset:
      properties:
        text_contents:
          anyOf:
            - $ref: '#/components/schemas/WidgetTextContents'
            - type: 'null'
          description: The text contents for the selected language
        text_contents_translation:
          anyOf:
            - $ref: '#/components/schemas/WidgetTextContentsTranslation'
            - type: 'null'
          description: The translation cache for the text contents
        terms_text:
          anyOf:
            - type: string
            - type: 'null'
          title: Terms Text
          description: The text to display for terms and conditions in this language
        terms_html:
          anyOf:
            - type: string
            - type: 'null'
          title: Terms Html
          description: The HTML to display for terms and conditions in this language
        terms_key:
          anyOf:
            - type: string
            - type: 'null'
          title: Terms Key
          description: The key to display for terms and conditions in this language
        terms_translation:
          anyOf:
            - $ref: '#/components/schemas/WidgetTermsTranslation'
            - type: 'null'
          description: The translation cache for the terms
      type: object
      title: WidgetLanguagePreset
    AttachedUserEvaluationRef:
      properties:
        source:
          type: string
          const: user
          title: Source
        analysis_item_id:
          type: string
          title: Analysis Item Id
          description: Id of the referenced user evaluation item.
        version_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Version Id
          description: >-
            Primary item version whose result feeds scoring. None tracks the
            item's latest published version.
        additional_version_ids:
          items:
            type: string
          type: array
          title: Additional Version Ids
          description: >-
            Extra item versions to also run for comparison (A/B). These are
            executed and stored but excluded from scoring; the primary
            version_id is the one that scores.
        scope:
          $ref: '#/components/schemas/AnalysisScope'
          description: >-
            Transcript context ('conversation' or 'agent') used when running
            this item.
          default: conversation
        weight:
          anyOf:
            - type: number
            - type: 'null'
          title: Weight
          description: Optional relative weight for aggregate scoring.
      type: object
      required:
        - source
        - analysis_item_id
      title: AttachedUserEvaluationRef
    AttachedSystemEvaluationRef:
      properties:
        source:
          type: string
          const: system
          title: Source
        analysis_item_id:
          type: string
          enum:
            - __system_eval_criteria_sentiment
            - __system_eval_criteria_frustration
          title: Analysis Item Id
          description: Id of the referenced built-in system evaluation.
        scope:
          $ref: '#/components/schemas/AnalysisScope'
          description: >-
            Transcript context ('conversation' or 'agent') used when running
            this item.
          default: conversation
        weight:
          anyOf:
            - type: number
            - type: 'null'
          title: Weight
          description: Optional relative weight for aggregate scoring.
      type: object
      required:
        - source
        - analysis_item_id
      title: AttachedSystemEvaluationRef
    AttachedUserDataCollectionRef:
      properties:
        source:
          type: string
          const: user
          title: Source
        analysis_item_id:
          type: string
          title: Analysis Item Id
          description: Id of the referenced user data-collection item.
        version_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Version Id
          description: >-
            Pinned item version. None tracks the item's latest published
            version.
        scope:
          $ref: '#/components/schemas/AnalysisScope'
          description: >-
            Transcript context ('conversation' or 'agent') used when running
            this item.
          default: conversation
      type: object
      required:
        - source
        - analysis_item_id
      title: AttachedUserDataCollectionRef
    AttachedSystemDataCollectionRef:
      properties:
        source:
          type: string
          const: system
          title: Source
        analysis_item_id:
          type: string
          const: __system_data_collection_topic
          title: Analysis Item Id
          description: Id of the referenced built-in system data-collection item.
        scope:
          $ref: '#/components/schemas/AnalysisScope'
          description: >-
            Transcript context ('conversation' or 'agent') used when running
            this item.
          default: conversation
      type: object
      required:
        - source
        - analysis_item_id
      title: AttachedSystemDataCollectionRef
    ConversationConfigClientOverrideConfig:
      properties:
        turn:
          $ref: '#/components/schemas/TurnConfigOverrideConfig'
          description: Configures overrides for nested fields.
        tts:
          $ref: '#/components/schemas/TTSConversationalConfigOverrideConfig'
          description: Configures overrides for nested fields.
        conversation:
          $ref: '#/components/schemas/ConversationConfigOverrideConfig'
          description: Configures overrides for nested fields.
        agent:
          $ref: '#/components/schemas/AgentConfigOverrideConfig'
          description: Configures overrides for nested fields.
      type: object
      title: ConversationConfigClientOverrideConfig
    ConversationInitiationClientDataWebhook:
      properties:
        url:
          type: string
          title: Url
          description: The URL to send the webhook to
        request_headers:
          additionalProperties:
            anyOf:
              - type: string
              - $ref: '#/components/schemas/ConvAISecretLocator'
          type: object
          title: Request Headers
          description: The headers to send with the webhook request
      type: object
      required:
        - url
        - request_headers
      title: ConversationInitiationClientDataWebhook
      example:
        request_headers:
          Content-Type: application/json
        url: https://example.com/webhook
    ConvAIWebhooks:
      properties:
        post_call_webhook_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Post Call Webhook Id
        events:
          items:
            $ref: '#/components/schemas/WebhookEventType'
          type: array
          title: Events
          description: >-
            List of event types to send via webhook. Options: transcript, audio,
            call_initiation_failure, unredacted_transcript, unredacted_audio.
            Unredacted events contain sensitive conversation data and must only
            be sent to explicitly authorized endpoints.
        transcript_format:
          $ref: '#/components/schemas/WebhookTranscriptFormat'
          description: Format for transcript webhooks.
          default: json
      type: object
      title: ConvAIWebhooks
    AttachedTestModel:
      properties:
        test_id:
          type: string
          title: Test Id
        workflow_node_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Workflow Node Id
      type: object
      required:
        - test_id
      title: AttachedTestModel
    FocusGuardrail:
      properties:
        is_enabled:
          type: boolean
          title: Is Enabled
          default: false
      type: object
      title: FocusGuardrail
    PromptInjectionGuardrail:
      properties:
        is_enabled:
          type: boolean
          title: Is Enabled
          default: false
      type: object
      title: PromptInjectionGuardrail
    ContentGuardrail:
      properties:
        execution_mode:
          $ref: '#/components/schemas/GuardrailExecutionMode'
          default: streaming
        config:
          $ref: '#/components/schemas/ContentConfig'
        trigger_action:
          oneOf:
            - $ref: '#/components/schemas/EndCallTriggerAction'
            - $ref: '#/components/schemas/RetryTriggerAction'
          title: Trigger Action
          discriminator:
            propertyName: type
            mapping:
              end_call:
                $ref: '#/components/schemas/EndCallTriggerAction'
              retry:
                $ref: '#/components/schemas/RetryTriggerAction'
      type: object
      title: ContentGuardrail
    ModerationGuardrail:
      properties:
        execution_mode:
          $ref: '#/components/schemas/GuardrailExecutionMode'
          default: streaming
        config:
          $ref: '#/components/schemas/ModerationConfig'
      type: object
      title: ModerationGuardrail
    CustomGuardrail:
      properties:
        config:
          $ref: '#/components/schemas/CustomGuardrailsConfig'
      type: object
      title: CustomGuardrail
      description: Container for custom guardrails, matching ModerationGuardrail pattern.
    ConversationHistoryRedactionConfig:
      properties:
        enabled:
          type: boolean
          title: Enabled
          description: Whether conversation history redaction is enabled
          default: false
        entities:
          items:
            $ref: '#/components/schemas/ConfigEntityType'
          type: array
          title: Entities
          description: >-
            The entities to redact from the conversation transcript, audio and
            analysis. Use top-level types like 'name', 'email_address', or dot
            notation for specific subtypes like 'name.name_given'.
      type: object
      title: ConversationHistoryRedactionConfig
    AlertingMonitorConfig:
      properties:
        threshold:
          anyOf:
            - type: number
              maximum: 1
              minimum: 0
            - type: 'null'
          title: Threshold
          description: Failure rate threshold at which this monitor can notify.
        relative_increase_threshold:
          anyOf:
            - type: number
              maximum: 10
              minimum: 0
            - type: 'null'
          title: Relative Increase Threshold
          description: >-
            Relative increase over the trailing baseline at which this monitor
            can notify (0.2 = 20% above baseline, 0 = any failure).
        min_failure_count:
          anyOf:
            - type: integer
              minimum: 1
            - type: 'null'
          title: Min Failure Count
          description: Minimum failures in the window before this monitor can fire.
        min_history_bucket_count:
          anyOf:
            - type: integer
              minimum: 1
            - type: 'null'
          title: Min History Bucket Count
          description: >-
            Minimum trailing buckets with traffic before spike detection can
            fire.
        min_sample_count:
          anyOf:
            - type: integer
              minimum: 1
            - type: 'null'
          title: Min Sample Count
          description: Minimum samples in the window before this monitor can fire.
        suspect_trigger_threshold:
          anyOf:
            - type: integer
              maximum: 10
              minimum: 1
            - type: 'null'
          title: Suspect Trigger Threshold
          description: >-
            How many suspect buckets within the lookback window are required to
            promote a suspect to an alert.
        auto_resolve_after_inactive_minutes:
          anyOf:
            - type: integer
              minimum: 1
            - type: 'null'
          title: Auto Resolve After Inactive Minutes
          description: >-
            How many minutes an alert can stay inactive before it is
            auto-resolved.
      type: object
      title: AlertingMonitorConfig
    AlertingWebhookNotifierResponse:
      properties:
        type:
          type: string
          const: webhook
          title: Type
          default: webhook
        webhook_id:
          type: string
          title: Webhook Id
      type: object
      required:
        - webhook_id
      title: AlertingWebhookNotifierResponse
    AlertingIntegrationNotifierResponse:
      properties:
        type:
          type: string
          const: integration
          title: Type
          default: integration
        connection_id:
          type: string
          title: Connection Id
      type: object
      required:
        - connection_id
      title: AlertingIntegrationNotifierResponse
    SIPTrunkTransportEnum:
      type: string
      enum:
        - auto
        - udp
        - tcp
        - tls
      title: SIPTrunkTransportEnum
    SIPMediaEncryptionEnum:
      type: string
      enum:
        - disabled
        - allowed
        - required
      title: SIPMediaEncryptionEnum
    MediaCodec:
      type: string
      enum:
        - G722/8000
        - PCMU/8000
        - PCMA/8000
      title: MediaCodec
    WorkflowExpressionConditionModel-Output:
      properties:
        label:
          anyOf:
            - type: string
            - type: 'null'
          title: Label
          description: >-
            Optional human-readable label for the condition used throughout the
            UI.
        type:
          type: string
          const: expression
          title: Type
          default: expression
        expression:
          $ref: '#/components/schemas/ASTNode-Output'
          description: Expression to evaluate.
      type: object
      required:
        - expression
      title: WorkflowExpressionConditionModel
    Position-Output:
      properties:
        x:
          type: number
          title: X
          default: 0
        'y':
          type: number
          title: 'Y'
          default: 0
      type: object
      required:
        - x
        - 'y'
      title: Position
    ConversationalConfigAPIModelWorkflowOverride-Output:
      properties:
        turn:
          anyOf:
            - $ref: '#/components/schemas/TurnConfigWorkflowOverride'
            - type: 'null'
          description: Configuration for turn detection
        tts:
          anyOf:
            - $ref: '#/components/schemas/TTSConversationalConfigWorkflowOverride'
            - type: 'null'
          description: Configuration for conversational text to speech
        conversation:
          anyOf:
            - $ref: '#/components/schemas/ConversationConfigWorkflowOverride'
            - type: 'null'
          description: Configuration for conversational events
        language_presets:
          anyOf:
            - additionalProperties:
                $ref: '#/components/schemas/LanguagePreset'
              type: object
            - type: 'null'
          title: Language Presets
          description: Language presets for conversations
        vad:
          anyOf:
            - $ref: '#/components/schemas/VADConfigWorkflowOverride'
            - type: 'null'
          description: Configuration for voice activity detection
        agent:
          anyOf:
            - $ref: '#/components/schemas/AgentConfigAPIModelWorkflowOverride-Output'
            - type: 'null'
          description: Agent specific configuration
      type: object
      title: ConversationalConfigAPIModelWorkflowOverride
      example:
        agent:
          disable_first_message_interruptions: false
          dynamic_variables:
            dynamic_variable_placeholders:
              user_name: John Doe
          first_message: Hello, how can I help you today?
          language: en
          prompt:
            knowledge_base: []
            llm: gemini-2.0-flash-001
            max_tokens: -1
            prompt: >-
              You are a helpful assistant that can answer questions about the
              topic of the conversation.
            temperature: 0
            tool_ids: []
        conversation:
          client_events:
            - audio
            - interruption
          max_duration_seconds: 600
        tts:
          performance: latency
          voice_id: ME9RtCnWp5vX2LhJdF3k
        turn:
          interruption_ignore_term_languages: []
          interruption_ignore_terms: []
          merge_with_default_ignore_terms: false
          mode: turn
          retranscribe_on_turn_timeout: false
          silence_end_call_timeout: -1
          soft_timeout_config:
            message: Hhmmmm...yeah.
            timeout_seconds: -1
            use_llm_generated_message: false
          speculative_turn: false
          spelling_patience: auto
          transcribe_on_disabled_interruptions: false
          turn_eagerness: normal
          turn_model: turn_v3
          turn_timeout: 7
    CartesiaSpeedPreset:
      type: string
      enum:
        - slow
        - normal
        - fast
      title: CartesiaSpeedPreset
    CartesiaEmotion:
      type: string
      enum:
        - happy
        - excited
        - enthusiastic
        - elated
        - euphoric
        - triumphant
        - amazed
        - surprised
        - flirtatious
        - joking/comedic
        - curious
        - content
        - peaceful
        - serene
        - calm
        - grateful
        - affectionate
        - trust
        - sympathetic
        - anticipation
        - mysterious
        - angry
        - mad
        - outraged
        - frustrated
        - agitated
        - threatened
        - disgusted
        - contempt
        - envious
        - sarcastic
        - ironic
        - sad
        - dejected
        - melancholic
        - disappointed
        - hurt
        - guilty
        - bored
        - tired
        - rejected
        - nostalgic
        - wistful
        - apologetic
        - hesitant
        - insecure
        - confused
        - resigned
        - anxious
        - panicked
        - alarmed
        - scared
        - neutral
        - proud
        - confident
        - distant
        - skeptical
        - contemplative
        - determined
      title: CartesiaEmotion
    BackgroundSoundSourceType:
      type: string
      enum:
        - preset
      title: BackgroundSoundSourceType
      description: The type of background sound source.
    BackgroundSoundPresetId:
      type: string
      enum:
        - office2
        - office1
        - restaurant
        - city
        - typing
        - elevator1
        - elevator2
        - elevator3
        - elevator4
      title: BackgroundSoundPresetId
      description: Predefined background sound preset identifiers.
    TurnConfigOverride:
      properties:
        soft_timeout_config:
          anyOf:
            - $ref: '#/components/schemas/SoftTimeoutConfigOverride'
            - type: 'null'
          description: >-
            Configuration for soft timeout functionality. Provides immediate
            feedback during longer LLM responses.
      type: object
      title: TurnConfigOverride
      example:
        soft_timeout_config:
          message: Hhmmmm...yeah.
    TTSConversationalConfigOverride:
      properties:
        voice_id:
          type: string
          title: Voice Id
          description: The voice ID to use for TTS
        performance:
          $ref: '#/components/schemas/TTSPerformance'
          description: >-
            User-facing TTS performance tier (latency or quality). The concrete
            provider/model is selected by the voice-server based on this value.
        pronunciation_dictionary_locators:
          anyOf:
            - items:
                $ref: >-
                  #/components/schemas/PydanticPronunciationDictionaryVersionLocator
              type: array
            - type: 'null'
          title: Pronunciation Dictionary Locators
          description: The pronunciation dictionary locators
          x-convai-client-override: true
      type: object
      title: TTSConversationalConfigOverride
    ConversationConfigOverride:
      properties:
        text_only:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Text Only
          description: >-
            If enabled audio will not be processed and only text will be used,
            use to avoid audio pricing.
          x-convai-client-override: true
        max_duration_seconds:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Duration Seconds
          description: The maximum duration of a conversation in seconds
          x-convai-client-override: true
      type: object
      title: ConversationConfigOverride
      example:
        max_duration_seconds: 600
    AgentConfigOverride:
      properties:
        first_message:
          anyOf:
            - type: string
            - type: 'null'
          title: First Message
          description: >-
            If non-empty, the first message the agent will say. If empty, the
            agent waits for the user to start the discussion.
          x-convai-client-override: true
          x-convai-language-override: true
        language:
          anyOf:
            - type: string
            - type: 'null'
          title: Language
          description: Language of the agent - used for ASR and TTS
          x-convai-client-override: true
        max_conversation_duration_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Max Conversation Duration Message
          description: >-
            If non-empty, the message the agent will send when max conversation
            duration is reached.
          x-convai-client-override: true
          x-convai-language-override: true
        prompt:
          anyOf:
            - $ref: '#/components/schemas/PromptAgentAPIModelOverride'
            - type: 'null'
          description: The prompt for the agent
      type: object
      title: AgentConfigOverride
      example:
        first_message: Hello, how can I help you today?
        language: en
        prompt:
          knowledge_base: []
          llm: gemini-2.0-flash-001
          prompt: >-
            You are a helpful assistant that can answer questions about the
            topic of the conversation.
          tool_ids: []
    DynamicVariableValueType-Input:
      anyOf:
        - type: string
        - type: number
        - type: integer
        - type: boolean
        - items:
            $ref: '#/components/schemas/DynamicVariableNestedValueType-Input'
          type: array
        - type: 'null'
    Verbosity:
      type: string
      enum:
        - auto
        - concise
        - thorough
      title: Verbosity
    OutputFormat:
      type: string
      enum:
        - plain_text
        - markdown
      title: OutputFormat
    InteractionBudget:
      type: string
      enum:
        - realtime
        - 5_minutes
        - 10_minutes
        - 1_hour
      title: InteractionBudget
    LLMReasoningEffort:
      type: string
      enum:
        - none
        - minimal
        - low
        - medium
        - high
        - xhigh
        - max
      title: LLMReasoningEffort
    BuiltInToolsWorkflowOverride:
      properties:
        end_call:
          anyOf:
            - $ref: '#/components/schemas/SystemToolConfig'
            - type: 'null'
          description: The end call tool
        language_detection:
          anyOf:
            - $ref: '#/components/schemas/SystemToolConfig'
            - type: 'null'
          description: The language detection tool
        transfer_to_agent:
          anyOf:
            - $ref: '#/components/schemas/SystemToolConfig'
            - type: 'null'
          description: The transfer to agent tool
        transfer_to_number:
          anyOf:
            - $ref: '#/components/schemas/SystemToolConfig'
            - type: 'null'
          description: The transfer to number tool
        skip_turn:
          anyOf:
            - $ref: '#/components/schemas/SystemToolConfig'
            - type: 'null'
          description: The skip turn tool
        play_keypad_touch_tone:
          anyOf:
            - $ref: '#/components/schemas/SystemToolConfig'
            - type: 'null'
          description: The play DTMF tool
        voicemail_detection:
          anyOf:
            - $ref: '#/components/schemas/SystemToolConfig'
            - type: 'null'
          description: The voicemail detection tool
      additionalProperties: false
      type: object
      title: BuiltInToolsWorkflowOverride
    CustomLLM:
      properties:
        url:
          type: string
          title: Url
          description: The URL of the Chat Completions compatible endpoint
        model_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Model Id
          description: The model ID to be used if URL serves multiple models
        api_key:
          anyOf:
            - $ref: '#/components/schemas/ConvAISecretLocator'
            - $ref: '#/components/schemas/ConvAIEnvVarLocator'
            - type: 'null'
          title: Api Key
          description: >-
            The API key for authentication. Either a workspace secret reference
            {'secret_id': '...'} or an environment variable reference
            {'env_var_label': '...'}.
        request_headers:
          additionalProperties:
            anyOf:
              - type: string
              - $ref: '#/components/schemas/ConvAISecretLocator'
              - $ref: '#/components/schemas/ConvAIDynamicVariable'
              - $ref: '#/components/schemas/ConvAIEnvVarLocator'
          type: object
          title: Request Headers
          description: Headers that should be included in the request
        api_version:
          anyOf:
            - type: string
            - type: 'null'
          title: Api Version
          description: The API version to use for the request
        api_type:
          $ref: '#/components/schemas/CustomLLMAPIType'
          description: The API type to use (chat_completions, responses or websocket)
          default: chat_completions
      type: object
      required:
        - url
      title: CustomLLM
    RagConfigWorkflowOverride:
      properties:
        enabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enabled
        embedding_model:
          anyOf:
            - $ref: '#/components/schemas/EmbeddingModelEnum'
            - type: 'null'
        max_vector_distance:
          anyOf:
            - type: number
            - type: 'null'
          title: Max Vector Distance
          description: Maximum vector distance of retrieved chunks.
          examples:
            - 0.5
        max_documents_length:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Documents Length
          description: Maximum total length of document chunks retrieved from RAG.
          examples:
            - '50000'
        max_retrieved_rag_chunks_count:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Retrieved Rag Chunks Count
          description: >-
            Maximum number of RAG document chunks to initially retrieve from the
            vector store. These are then further filtered by vector distance and
            total length.
          examples:
            - 5
        num_candidates:
          anyOf:
            - type: integer
            - type: 'null'
          title: Num Candidates
          description: >-
            Number of candidates evaluated in ANN vector search. Higher number
            means better results, but higher latency. Minimum recommended value
            is 100. If disabled, the default value is used.
          examples:
            - 300
        query_rewrite_prompt_override:
          anyOf:
            - type: string
            - type: 'null'
          title: Query Rewrite Prompt Override
          description: >-
            Custom prompt for rewriting user queries before RAG retrieval. The
            conversation history will be automatically appended at the end. If
            not set, the default prompt will be used.
          examples:
            - >-
              You are given a conversation between a user and an assistant.
              Rewrite the last question to be self-contained and clear.
      type: object
      title: RagConfigWorkflowOverride
    BackupLLMDefault:
      properties:
        preference:
          type: string
          const: default
          title: Preference
          default: default
      type: object
      title: BackupLLMDefault
    BackupLLMDisabled:
      properties:
        preference:
          type: string
          const: disabled
          title: Preference
          default: disabled
      type: object
      title: BackupLLMDisabled
    BackupLLMOverride:
      properties:
        preference:
          type: string
          const: override
          title: Preference
          default: override
        order:
          items:
            $ref: '#/components/schemas/LLM'
          type: array
          title: Order
      type: object
      required:
        - order
      title: BackupLLMOverride
    WebhookToolConfig-Input:
      properties:
        type:
          type: string
          const: webhook
          title: Type
          description: The type of tool
          default: webhook
        name:
          type: string
          minLength: 0
          pattern: ^[a-zA-Z0-9_-]{1,64}$
          title: Name
        description:
          type: string
          minLength: 0
          title: Description
          description: Description of when the tool should be used and what it does.
        response_timeout_secs:
          type: integer
          maximum: 300
          minimum: 5
          title: Response Timeout Secs
          description: >-
            The maximum time in seconds to wait for the tool call to complete.
            Must be between 5 and 300 seconds (inclusive).
          default: 20
        interruption_mode:
          $ref: '#/components/schemas/ToolInterruptionMode'
          description: >-
            Controls whether the user can interrupt the agent around this tool
            call. 'allow' (default) lets the user interrupt at any time,
            'disable_during_tool' suppresses interruptions only while the tool
            is running, 'disable_during_tool_and_turn' suppresses interruptions
            while the tool runs and for the agent response that follows it.
          default: allow
        pre_tool_speech:
          $ref: '#/components/schemas/PreToolSpeechMode'
          description: >-
            Controls whether the agent speaks before this tool is called. 'auto'
            (default) decides based on recent tool latency, 'force' always asks
            the agent to speak, 'off' fully opts out regardless of latency.
          default: auto
        assignments:
          items:
            $ref: '#/components/schemas/DynamicVariableAssignment'
          type: array
          title: Assignments
          description: >-
            Configuration for extracting values from tool responses and
            assigning them to dynamic variables
        tool_call_sound:
          anyOf:
            - $ref: '#/components/schemas/ToolCallSoundType'
            - type: 'null'
          description: >-
            Predefined tool call sound type to play during tool execution. If
            not specified, no tool call sound will be played.
          x-convai-client-override: true
        tool_call_sound_behavior:
          $ref: '#/components/schemas/ToolCallSoundBehavior'
          description: >-
            Determines when the tool call sound should play. 'auto' only plays
            when there's pre-tool speech, 'always' plays for every tool call.
          default: auto
        tool_error_handling_mode:
          $ref: '#/components/schemas/ToolErrorHandlingMode'
          description: >-
            Controls how tool errors are processed before being shared with the
            agent. 'auto' determines handling based on tool type (summarized for
            native integrations, hide for others), 'summarized' sends an
            LLM-generated summary, 'passthrough' sends the raw error, 'hide'
            does not share the error with the agent.
          default: auto
        dynamic_variables:
          $ref: '#/components/schemas/DynamicVariablesConfig-Input'
          description: Configuration for dynamic variables
        execution_mode:
          $ref: '#/components/schemas/ToolExecutionMode'
          description: >-
            Determines when and how the tool executes: 'immediate' executes the
            tool right away when requested by the LLM, 'post_tool_speech' waits
            for the agent to finish speaking before executing, 'async' runs the
            tool in the background without blocking - best for long-running
            operations.
          default: immediate
        api_schema:
          $ref: '#/components/schemas/WebhookToolApiSchemaConfig-Input'
          description: >-
            The schema for the outgoing webhook, including parameters and URL
            specification
      type: object
      required:
        - name
        - description
        - api_schema
      title: WebhookToolConfig
      description: A webhook tool is a tool that calls an external webhook from our server
      example:
        response_timeout_secs: 20
        type: webhook
    ClientToolConfig-Input:
      properties:
        type:
          type: string
          const: client
          title: Type
          description: The type of tool
          default: client
        name:
          type: string
          minLength: 0
          pattern: ^[a-zA-Z0-9_-]{1,64}$
          title: Name
        description:
          type: string
          minLength: 0
          title: Description
          description: Description of when the tool should be used and what it does.
        response_timeout_secs:
          type: integer
          maximum: 120
          minimum: 1
          title: Response Timeout Secs
          description: >-
            The maximum time in seconds to wait for the tool call to complete.
            Must be between 1 and 120 seconds (inclusive).
          default: 20
        interruption_mode:
          $ref: '#/components/schemas/ToolInterruptionMode'
          description: >-
            Controls whether the user can interrupt the agent around this tool
            call. 'allow' (default) lets the user interrupt at any time,
            'disable_during_tool' suppresses interruptions only while the tool
            is running, 'disable_during_tool_and_turn' suppresses interruptions
            while the tool runs and for the agent response that follows it.
          default: allow
        pre_tool_speech:
          $ref: '#/components/schemas/PreToolSpeechMode'
          description: >-
            Controls whether the agent speaks before this tool is called. 'auto'
            (default) decides based on recent tool latency, 'force' always asks
            the agent to speak, 'off' fully opts out regardless of latency.
          default: auto
        assignments:
          items:
            $ref: '#/components/schemas/DynamicVariableAssignment'
          type: array
          title: Assignments
          description: >-
            Configuration for extracting values from tool responses and
            assigning them to dynamic variables
        tool_call_sound:
          anyOf:
            - $ref: '#/components/schemas/ToolCallSoundType'
            - type: 'null'
          description: >-
            Predefined tool call sound type to play during tool execution. If
            not specified, no tool call sound will be played.
          x-convai-client-override: true
        tool_call_sound_behavior:
          $ref: '#/components/schemas/ToolCallSoundBehavior'
          description: >-
            Determines when the tool call sound should play. 'auto' only plays
            when there's pre-tool speech, 'always' plays for every tool call.
          default: auto
        tool_error_handling_mode:
          $ref: '#/components/schemas/ToolErrorHandlingMode'
          description: >-
            Controls how tool errors are processed before being shared with the
            agent. 'auto' determines handling based on tool type (summarized for
            native integrations, hide for others), 'summarized' sends an
            LLM-generated summary, 'passthrough' sends the raw error, 'hide'
            does not share the error with the agent.
          default: auto
        parameters:
          anyOf:
            - $ref: '#/components/schemas/ObjectJsonSchemaProperty-Input'
            - type: 'null'
          description: Schema for any parameters to pass to the client
        expects_response:
          type: boolean
          title: Expects Response
          description: >-
            If true, calling this tool should block the conversation until the
            client responds with some response which is passed to the llm. If
            false then we will continue the conversation without waiting for the
            client to respond, this is useful to show content to a user but not
            block the conversation
          default: false
        dynamic_variables:
          $ref: '#/components/schemas/DynamicVariablesConfig-Input'
          description: Configuration for dynamic variables
        execution_mode:
          $ref: '#/components/schemas/ToolExecutionMode'
          description: >-
            Determines when and how the tool executes: 'immediate' executes the
            tool right away when requested by the LLM, 'post_tool_speech' waits
            for the agent to finish speaking before executing, 'async' runs the
            tool in the background without blocking - best for long-running
            operations.
          default: immediate
      type: object
      required:
        - name
        - description
      title: ClientToolConfig
      description: >-
        A client tool is one that sends an event to the user's client to trigger
        something client side
      example:
        expects_response: false
        type: client
    SystemToolConfig:
      properties:
        type:
          type: string
          const: system
          title: Type
          description: The type of tool
          default: system
        name:
          type: string
          minLength: 0
          pattern: ^[a-zA-Z0-9_-]{1,64}$
          title: Name
        description:
          type: string
          minLength: 0
          title: Description
          description: >-
            Description of when the tool should be used and what it does. Leave
            empty to use the default description that's optimized for the
            specific tool type.
          default: ''
        response_timeout_secs:
          type: integer
          title: Response Timeout Secs
          description: The maximum time in seconds to wait for the tool call to complete.
          default: 20
        interruption_mode:
          $ref: '#/components/schemas/ToolInterruptionMode'
          description: >-
            Controls whether the user can interrupt the agent around this tool
            call. 'allow' (default) lets the user interrupt at any time,
            'disable_during_tool' suppresses interruptions only while the tool
            is running, 'disable_during_tool_and_turn' suppresses interruptions
            while the tool runs and for the agent response that follows it.
          default: allow
        pre_tool_speech:
          $ref: '#/components/schemas/PreToolSpeechMode'
          description: >-
            Controls whether the agent speaks before this tool is called. 'auto'
            (default) decides based on recent tool latency, 'force' always asks
            the agent to speak, 'off' fully opts out regardless of latency.
          default: auto
        assignments:
          items:
            $ref: '#/components/schemas/DynamicVariableAssignment'
          type: array
          title: Assignments
          description: >-
            Configuration for extracting values from tool responses and
            assigning them to dynamic variables
        tool_call_sound:
          anyOf:
            - $ref: '#/components/schemas/ToolCallSoundType'
            - type: 'null'
          description: >-
            Predefined tool call sound type to play during tool execution. If
            not specified, no tool call sound will be played.
          x-convai-client-override: true
        tool_call_sound_behavior:
          $ref: '#/components/schemas/ToolCallSoundBehavior'
          description: >-
            Determines when the tool call sound should play. 'auto' only plays
            when there's pre-tool speech, 'always' plays for every tool call.
          default: auto
        tool_error_handling_mode:
          $ref: '#/components/schemas/ToolErrorHandlingMode'
          description: >-
            Controls how tool errors are processed before being shared with the
            agent. 'auto' determines handling based on tool type (summarized for
            native integrations, hide for others), 'summarized' sends an
            LLM-generated summary, 'passthrough' sends the raw error, 'hide'
            does not share the error with the agent.
          default: auto
        params:
          oneOf:
            - $ref: '#/components/schemas/EndCallToolConfig'
            - $ref: '#/components/schemas/LanguageDetectionToolConfig'
            - $ref: '#/components/schemas/TransferToAgentToolConfig'
            - $ref: '#/components/schemas/TransferToNumberToolConfig'
            - $ref: '#/components/schemas/SkipTurnToolConfig'
            - $ref: '#/components/schemas/PlayDTMFToolConfig'
            - $ref: '#/components/schemas/VoicemailDetectionToolConfig'
            - $ref: '#/components/schemas/KnowledgeBaseRagToolConfig'
            - $ref: '#/components/schemas/KnowledgeBaseToolConfig'
            - $ref: '#/components/schemas/StartProcedureToolConfig'
            - $ref: '#/components/schemas/EndProcedureToolConfig'
          title: Params
          discriminator:
            propertyName: system_tool_type
            mapping:
              end_call:
                $ref: '#/components/schemas/EndCallToolConfig'
              end_procedure:
                $ref: '#/components/schemas/EndProcedureToolConfig'
              knowledge_base:
                $ref: '#/components/schemas/KnowledgeBaseToolConfig'
              knowledge_base_rag:
                $ref: '#/components/schemas/KnowledgeBaseRagToolConfig'
              language_detection:
                $ref: '#/components/schemas/LanguageDetectionToolConfig'
              play_keypad_touch_tone:
                $ref: '#/components/schemas/PlayDTMFToolConfig'
              skip_turn:
                $ref: '#/components/schemas/SkipTurnToolConfig'
              start_procedure:
                $ref: '#/components/schemas/StartProcedureToolConfig'
              transfer_to_agent:
                $ref: '#/components/schemas/TransferToAgentToolConfig'
              transfer_to_number:
                $ref: '#/components/schemas/TransferToNumberToolConfig'
              voicemail_detection:
                $ref: '#/components/schemas/VoicemailDetectionToolConfig'
      additionalProperties: false
      type: object
      required:
        - name
        - params
      title: SystemToolConfig
      description: >-
        A system tool is a tool that is used to call a system method in the
        server
      examples:
        - description: ''
          name: end_call
          params:
            system_tool_type: end_call
          type: system
        - description: Custom description for specific use case
          name: transfer_to_agent
          params:
            system_tool_type: transfer_to_agent
            transfers: []
          type: system
    MCPToolConfig-Input:
      properties:
        type:
          type: string
          const: mcp
          title: Type
          default: mcp
        name:
          type: string
          minLength: 0
          pattern: ^[a-zA-Z0-9_-]{1,64}$
          title: Name
        description:
          type: string
          minLength: 0
          title: Description
          description: Description of when the tool should be used and what it does.
        response_timeout_secs:
          type: integer
          maximum: 300
          minimum: 5
          title: Response Timeout Secs
          description: >-
            The maximum time in seconds to wait for the MCP tool call to
            complete. Must be between 5 and 300 seconds (inclusive).
          default: 30
        interruption_mode:
          $ref: '#/components/schemas/ToolInterruptionMode'
          description: >-
            Controls whether the user can interrupt the agent around this tool
            call. 'allow' (default) lets the user interrupt at any time,
            'disable_during_tool' suppresses interruptions only while the tool
            is running, 'disable_during_tool_and_turn' suppresses interruptions
            while the tool runs and for the agent response that follows it.
          default: allow
        pre_tool_speech:
          $ref: '#/components/schemas/PreToolSpeechMode'
          description: >-
            Controls whether the agent speaks before this tool is called. 'auto'
            (default) decides based on recent tool latency, 'force' always asks
            the agent to speak, 'off' fully opts out regardless of latency.
          default: auto
        assignments:
          items:
            $ref: '#/components/schemas/DynamicVariableAssignment'
          type: array
          title: Assignments
          description: >-
            Configuration for extracting values from tool responses and
            assigning them to dynamic variables
        tool_call_sound:
          anyOf:
            - $ref: '#/components/schemas/ToolCallSoundType'
            - type: 'null'
          description: >-
            Predefined tool call sound type to play during tool execution. If
            not specified, no tool call sound will be played.
          x-convai-client-override: true
        tool_call_sound_behavior:
          $ref: '#/components/schemas/ToolCallSoundBehavior'
          description: >-
            Determines when the tool call sound should play. 'auto' only plays
            when there's pre-tool speech, 'always' plays for every tool call.
          default: auto
        tool_error_handling_mode:
          $ref: '#/components/schemas/ToolErrorHandlingMode'
          description: >-
            Controls how tool errors are processed before being shared with the
            agent. 'auto' determines handling based on tool type (summarized for
            native integrations, hide for others), 'summarized' sends an
            LLM-generated summary, 'passthrough' sends the raw error, 'hide'
            does not share the error with the agent.
          default: auto
        integration_type:
          $ref: '#/components/schemas/IntegrationType'
          description: The type of MCP tool
        parameters:
          anyOf:
            - $ref: '#/components/schemas/ObjectJsonSchemaProperty-Input'
            - type: 'null'
          description: Schema for any parameters the LLM needs to provide to the MCP tool.
        approval_policy:
          $ref: '#/components/schemas/MCPApprovalPolicy'
          description: The approval policy for the MCP tool
          default: require_approval_all
        mcp_tool_name:
          type: string
          title: Mcp Tool Name
          description: The name of the MCP tool to call
        mcp_tool_description:
          type: string
          title: Mcp Tool Description
          description: The description of the MCP tool to call
        mcp_server_id:
          type: string
          title: Mcp Server Id
          description: The id of the MCP server to call
        mcp_server_name:
          type: string
          title: Mcp Server Name
          description: The name of the MCP server to call
        mcp_input_schema:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Mcp Input Schema
          description: Original inputSchema dict for consistent hashing
        execution_mode:
          $ref: '#/components/schemas/ToolExecutionMode'
          description: >-
            Determines when and how the tool executes: 'immediate' executes the
            tool right away when requested by the LLM, 'post_tool_speech' waits
            for the agent to finish speaking before executing, 'async' runs the
            tool in the background without blocking - best for long-running
            operations.
          default: immediate
        input_overrides:
          anyOf:
            - additionalProperties:
                oneOf:
                  - $ref: '#/components/schemas/ConstantSchemaOverride'
                  - $ref: '#/components/schemas/DynamicVariableSchemaOverride'
                  - $ref: '#/components/schemas/LLMSchemaOverride'
                  - $ref: '#/components/schemas/OmitSchemaOverride'
                discriminator:
                  propertyName: source
                  mapping:
                    constant:
                      $ref: '#/components/schemas/ConstantSchemaOverride'
                    dynamic_variable:
                      $ref: '#/components/schemas/DynamicVariableSchemaOverride'
                    llm:
                      $ref: '#/components/schemas/LLMSchemaOverride'
                    omit:
                      $ref: '#/components/schemas/OmitSchemaOverride'
              type: object
            - type: 'null'
          title: Input Overrides
          description: Input parameter overrides for this tool
      type: object
      required:
        - name
        - description
        - integration_type
        - mcp_tool_name
        - mcp_tool_description
        - mcp_server_id
        - mcp_server_name
      title: MCPToolConfig
      description: An MCP tool configuration that can be used to call MCP servers.
      x-fern-ignore: true
    ApiIntegrationWebhookToolConfig-Input:
      properties:
        type:
          type: string
          const: api_integration_webhook
          title: Type
          default: api_integration_webhook
        name:
          type: string
          minLength: 0
          pattern: ^[a-zA-Z0-9_-]{1,64}$
          title: Name
        description:
          type: string
          minLength: 0
          title: Description
          description: Description of when the tool should be used and what it does.
        response_timeout_secs:
          type: integer
          maximum: 300
          minimum: 5
          title: Response Timeout Secs
          description: >-
            The maximum time in seconds to wait for the tool call to complete.
            Must be between 5 and 300 seconds (inclusive).
          default: 20
        interruption_mode:
          $ref: '#/components/schemas/ToolInterruptionMode'
          description: >-
            Controls whether the user can interrupt the agent around this tool
            call. 'allow' (default) lets the user interrupt at any time,
            'disable_during_tool' suppresses interruptions only while the tool
            is running, 'disable_during_tool_and_turn' suppresses interruptions
            while the tool runs and for the agent response that follows it.
          default: allow
        pre_tool_speech:
          $ref: '#/components/schemas/PreToolSpeechMode'
          description: >-
            Controls whether the agent speaks before this tool is called. 'auto'
            (default) decides based on recent tool latency, 'force' always asks
            the agent to speak, 'off' fully opts out regardless of latency.
          default: auto
        assignments:
          items:
            $ref: '#/components/schemas/DynamicVariableAssignment'
          type: array
          title: Assignments
          description: >-
            Configuration for extracting values from tool responses and
            assigning them to dynamic variables
        tool_call_sound:
          anyOf:
            - $ref: '#/components/schemas/ToolCallSoundType'
            - type: 'null'
          description: >-
            Predefined tool call sound type to play during tool execution. If
            not specified, no tool call sound will be played.
          x-convai-client-override: true
        tool_call_sound_behavior:
          $ref: '#/components/schemas/ToolCallSoundBehavior'
          description: >-
            Determines when the tool call sound should play. 'auto' only plays
            when there's pre-tool speech, 'always' plays for every tool call.
          default: auto
        tool_error_handling_mode:
          $ref: '#/components/schemas/ToolErrorHandlingMode'
          description: >-
            Controls how tool errors are processed before being shared with the
            agent. 'auto' determines handling based on tool type (summarized for
            native integrations, hide for others), 'summarized' sends an
            LLM-generated summary, 'passthrough' sends the raw error, 'hide'
            does not share the error with the agent.
          default: auto
        dynamic_variables:
          $ref: '#/components/schemas/DynamicVariablesConfig-Input'
          description: Configuration for dynamic variables
        execution_mode:
          $ref: '#/components/schemas/ToolExecutionMode'
          description: >-
            Determines when and how the tool executes: 'immediate' executes the
            tool right away when requested by the LLM, 'post_tool_speech' waits
            for the agent to finish speaking before executing, 'async' runs the
            tool in the background without blocking - best for long-running
            operations.
          default: immediate
        tool_version:
          type: string
          title: Tool Version
          description: The version of the API integration tool
          default: 1.0.0
        api_integration_id:
          type: string
          title: Api Integration Id
        api_integration_connection_id:
          type: string
          title: Api Integration Connection Id
        api_schema_overrides:
          anyOf:
            - $ref: '#/components/schemas/ApiIntegrationWebhookOverrides'
            - type: 'null'
          title: Api Schema Overrides
          description: User overrides applied on top of the base api_schema
      type: object
      required:
        - name
        - description
        - api_integration_id
        - api_integration_connection_id
      title: ApiIntegrationWebhookToolConfig
    SMBToolConfig:
      properties:
        type:
          type: string
          const: smb
          title: Type
          description: Tool type identifier
          default: smb
        name:
          type: string
          minLength: 0
          pattern: ^[a-zA-Z0-9_-]{1,64}$
          title: Name
        description:
          type: string
          minLength: 0
          title: Description
          description: Description of when the tool should be used and what it does.
          default: ''
        response_timeout_secs:
          type: integer
          title: Response Timeout Secs
          description: The maximum time in seconds to wait for the tool call to complete.
          default: 20
        interruption_mode:
          $ref: '#/components/schemas/ToolInterruptionMode'
          description: >-
            Controls whether the user can interrupt the agent around this tool
            call. 'allow' (default) lets the user interrupt at any time,
            'disable_during_tool' suppresses interruptions only while the tool
            is running, 'disable_during_tool_and_turn' suppresses interruptions
            while the tool runs and for the agent response that follows it.
          default: allow
        pre_tool_speech:
          $ref: '#/components/schemas/PreToolSpeechMode'
          description: >-
            Controls whether the agent speaks before this tool is called. 'auto'
            (default) decides based on recent tool latency, 'force' always asks
            the agent to speak, 'off' fully opts out regardless of latency.
          default: auto
        assignments:
          items:
            $ref: '#/components/schemas/DynamicVariableAssignment'
          type: array
          title: Assignments
          description: >-
            Configuration for extracting values from tool responses and
            assigning them to dynamic variables
        tool_call_sound:
          anyOf:
            - $ref: '#/components/schemas/ToolCallSoundType'
            - type: 'null'
          description: >-
            Predefined tool call sound type to play during tool execution. If
            not specified, no tool call sound will be played.
          x-convai-client-override: true
        tool_call_sound_behavior:
          $ref: '#/components/schemas/ToolCallSoundBehavior'
          description: >-
            Determines when the tool call sound should play. 'auto' only plays
            when there's pre-tool speech, 'always' plays for every tool call.
          default: auto
        tool_error_handling_mode:
          $ref: '#/components/schemas/ToolErrorHandlingMode'
          description: >-
            Controls how tool errors are processed before being shared with the
            agent. 'auto' determines handling based on tool type (summarized for
            native integrations, hide for others), 'summarized' sends an
            LLM-generated summary, 'passthrough' sends the raw error, 'hide'
            does not share the error with the agent.
          default: auto
        human_description:
          type: string
          minLength: 0
          title: Human Description
          description: >-
            User-facing tooltip for the procedure reference picker. Not sent to
            the LLM.
          default: ''
        enabled:
          type: boolean
          title: Enabled
          description: Whether this tool is enabled for the agent
          default: true
        params:
          oneOf:
            - $ref: '#/components/schemas/SearchClientsParams'
            - $ref: '#/components/schemas/ListClientsParams'
            - $ref: '#/components/schemas/GetClientByPhoneParams'
            - $ref: '#/components/schemas/CreateClientParams'
            - $ref: '#/components/schemas/UpdateClientParams'
            - $ref: '#/components/schemas/DeleteClientParams'
            - $ref: '#/components/schemas/ListStaffParams'
            - $ref: '#/components/schemas/CreateStaffParams'
            - $ref: '#/components/schemas/UpdateStaffParams'
            - $ref: '#/components/schemas/DeleteStaffParams'
            - $ref: '#/components/schemas/ListAssetsParams'
            - $ref: '#/components/schemas/CreateAssetParams'
            - $ref: '#/components/schemas/UpdateAssetParams'
            - $ref: '#/components/schemas/DeleteAssetParams'
            - $ref: '#/components/schemas/ListServicesParams'
            - $ref: '#/components/schemas/CreateServiceParams'
            - $ref: '#/components/schemas/UpdateServiceParams'
            - $ref: '#/components/schemas/DeleteServiceParams'
            - $ref: '#/components/schemas/ListProductsParams'
            - $ref: '#/components/schemas/CreateProductParams'
            - $ref: '#/components/schemas/UpdateProductParams'
            - $ref: '#/components/schemas/DeleteProductParams'
            - $ref: '#/components/schemas/CheckServiceAvailabilityParams'
            - $ref: '#/components/schemas/CreateClientAppointmentParams'
            - $ref: '#/components/schemas/GetClientAppointmentsParams'
            - $ref: '#/components/schemas/GetAppointmentByConfirmationNumberParams'
            - $ref: '#/components/schemas/CreateOrderParams'
            - $ref: '#/components/schemas/GetOrderByConfirmationNumberParams'
            - $ref: '#/components/schemas/GetClientOrdersParams'
            - $ref: '#/components/schemas/UpdateOrderParams'
            - $ref: '#/components/schemas/CancelOrderParams'
            - $ref: '#/components/schemas/ListGroupSessionsParams'
            - $ref: '#/components/schemas/ScheduleGroupSessionParams'
            - $ref: '#/components/schemas/RegisterForGroupSessionParams'
            - $ref: '#/components/schemas/CancelGroupSessionRegistrationParams'
            - $ref: '#/components/schemas/UpdateGroupSessionSeatsParams'
            - $ref: '#/components/schemas/CancelGroupSessionForAllParams'
            - $ref: '#/components/schemas/DeleteGroupSessionParams'
            - $ref: '#/components/schemas/ListCalendarEventsParams'
            - $ref: '#/components/schemas/UpdateCalendarEventParams'
            - $ref: '#/components/schemas/CancelCalendarEventParams'
            - $ref: '#/components/schemas/RestoreCalendarEventParams'
            - $ref: '#/components/schemas/DeleteCalendarEventParams'
            - $ref: '#/components/schemas/ListCustomerFacingAgentsParams'
            - $ref: '#/components/schemas/ListAgentRulesParams'
            - $ref: '#/components/schemas/CreateAgentRuleParams'
            - $ref: '#/components/schemas/UpdateAgentRuleParams'
            - $ref: '#/components/schemas/DeleteAgentRuleParams'
            - $ref: '#/components/schemas/ListTransferRulesParams'
            - $ref: '#/components/schemas/CreateTransferRuleParams'
            - $ref: '#/components/schemas/UpdateTransferRuleParams'
            - $ref: '#/components/schemas/DeleteTransferRuleParams'
            - $ref: '#/components/schemas/ListAgentProceduresParams'
            - $ref: '#/components/schemas/ListAgentReferencesParams'
            - $ref: '#/components/schemas/CreateAgentProcedureParams'
            - $ref: '#/components/schemas/UpdateAgentProcedureParams'
            - $ref: '#/components/schemas/DeleteAgentProcedureParams'
            - $ref: '#/components/schemas/ListHolidaysParams'
            - $ref: '#/components/schemas/CreateHolidayParams'
            - $ref: '#/components/schemas/UpdateHolidayParams'
            - $ref: '#/components/schemas/DeleteHolidayParams'
            - $ref: '#/components/schemas/GetScheduleParams'
            - $ref: '#/components/schemas/SubmitBusinessInfoParams'
            - $ref: '#/components/schemas/UpdateBusinessInfoParams'
            - $ref: '#/components/schemas/UpdateCustomerFacingConfigParams'
            - $ref: '#/components/schemas/GetAnalyticsSummaryParams'
            - $ref: '#/components/schemas/GetBookingPageSettingsParams'
            - $ref: '#/components/schemas/UpdateBookingPageSettingsParams'
            - $ref: '#/components/schemas/UpdateBookingPageAppearanceParams'
            - $ref: '#/components/schemas/GetBookingSlugStatusParams'
            - $ref: '#/components/schemas/SetBookingSlugParams'
            - $ref: '#/components/schemas/ListClientInteractionsParams'
            - $ref: '#/components/schemas/CreateClientInteractionParams'
            - $ref: '#/components/schemas/DeleteClientInteractionParams'
            - $ref: '#/components/schemas/ListLocationsParams'
            - $ref: '#/components/schemas/CreateLocationParams'
            - $ref: '#/components/schemas/UpdateLocationParams'
            - $ref: '#/components/schemas/DeleteLocationParams'
            - $ref: '#/components/schemas/LeaveMessageParams'
            - $ref: '#/components/schemas/ReportKnowledgeGapParams'
            - $ref: '#/components/schemas/OptInSmsReminderParams'
            - $ref: '#/components/schemas/OptOutSmsReminderParams'
            - $ref: '#/components/schemas/TriggerUserVerificationParams'
            - $ref: '#/components/schemas/ValidateUserVerificationCodeParams'
          title: Params
          discriminator:
            propertyName: smb_tool_type
            mapping:
              cancel_calendar_event:
                $ref: '#/components/schemas/CancelCalendarEventParams'
              cancel_group_session_for_all:
                $ref: '#/components/schemas/CancelGroupSessionForAllParams'
              cancel_group_session_registration:
                $ref: '#/components/schemas/CancelGroupSessionRegistrationParams'
              cancel_order:
                $ref: '#/components/schemas/CancelOrderParams'
              check_service_availability:
                $ref: '#/components/schemas/CheckServiceAvailabilityParams'
              create_agent_procedure:
                $ref: '#/components/schemas/CreateAgentProcedureParams'
              create_agent_rule:
                $ref: '#/components/schemas/CreateAgentRuleParams'
              create_asset:
                $ref: '#/components/schemas/CreateAssetParams'
              create_client:
                $ref: '#/components/schemas/CreateClientParams'
              create_client_appointment:
                $ref: '#/components/schemas/CreateClientAppointmentParams'
              create_client_interaction:
                $ref: '#/components/schemas/CreateClientInteractionParams'
              create_holiday:
                $ref: '#/components/schemas/CreateHolidayParams'
              create_location:
                $ref: '#/components/schemas/CreateLocationParams'
              create_order:
                $ref: '#/components/schemas/CreateOrderParams'
              create_product:
                $ref: '#/components/schemas/CreateProductParams'
              create_service:
                $ref: '#/components/schemas/CreateServiceParams'
              create_staff:
                $ref: '#/components/schemas/CreateStaffParams'
              create_transfer_rule:
                $ref: '#/components/schemas/CreateTransferRuleParams'
              delete_agent_procedure:
                $ref: '#/components/schemas/DeleteAgentProcedureParams'
              delete_agent_rule:
                $ref: '#/components/schemas/DeleteAgentRuleParams'
              delete_asset:
                $ref: '#/components/schemas/DeleteAssetParams'
              delete_calendar_event:
                $ref: '#/components/schemas/DeleteCalendarEventParams'
              delete_client:
                $ref: '#/components/schemas/DeleteClientParams'
              delete_client_interaction:
                $ref: '#/components/schemas/DeleteClientInteractionParams'
              delete_group_session:
                $ref: '#/components/schemas/DeleteGroupSessionParams'
              delete_holiday:
                $ref: '#/components/schemas/DeleteHolidayParams'
              delete_location:
                $ref: '#/components/schemas/DeleteLocationParams'
              delete_product:
                $ref: '#/components/schemas/DeleteProductParams'
              delete_service:
                $ref: '#/components/schemas/DeleteServiceParams'
              delete_staff:
                $ref: '#/components/schemas/DeleteStaffParams'
              delete_transfer_rule:
                $ref: '#/components/schemas/DeleteTransferRuleParams'
              get_analytics_summary:
                $ref: '#/components/schemas/GetAnalyticsSummaryParams'
              get_appointment_by_confirmation_number:
                $ref: '#/components/schemas/GetAppointmentByConfirmationNumberParams'
              get_booking_page_settings:
                $ref: '#/components/schemas/GetBookingPageSettingsParams'
              get_booking_slug_status:
                $ref: '#/components/schemas/GetBookingSlugStatusParams'
              get_client_appointments:
                $ref: '#/components/schemas/GetClientAppointmentsParams'
              get_client_by_phone:
                $ref: '#/components/schemas/GetClientByPhoneParams'
              get_client_orders:
                $ref: '#/components/schemas/GetClientOrdersParams'
              get_order_by_confirmation_number:
                $ref: '#/components/schemas/GetOrderByConfirmationNumberParams'
              get_schedule:
                $ref: '#/components/schemas/GetScheduleParams'
              leave_message:
                $ref: '#/components/schemas/LeaveMessageParams'
              list_agent_procedures:
                $ref: '#/components/schemas/ListAgentProceduresParams'
              list_agent_references:
                $ref: '#/components/schemas/ListAgentReferencesParams'
              list_agent_rules:
                $ref: '#/components/schemas/ListAgentRulesParams'
              list_assets:
                $ref: '#/components/schemas/ListAssetsParams'
              list_calendar_events:
                $ref: '#/components/schemas/ListCalendarEventsParams'
              list_client_interactions:
                $ref: '#/components/schemas/ListClientInteractionsParams'
              list_clients:
                $ref: '#/components/schemas/ListClientsParams'
              list_customer_facing_agents:
                $ref: '#/components/schemas/ListCustomerFacingAgentsParams'
              list_group_sessions:
                $ref: '#/components/schemas/ListGroupSessionsParams'
              list_holidays:
                $ref: '#/components/schemas/ListHolidaysParams'
              list_locations:
                $ref: '#/components/schemas/ListLocationsParams'
              list_products:
                $ref: '#/components/schemas/ListProductsParams'
              list_services:
                $ref: '#/components/schemas/ListServicesParams'
              list_staff:
                $ref: '#/components/schemas/ListStaffParams'
              list_transfer_rules:
                $ref: '#/components/schemas/ListTransferRulesParams'
              opt_in_sms_reminder:
                $ref: '#/components/schemas/OptInSmsReminderParams'
              opt_out_sms_reminder:
                $ref: '#/components/schemas/OptOutSmsReminderParams'
              register_for_group_session:
                $ref: '#/components/schemas/RegisterForGroupSessionParams'
              report_knowledge_gap:
                $ref: '#/components/schemas/ReportKnowledgeGapParams'
              restore_calendar_event:
                $ref: '#/components/schemas/RestoreCalendarEventParams'
              schedule_group_session:
                $ref: '#/components/schemas/ScheduleGroupSessionParams'
              search_clients:
                $ref: '#/components/schemas/SearchClientsParams'
              set_booking_slug:
                $ref: '#/components/schemas/SetBookingSlugParams'
              submit_business_info:
                $ref: '#/components/schemas/SubmitBusinessInfoParams'
              trigger_user_verification:
                $ref: '#/components/schemas/TriggerUserVerificationParams'
              update_agent_procedure:
                $ref: '#/components/schemas/UpdateAgentProcedureParams'
              update_agent_rule:
                $ref: '#/components/schemas/UpdateAgentRuleParams'
              update_asset:
                $ref: '#/components/schemas/UpdateAssetParams'
              update_booking_page_appearance:
                $ref: '#/components/schemas/UpdateBookingPageAppearanceParams'
              update_booking_page_settings:
                $ref: '#/components/schemas/UpdateBookingPageSettingsParams'
              update_business_info:
                $ref: '#/components/schemas/UpdateBusinessInfoParams'
              update_calendar_event:
                $ref: '#/components/schemas/UpdateCalendarEventParams'
              update_client:
                $ref: '#/components/schemas/UpdateClientParams'
              update_customer_facing_config:
                $ref: '#/components/schemas/UpdateCustomerFacingConfigParams'
              update_group_session_seats:
                $ref: '#/components/schemas/UpdateGroupSessionSeatsParams'
              update_holiday:
                $ref: '#/components/schemas/UpdateHolidayParams'
              update_location:
                $ref: '#/components/schemas/UpdateLocationParams'
              update_order:
                $ref: '#/components/schemas/UpdateOrderParams'
              update_product:
                $ref: '#/components/schemas/UpdateProductParams'
              update_service:
                $ref: '#/components/schemas/UpdateServiceParams'
              update_staff:
                $ref: '#/components/schemas/UpdateStaffParams'
              update_transfer_rule:
                $ref: '#/components/schemas/UpdateTransferRuleParams'
              validate_user_verification_code:
                $ref: '#/components/schemas/ValidateUserVerificationCodeParams'
      type: object
      required:
        - name
        - params
      title: SMBToolConfig
      description: SMB tool configuration that wraps SMB tool parameters.
      examples:
        - description: ''
          enabled: true
          name: search_clients
          params:
            smb_tool_type: search_clients
          type: smb
      x-fern-ignore: true
    SarvamStreamType:
      type: string
      enum:
        - fast
        - balanced
        - simulated
      title: SarvamStreamType
    ASREndpointingMode:
      type: string
      enum:
        - vad
        - manual
      title: ASREndpointingMode
    ASTNode-Input:
      oneOf:
        - $ref: '#/components/schemas/ASTStringNode-Input'
          description: String literal.
        - $ref: '#/components/schemas/ASTNumberNode-Input'
          description: Number literal.
        - $ref: '#/components/schemas/ASTBooleanNode-Input'
          description: Boolean literal.
        - $ref: '#/components/schemas/ASTNullNode-Input'
          description: Null literal.
        - $ref: '#/components/schemas/ASTLLMNode-Input'
          description: Value extracted by an LLM according to the given schema.
        - $ref: '#/components/schemas/ASTDynamicVariableNode-Input'
          description: Reference to a dynamic variable.
        - $ref: '#/components/schemas/ASTOrOperatorNode-Input'
          description: Evaluates to true if any child is true.
        - $ref: '#/components/schemas/ASTAndOperatorNode-Input'
          description: Evaluates to true if all children are true.
        - $ref: '#/components/schemas/ASTEqualsOperatorNode-Input'
          description: Evaluates to true if the left value equals the right.
        - $ref: '#/components/schemas/ASTNotEqualsOperatorNode-Input'
          description: Evaluates to true if the left value does not equal the right.
        - $ref: '#/components/schemas/ASTGreaterThanOperatorNode-Input'
          description: Evaluates to true if the left value is greater than the right.
        - $ref: '#/components/schemas/ASTLessThanOperatorNode-Input'
          description: Evaluates to true if the left value is less than the right.
        - $ref: '#/components/schemas/ASTGreaterThanOrEqualsOperatorNode-Input'
          description: >-
            Evaluates to true if the left value is greater than or equal to the
            right.
        - $ref: '#/components/schemas/ASTLessThanOrEqualsOperatorNode-Input'
          description: >-
            Evaluates to true if the left value is less than or equal to the
            right.
        - $ref: '#/components/schemas/ASTAdditionOperatorNode-Input'
          description: Adds the left and right values.
        - $ref: '#/components/schemas/ASTSubtractionOperatorNode-Input'
          description: Subtracts the right value from the left.
        - $ref: '#/components/schemas/ASTMultiplicationOperatorNode-Input'
          description: Multiplies the left value times the right.
        - $ref: '#/components/schemas/ASTDivisionOperatorNode-Input'
          description: Divides the left value by the right.
        - $ref: '#/components/schemas/ASTConditionalOperatorNode-Input'
          description: >-
            Selects one of two expressions based on whether the given condition
            evaluates to true.
      discriminator:
        propertyName: type
        mapping:
          add_operator:
            $ref: '#/components/schemas/ASTAdditionOperatorNode-Input'
          and_operator:
            $ref: '#/components/schemas/ASTAndOperatorNode-Input'
          boolean_literal:
            $ref: '#/components/schemas/ASTBooleanNode-Input'
          conditional_operator:
            $ref: '#/components/schemas/ASTConditionalOperatorNode-Input'
          div_operator:
            $ref: '#/components/schemas/ASTDivisionOperatorNode-Input'
          dynamic_variable:
            $ref: '#/components/schemas/ASTDynamicVariableNode-Input'
          eq_operator:
            $ref: '#/components/schemas/ASTEqualsOperatorNode-Input'
          gt_operator:
            $ref: '#/components/schemas/ASTGreaterThanOperatorNode-Input'
          gte_operator:
            $ref: '#/components/schemas/ASTGreaterThanOrEqualsOperatorNode-Input'
          llm:
            $ref: '#/components/schemas/ASTLLMNode-Input'
          lt_operator:
            $ref: '#/components/schemas/ASTLessThanOperatorNode-Input'
          lte_operator:
            $ref: '#/components/schemas/ASTLessThanOrEqualsOperatorNode-Input'
          mul_operator:
            $ref: '#/components/schemas/ASTMultiplicationOperatorNode-Input'
          neq_operator:
            $ref: '#/components/schemas/ASTNotEqualsOperatorNode-Input'
          null_literal:
            $ref: '#/components/schemas/ASTNullNode-Input'
          number_literal:
            $ref: '#/components/schemas/ASTNumberNode-Input'
          or_operator:
            $ref: '#/components/schemas/ASTOrOperatorNode-Input'
          string_literal:
            $ref: '#/components/schemas/ASTStringNode-Input'
          sub_operator:
            $ref: '#/components/schemas/ASTSubtractionOperatorNode-Input'
    TTSConversationalConfigWorkflowOverride:
      properties:
        voice_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Voice Id
          description: The voice ID to use for TTS
        performance:
          anyOf:
            - $ref: '#/components/schemas/TTSPerformance'
            - type: 'null'
          description: >-
            User-facing TTS performance tier (latency or quality). The concrete
            provider/model is selected by the voice-server based on this value.
        pronunciation_dictionary_locators:
          anyOf:
            - items:
                $ref: >-
                  #/components/schemas/PydanticPronunciationDictionaryVersionLocator
              type: array
            - type: 'null'
          title: Pronunciation Dictionary Locators
          description: The pronunciation dictionary locators
          x-convai-client-override: true
        enable_phoneme_tags:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enable Phoneme Tags
          description: >-
            Opt-in to SSML phoneme tag handling. When enabled, phoneme tags from
            inline content and pronunciation dictionaries may be normalized
            before synthesis when the selected provider supports them.
      type: object
      title: TTSConversationalConfigWorkflowOverride
      example:
        performance: latency
        voice_id: ME9RtCnWp5vX2LhJdF3k
    KnowledgeBaseDocumentType:
      type: string
      enum:
        - file
        - url
        - text
        - folder
      title: KnowledgeBaseDocumentType
    DocumentUsageModeEnum:
      type: string
      enum:
        - prompt
        - auto
      title: DocumentUsageModeEnum
      default: auto
    ConstantSchemaOverride:
      properties:
        source:
          type: string
          const: constant
          title: Source
          default: constant
        constant_value:
          anyOf:
            - type: string
            - type: integer
            - type: number
            - type: boolean
            - items: {}
              type: array
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Constant Value
          description: The constant value to use
      type: object
      required:
        - constant_value
      title: ConstantSchemaOverride
    DynamicVariableSchemaOverride:
      properties:
        source:
          type: string
          const: dynamic_variable
          title: Source
          default: dynamic_variable
        dynamic_variable:
          type: string
          minLength: 1
          title: Dynamic Variable
          description: The name of the dynamic variable to use
      type: object
      required:
        - dynamic_variable
      title: DynamicVariableSchemaOverride
    LLMSchemaOverride:
      properties:
        source:
          type: string
          const: llm
          title: Source
          default: llm
        prompt:
          anyOf:
            - type: string
            - type: 'null'
          title: Prompt
          description: >-
            Prompt override for the LLM. If not provided, the original schema
            description is used.
      type: object
      title: LLMSchemaOverride
    OmitSchemaOverride:
      properties:
        source:
          type: string
          const: omit
          title: Source
          default: omit
      type: object
      title: OmitSchemaOverride
    DynamicVariableValueType-Output:
      anyOf:
        - type: string
        - type: number
        - type: integer
        - type: boolean
        - items:
            $ref: '#/components/schemas/DynamicVariableNestedValueType-Output'
          type: array
        - type: 'null'
    BuiltInTools:
      properties:
        end_call:
          anyOf:
            - $ref: '#/components/schemas/SystemToolConfig'
            - type: 'null'
          description: The end call tool
        language_detection:
          anyOf:
            - $ref: '#/components/schemas/SystemToolConfig'
            - type: 'null'
          description: The language detection tool
        transfer_to_agent:
          anyOf:
            - $ref: '#/components/schemas/SystemToolConfig'
            - type: 'null'
          description: The transfer to agent tool
        transfer_to_number:
          anyOf:
            - $ref: '#/components/schemas/SystemToolConfig'
            - type: 'null'
          description: The transfer to number tool
        skip_turn:
          anyOf:
            - $ref: '#/components/schemas/SystemToolConfig'
            - type: 'null'
          description: The skip turn tool
        play_keypad_touch_tone:
          anyOf:
            - $ref: '#/components/schemas/SystemToolConfig'
            - type: 'null'
          description: The play DTMF tool
        voicemail_detection:
          anyOf:
            - $ref: '#/components/schemas/SystemToolConfig'
            - type: 'null'
          description: The voicemail detection tool
      additionalProperties: false
      type: object
      title: BuiltInTools
    RagConfig:
      properties:
        enabled:
          type: boolean
          title: Enabled
          description: Whether RAG is enabled
          default: false
        embedding_model:
          $ref: '#/components/schemas/EmbeddingModelEnum'
          description: The embedding model to use for RAG
          default: multilingual_e5_large_instruct
        max_vector_distance:
          type: number
          exclusiveMaximum: 1
          exclusiveMinimum: 0
          title: Max Vector Distance
          description: Maximum vector distance of retrieved chunks.
          default: 0.6
        max_documents_length:
          type: integer
          exclusiveMaximum: 10000000
          exclusiveMinimum: 0
          title: Max Documents Length
          description: Maximum total length of document chunks retrieved from RAG.
          default: 50000
        max_retrieved_rag_chunks_count:
          type: integer
          maximum: 20
          exclusiveMinimum: 0
          title: Max Retrieved Rag Chunks Count
          description: >-
            Maximum number of RAG document chunks to initially retrieve from the
            vector store. These are then further filtered by vector distance and
            total length.
          default: 20
        num_candidates:
          anyOf:
            - type: integer
              maximum: 10000
              exclusiveMinimum: 0
            - type: 'null'
          title: Num Candidates
          description: >-
            Number of candidates evaluated in ANN vector search. Higher number
            means better results, but higher latency. Minimum recommended value
            is 100. If disabled, the default value is used.
        query_rewrite_prompt_override:
          anyOf:
            - type: string
              maxLength: 1000
              minLength: 1
            - type: 'null'
          title: Query Rewrite Prompt Override
          description: >-
            Custom prompt for rewriting user queries before RAG retrieval. The
            conversation history will be automatically appended at the end. If
            not set, the default prompt will be used.
      type: object
      title: RagConfig
      example:
        embedding_model: multilingual_e5_large_instruct
        enabled: false
        max_documents_length: 50000
        max_retrieved_rag_chunks_count: 5
        max_vector_distance: 0.5
        num_candidates: 300
    CriteriaScoringMode:
      type: string
      enum:
        - binary
        - numeric_uniform
      title: CriteriaScoringMode
    WidgetEndFeedbackType:
      type: string
      enum:
        - rating
      title: WidgetEndFeedbackType
      default: rating
    WidgetTextContentsTranslation:
      properties:
        source:
          additionalProperties:
            type: string
          type: object
          title: Source
          description: The source text each translated field was derived from
        text:
          additionalProperties:
            type: string
          type: object
          title: Text
          description: The last auto-translated output for each translated field
      type: object
      title: WidgetTextContentsTranslation
    WidgetTermsTranslation:
      properties:
        source_hash:
          type: string
          title: Source Hash
        text:
          type: string
          title: Text
      type: object
      required:
        - source_hash
        - text
      title: WidgetTermsTranslation
    TurnConfigOverrideConfig:
      properties:
        soft_timeout_config:
          $ref: '#/components/schemas/SoftTimeoutConfigOverrideConfig'
          description: Configures overrides for nested fields.
      type: object
      title: TurnConfigOverrideConfig
    TTSConversationalConfigOverrideConfig:
      properties:
        voice_id:
          type: boolean
          title: Voice Id
          description: Whether to allow overriding the voice_id field.
          default: false
        performance:
          type: boolean
          title: Performance
          description: Whether to allow overriding the performance field.
          default: false
        pronunciation_dictionary_locators:
          type: boolean
          title: Pronunciation Dictionary Locators
          description: >-
            Whether to allow overriding the pronunciation_dictionary_locators
            field.
          default: false
      type: object
      title: TTSConversationalConfigOverrideConfig
    ConversationConfigOverrideConfig:
      properties:
        text_only:
          type: boolean
          title: Text Only
          description: Whether to allow overriding the text_only field.
          default: false
        max_duration_seconds:
          type: boolean
          title: Max Duration Seconds
          description: Whether to allow overriding the max_duration_seconds field.
          default: false
      type: object
      title: ConversationConfigOverrideConfig
    AgentConfigOverrideConfig:
      properties:
        first_message:
          type: boolean
          title: First Message
          description: Whether to allow overriding the first_message field.
          default: false
        language:
          type: boolean
          title: Language
          description: Whether to allow overriding the language field.
          default: false
        max_conversation_duration_message:
          type: boolean
          title: Max Conversation Duration Message
          description: >-
            Whether to allow overriding the max_conversation_duration_message
            field.
          default: false
        prompt:
          $ref: '#/components/schemas/PromptAgentAPIModelOverrideConfig'
          description: Configures overrides for nested fields.
      type: object
      title: AgentConfigOverrideConfig
    ConvAISecretLocator:
      properties:
        secret_id:
          type: string
          title: Secret Id
      type: object
      required:
        - secret_id
      title: ConvAISecretLocator
      description: Used to reference a secret from the agent's secret store.
    WebhookEventType:
      type: string
      enum:
        - transcript
        - audio
        - call_initiation_failure
        - unredacted_transcript
        - unredacted_audio
      title: WebhookEventType
    WebhookTranscriptFormat:
      type: string
      enum:
        - json
        - opentelemetry
      title: WebhookTranscriptFormat
      default: json
    GuardrailExecutionMode:
      type: string
      enum:
        - streaming
        - blocking
      title: GuardrailExecutionMode
    ContentConfig:
      properties:
        sexual:
          $ref: '#/components/schemas/ContentThresholdGuardrail'
        violence:
          $ref: '#/components/schemas/ContentThresholdGuardrail'
        harassment:
          $ref: '#/components/schemas/ContentThresholdGuardrail'
        self_harm:
          $ref: '#/components/schemas/ContentThresholdGuardrail'
        profanity:
          $ref: '#/components/schemas/ContentThresholdGuardrail'
        religion_or_politics:
          $ref: '#/components/schemas/ContentThresholdGuardrail'
        medical_and_legal_information:
          $ref: '#/components/schemas/ContentThresholdGuardrail'
      type: object
      title: ContentConfig
    EndCallTriggerAction:
      properties:
        type:
          type: string
          const: end_call
          title: Type
          default: end_call
      type: object
      title: EndCallTriggerAction
    RetryTriggerAction:
      properties:
        type:
          type: string
          const: retry
          title: Type
          default: retry
        feedback:
          type: string
          title: Feedback
          description: >-
            Custom feedback to inject into the agent when retrying after
            guardrail trigger.
          default: >-
            Your response was blocked by a guardrail that blocks content that
            matches this condition/category: '{{trigger_reason}}' During your
            next turn you must tell the user "I'm sorry but I can't answer that
            question, would you like to know something else?".
      type: object
      title: RetryTriggerAction
    ModerationConfig:
      properties:
        sexual:
          $ref: '#/components/schemas/ThresholdGuardrail'
        violence:
          $ref: '#/components/schemas/ThresholdGuardrail'
        violence_graphic:
          $ref: '#/components/schemas/ThresholdGuardrail'
        harassment:
          $ref: '#/components/schemas/ThresholdGuardrail'
        harassment_threatening:
          $ref: '#/components/schemas/ThresholdGuardrail'
        hate:
          $ref: '#/components/schemas/ThresholdGuardrail'
        hate_threatening:
          $ref: '#/components/schemas/ThresholdGuardrail'
        self_harm_instructions:
          $ref: '#/components/schemas/ThresholdGuardrail'
        self_harm:
          $ref: '#/components/schemas/ThresholdGuardrail'
        self_harm_intent:
          $ref: '#/components/schemas/ThresholdGuardrail'
        sexual_minors:
          $ref: '#/components/schemas/ThresholdGuardrail'
      type: object
      title: ModerationConfig
    CustomGuardrailsConfig:
      properties:
        configs:
          items:
            $ref: '#/components/schemas/CustomGuardrailConfig'
          type: array
          title: Configs
      type: object
      title: CustomGuardrailsConfig
      description: Config container for custom guardrails list.
    ConfigEntityType:
      type: string
      enum:
        - name
        - name.name_given
        - name.name_family
        - name.name_other
        - email_address
        - contact_number
        - dob
        - age
        - religious_belief
        - political_opinion
        - sexual_orientation
        - ethnicity_race
        - marital_status
        - occupation
        - physical_attribute
        - language
        - username
        - password
        - url
        - organization
        - financial_id
        - financial_id.payment_card
        - financial_id.payment_card.payment_card_number
        - financial_id.payment_card.payment_card_expiration_date
        - financial_id.payment_card.payment_card_cvv
        - financial_id.bank_account
        - financial_id.bank_account.bank_account_number
        - financial_id.bank_account.bank_routing_number
        - financial_id.bank_account.swift_bic_code
        - financial_id.financial_id_other
        - location
        - location.location_address
        - location.location_city
        - location.location_postal_code
        - location.location_coordinate
        - location.location_state
        - location.location_country
        - location.location_other
        - date
        - date_interval
        - unique_id
        - unique_id.government_issued_id
        - unique_id.account_number
        - unique_id.vehicle_id
        - unique_id.healthcare_number
        - unique_id.healthcare_number.medical_record_number
        - unique_id.healthcare_number.health_plan_beneficiary_number
        - unique_id.device_id
        - unique_id.unique_id_other
        - medical
        - medical.medical_condition
        - medical.medication
        - medical.medical_procedure
        - medical.medical_measurement
        - medical.medical_other
      title: ConfigEntityType
      description: >-
        Entity types for the API configuration.


        This enum contains all valid entity type configurations that users can
        specify:

        - Parent types (e.g., "name", "financial_id") that expand to all
        subtypes

        - Specific subtypes using dot notation (e.g., "name.full_name")

        - Standalone terminal types (e.g., "email_address")

        When converted for service use, parent types expand to all their
        terminal subtypes.
    ASTNode-Output:
      oneOf:
        - $ref: '#/components/schemas/ASTStringNode-Output'
          description: String literal.
        - $ref: '#/components/schemas/ASTNumberNode-Output'
          description: Number literal.
        - $ref: '#/components/schemas/ASTBooleanNode-Output'
          description: Boolean literal.
        - $ref: '#/components/schemas/ASTNullNode-Output'
          description: Null literal.
        - $ref: '#/components/schemas/ASTLLMNode-Output'
          description: Value extracted by an LLM according to the given schema.
        - $ref: '#/components/schemas/ASTDynamicVariableNode-Output'
          description: Reference to a dynamic variable.
        - $ref: '#/components/schemas/ASTOrOperatorNode-Output'
          description: Evaluates to true if any child is true.
        - $ref: '#/components/schemas/ASTAndOperatorNode-Output'
          description: Evaluates to true if all children are true.
        - $ref: '#/components/schemas/ASTEqualsOperatorNode-Output'
          description: Evaluates to true if the left value equals the right.
        - $ref: '#/components/schemas/ASTNotEqualsOperatorNode-Output'
          description: Evaluates to true if the left value does not equal the right.
        - $ref: '#/components/schemas/ASTGreaterThanOperatorNode-Output'
          description: Evaluates to true if the left value is greater than the right.
        - $ref: '#/components/schemas/ASTLessThanOperatorNode-Output'
          description: Evaluates to true if the left value is less than the right.
        - $ref: '#/components/schemas/ASTGreaterThanOrEqualsOperatorNode-Output'
          description: >-
            Evaluates to true if the left value is greater than or equal to the
            right.
        - $ref: '#/components/schemas/ASTLessThanOrEqualsOperatorNode-Output'
          description: >-
            Evaluates to true if the left value is less than or equal to the
            right.
        - $ref: '#/components/schemas/ASTAdditionOperatorNode-Output'
          description: Adds the left and right values.
        - $ref: '#/components/schemas/ASTSubtractionOperatorNode-Output'
          description: Subtracts the right value from the left.
        - $ref: '#/components/schemas/ASTMultiplicationOperatorNode-Output'
          description: Multiplies the left value times the right.
        - $ref: '#/components/schemas/ASTDivisionOperatorNode-Output'
          description: Divides the left value by the right.
        - $ref: '#/components/schemas/ASTConditionalOperatorNode-Output'
          description: >-
            Selects one of two expressions based on whether the given condition
            evaluates to true.
      discriminator:
        propertyName: type
        mapping:
          add_operator:
            $ref: '#/components/schemas/ASTAdditionOperatorNode-Output'
          and_operator:
            $ref: '#/components/schemas/ASTAndOperatorNode-Output'
          boolean_literal:
            $ref: '#/components/schemas/ASTBooleanNode-Output'
          conditional_operator:
            $ref: '#/components/schemas/ASTConditionalOperatorNode-Output'
          div_operator:
            $ref: '#/components/schemas/ASTDivisionOperatorNode-Output'
          dynamic_variable:
            $ref: '#/components/schemas/ASTDynamicVariableNode-Output'
          eq_operator:
            $ref: '#/components/schemas/ASTEqualsOperatorNode-Output'
          gt_operator:
            $ref: '#/components/schemas/ASTGreaterThanOperatorNode-Output'
          gte_operator:
            $ref: '#/components/schemas/ASTGreaterThanOrEqualsOperatorNode-Output'
          llm:
            $ref: '#/components/schemas/ASTLLMNode-Output'
          lt_operator:
            $ref: '#/components/schemas/ASTLessThanOperatorNode-Output'
          lte_operator:
            $ref: '#/components/schemas/ASTLessThanOrEqualsOperatorNode-Output'
          mul_operator:
            $ref: '#/components/schemas/ASTMultiplicationOperatorNode-Output'
          neq_operator:
            $ref: '#/components/schemas/ASTNotEqualsOperatorNode-Output'
          null_literal:
            $ref: '#/components/schemas/ASTNullNode-Output'
          number_literal:
            $ref: '#/components/schemas/ASTNumberNode-Output'
          or_operator:
            $ref: '#/components/schemas/ASTOrOperatorNode-Output'
          string_literal:
            $ref: '#/components/schemas/ASTStringNode-Output'
          sub_operator:
            $ref: '#/components/schemas/ASTSubtractionOperatorNode-Output'
    AgentConfigAPIModelWorkflowOverride-Output:
      properties:
        first_message:
          anyOf:
            - type: string
            - type: 'null'
          title: First Message
          description: >-
            If non-empty, the first message the agent will say. If empty, the
            agent waits for the user to start the discussion.
          x-convai-client-override: true
          x-convai-language-override: true
        language:
          anyOf:
            - type: string
            - type: 'null'
          title: Language
          description: Language of the agent - used for ASR and TTS
          x-convai-client-override: true
        dynamic_variables:
          anyOf:
            - $ref: >-
                #/components/schemas/DynamicVariablesConfigWorkflowOverride-Output
            - type: 'null'
          description: Configuration for dynamic variables
        disable_first_message_interruptions:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Disable First Message Interruptions
          description: >-
            If true, the user will not be able to interrupt the agent while the
            first message is being delivered.
        max_conversation_duration_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Max Conversation Duration Message
          description: >-
            If non-empty, the message the agent will send when max conversation
            duration is reached.
          x-convai-client-override: true
          x-convai-language-override: true
        text_behavior_overrides:
          anyOf:
            - additionalProperties:
                $ref: '#/components/schemas/BehaviorOverride'
              propertyNames:
                $ref: '#/components/schemas/ConversationInitiationSource'
              type: object
            - type: 'null'
          title: Text Behavior Overrides
          description: >-
            Per-channel response behavior overrides for text conversations.
            Built-in channel defaults apply when unset.
        prompt:
          anyOf:
            - $ref: '#/components/schemas/PromptAgentAPIModelWorkflowOverride-Output'
            - type: 'null'
          description: The prompt for the agent
      type: object
      title: AgentConfigAPIModelWorkflowOverride
      example:
        disable_first_message_interruptions: false
        dynamic_variables:
          dynamic_variable_placeholders:
            user_name: John Doe
        first_message: Hello, how can I help you today?
        language: en
        prompt:
          knowledge_base: []
          llm: gemini-2.0-flash-001
          max_tokens: -1
          prompt: >-
            You are a helpful assistant that can answer questions about the
            topic of the conversation.
          temperature: 0
          tool_ids: []
    SoftTimeoutConfigOverride:
      properties:
        message:
          anyOf:
            - type: string
            - type: 'null'
          title: Message
          description: >-
            Message to show when the first soft timeout is reached while waiting
            for LLM response. Supports dynamic variables (e.g.,
            {{system__time}}, {{custom_variable}}).
          x-convai-client-override: true
          x-convai-language-override: true
        additional_soft_timeout_messages:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Additional Soft Timeout Messages
          description: >-
            Extra static filler messages for subsequent soft timeouts in the
            same LLM generation. The first timeout uses `message`. If fewer
            messages are configured than `max_soft_timeouts_per_generation`, the
            last configured message is repeated; otherwise a built-in filler is
            used.
          x-convai-client-override: true
          x-convai-language-override: true
      type: object
      title: SoftTimeoutConfigOverride
      example:
        message: Hhmmmm...yeah.
    PromptAgentAPIModelOverride:
      properties:
        prompt:
          anyOf:
            - type: string
            - type: 'null'
          title: Prompt
          description: The prompt for the agent
          x-convai-client-override: true
        llm:
          anyOf:
            - $ref: '#/components/schemas/LLM'
            - type: 'null'
          description: >-
            The LLM to query with the prompt and the chat history. If using data
            residency, the LLM must be supported in the data residency
            environment
          x-convai-client-override: true
        tool_ids:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Tool Ids
          description: A list of IDs of tools used by the agent
          x-convai-client-override: true
        native_mcp_server_ids:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Native Mcp Server Ids
          description: A list of Native MCP server ids to be used by the agent
          x-convai-client-override: true
        knowledge_base:
          anyOf:
            - items:
                $ref: '#/components/schemas/KnowledgeBaseLocator'
              type: array
            - type: 'null'
          title: Knowledge Base
          description: A list of knowledge bases to be used by the agent
          x-convai-client-override: true
      type: object
      title: PromptAgentAPIModelOverride
      example:
        knowledge_base: []
        llm: gemini-2.0-flash-001
        prompt: >-
          You are a helpful assistant that can answer questions about the topic
          of the conversation.
        tool_ids: []
    DynamicVariableNestedValueType-Input:
      anyOf:
        - type: string
        - type: number
        - type: integer
        - type: boolean
        - items:
            $ref: '#/components/schemas/DynamicVariableNestedValueType-Input'
          type: array
        - type: 'null'
    ConvAIEnvVarLocator:
      properties:
        env_var_label:
          type: string
          title: Env Var Label
      type: object
      required:
        - env_var_label
      title: ConvAIEnvVarLocator
      description: Used to reference an environment variable by label.
    ConvAIDynamicVariable:
      properties:
        variable_name:
          type: string
          title: Variable Name
      type: object
      required:
        - variable_name
      title: ConvAIDynamicVariable
      description: Used to reference a dynamic variable.
    CustomLLMAPIType:
      type: string
      enum:
        - chat_completions
        - responses
        - websocket
      title: CustomLLMAPIType
    EmbeddingModelEnum:
      type: string
      enum:
        - e5_mistral_7b_instruct
        - multilingual_e5_large_instruct
      title: EmbeddingModelEnum
      default: e5_mistral_7b_instruct
    ToolInterruptionMode:
      type: string
      enum:
        - allow
        - disable_during_tool
        - disable_during_tool_and_turn
      title: ToolInterruptionMode
      default: allow
    PreToolSpeechMode:
      type: string
      enum:
        - auto
        - force
        - 'off'
      title: PreToolSpeechMode
    DynamicVariableAssignment:
      properties:
        source:
          type: string
          const: response
          title: Source
          description: >-
            The source to extract the value from. Currently only 'response' is
            supported.
          default: response
        dynamic_variable:
          type: string
          title: Dynamic Variable
          description: The name of the dynamic variable to assign the extracted value to
        value_path:
          type: string
          title: Value Path
          description: >-
            Dot notation path to extract the value from the source (e.g.,
            'user.name' or 'data.0.id')
        sanitize:
          type: boolean
          title: Sanitize
          description: >-
            If true, this assignment's value will be removed from the tool
            response before sending to the LLM and transcript, but still
            processed for variable assignment.
          default: false
        preserve_native_type:
          type: boolean
          title: Preserve Native Type
          description: >-
            If true, non-scalar values (lists, objects) extracted from the tool
            response are stored as their native type instead of being
            stringified to JSON. Enable this to use extracted arrays directly as
            list dynamic variables.
          default: false
      additionalProperties: false
      type: object
      required:
        - dynamic_variable
        - value_path
      title: DynamicVariableAssignment
      description: >-
        Configuration for extracting values from tool responses and assigning
        them to dynamic variables.
      example:
        dynamic_variable: user_name
        preserve_native_type: false
        sanitize: false
        source: response
        value_path: user.name
    ToolCallSoundType:
      type: string
      enum:
        - typing
        - elevator1
        - elevator2
        - elevator3
        - elevator4
      title: ToolCallSoundType
      description: Predefined tool call sound types.
    ToolCallSoundBehavior:
      type: string
      enum:
        - auto
        - always
      title: ToolCallSoundBehavior
      description: Determines how the tool call sound should be played.
    ToolErrorHandlingMode:
      type: string
      enum:
        - auto
        - summarized
        - passthrough
        - hide
      title: ToolErrorHandlingMode
      description: >-
        Controls how tool errors are processed before being shared with the
        agent.
    DynamicVariablesConfig-Input:
      properties:
        dynamic_variable_placeholders:
          additionalProperties:
            $ref: '#/components/schemas/DynamicVariableValueType-Input'
          type: object
          title: Dynamic Variable Placeholders
          description: A dictionary of dynamic variable placeholders and their values
      type: object
      title: DynamicVariablesConfig
      example:
        dynamic_variable_placeholders:
          user_name: John Doe
    ToolExecutionMode:
      type: string
      enum:
        - immediate
        - post_tool_speech
        - async
      title: ToolExecutionMode
    WebhookToolApiSchemaConfig-Input:
      properties:
        request_headers:
          additionalProperties:
            anyOf:
              - type: string
              - $ref: '#/components/schemas/ConvAISecretLocator'
              - $ref: '#/components/schemas/ConvAIDynamicVariable'
              - $ref: '#/components/schemas/ConvAIEnvVarLocator'
          type: object
          title: Request Headers
          description: Headers that should be included in the request
        url:
          type: string
          title: Url
          description: >-
            The URL that the webhook will be sent to. May include path
            parameters, e.g. https://example.com/agents/{agent_id}
        method:
          type: string
          enum:
            - GET
            - POST
            - PUT
            - PATCH
            - DELETE
          title: Method
          description: The HTTP method to use for the webhook
          default: GET
        path_params_schema:
          additionalProperties:
            $ref: '#/components/schemas/LiteralJsonSchemaProperty'
          type: object
          title: Path Params Schema
          description: >-
            Schema for path parameters, if any. The keys should match the
            placeholders in the URL.
        query_params_schema:
          anyOf:
            - $ref: '#/components/schemas/QueryParamsJsonSchema'
            - type: 'null'
          description: >-
            Schema for any query params, if any. These will be added to end of
            the URL as query params. Note: properties in a query param must all
            be literal types
        request_body_schema:
          anyOf:
            - $ref: '#/components/schemas/ObjectJsonSchemaProperty-Input'
            - type: 'null'
          description: >-
            Schema for the body parameters, if any. Used for POST/PATCH/PUT
            requests. The schema should be an object which will be sent as the
            json body
        response_body_schema:
          anyOf:
            - $ref: '#/components/schemas/ObjectJsonSchemaProperty-Input'
            - type: 'null'
          description: >-
            Schema describing the expected response body structure. For
            documentation only; not surfaced to the LLM.
        response_filter:
          anyOf:
            - $ref: '#/components/schemas/ResponseFilter'
            - type: 'null'
          description: >-
            Optional allow-list filter applied to the response before the LLM
            sees it, so large responses don't pollute the context. Defaults to
            the full response.
        content_type:
          type: string
          enum:
            - application/json
            - application/x-www-form-urlencoded
          title: Content Type
          description: >-
            Content type for the request body. Only applies to POST/PUT/PATCH
            requests.
          default: application/json
        auth_resolved_params:
          items:
            type: string
          type: array
          uniqueItems: true
          title: Auth Resolved Params
          description: >-
            URL placeholders resolved from the auth connection (e.g. secrets
            injected via UrlSecretAuthConnection) rather than from
            path_params_schema.
        auth_connection:
          anyOf:
            - $ref: '#/components/schemas/AuthConnectionLocator'
            - $ref: '#/components/schemas/EnvironmentAuthConnectionLocator'
            - type: 'null'
          title: Auth Connection
          description: Optional auth connection to use for authentication with this webhook
      type: object
      required:
        - url
      title: WebhookToolApiSchemaConfig
      example:
        method: GET
        path_params_schema:
          agent_id:
            type: string
        query_params_schema:
          param1:
            type: string
        request_body_schema:
          param1:
            type: string
        request_headers:
          Authorization: Bearer {api_key}
        url: https://example.com/agents/{agent_id}
    ObjectJsonSchemaProperty-Input:
      properties:
        property_kind:
          type: string
          enum:
            - array
            - object
          title: Property Kind
          default: object
        description:
          type: string
          title: Description
          default: ''
        dynamic_variable:
          type: string
          title: Dynamic Variable
          description: >-
            When set, the entire parameter is populated from this dynamic
            variable at runtime. Mutually exclusive with description
            (LLM-provided value), constant_value, and is_omitted.
          default: ''
        constant_value:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Constant Value
          description: >-
            When set, the entire object uses this constant JSON value at
            runtime. Mutually exclusive with description (LLM-provided object),
            dynamic_variable, and is_omitted.
        is_omitted:
          type: boolean
          title: Is Omitted
          description: >-
            If true, this parameter will be completely omitted from the request.
            Only valid for optional parameters. Mutually exclusive with
            description, dynamic_variable, and constant_value.
          default: false
        type:
          type: string
          const: object
          title: Type
          default: object
        required:
          items:
            type: string
          type: array
          title: Required
        properties:
          additionalProperties:
            oneOf:
              - $ref: '#/components/schemas/LiteralJsonSchemaProperty'
              - $ref: '#/components/schemas/ObjectJsonSchemaProperty-Input'
              - $ref: '#/components/schemas/ArrayJsonSchemaProperty-Input'
          type: object
          title: Properties
        required_constraints:
          anyOf:
            - $ref: '#/components/schemas/RequiredConstraints'
            - type: 'null'
      additionalProperties: false
      type: object
      title: ObjectJsonSchemaProperty
    EndCallToolConfig:
      properties:
        system_tool_type:
          type: string
          const: end_call
          title: System Tool Type
          default: end_call
      additionalProperties: false
      type: object
      title: EndCallToolConfig
    LanguageDetectionToolConfig:
      properties:
        system_tool_type:
          type: string
          const: language_detection
          title: System Tool Type
          default: language_detection
        only_at_conversation_start:
          type: boolean
          title: Only At Conversation Start
          description: >-
            If no language switch happens in the first 2 user turns, later
            attempts fail and the conversation stays in the current language. If
            the language switches during those turns, later switching stays
            available. Enable to reduce the possibility of false switching.
          default: false
      additionalProperties: false
      type: object
      title: LanguageDetectionToolConfig
    TransferToAgentToolConfig:
      properties:
        system_tool_type:
          type: string
          const: transfer_to_agent
          title: System Tool Type
          default: transfer_to_agent
        transfers:
          items:
            $ref: '#/components/schemas/AgentTransfer'
          type: array
          title: Transfers
      additionalProperties: false
      type: object
      required:
        - transfers
      title: TransferToAgentToolConfig
    TransferToNumberToolConfig:
      properties:
        system_tool_type:
          type: string
          const: transfer_to_number
          title: System Tool Type
          default: transfer_to_number
        transfers:
          items:
            $ref: '#/components/schemas/PhoneNumberTransfer'
          type: array
          title: Transfers
        enable_client_message:
          type: boolean
          title: Enable Client Message
          description: >-
            Whether to play a message to the client while they wait for
            transfer. Defaults to true.
          default: true
      additionalProperties: false
      type: object
      required:
        - transfers
      title: TransferToNumberToolConfig
    SkipTurnToolConfig:
      properties:
        system_tool_type:
          type: string
          const: skip_turn
          title: System Tool Type
          default: skip_turn
      additionalProperties: false
      type: object
      title: SkipTurnToolConfig
    PlayDTMFToolConfig:
      properties:
        system_tool_type:
          type: string
          const: play_keypad_touch_tone
          title: System Tool Type
          default: play_keypad_touch_tone
        use_out_of_band_dtmf:
          type: boolean
          title: Use Out Of Band Dtmf
          description: >-
            Send DTMF tones as out-of-band RTP events (RFC 4733) instead of
            in-band audio. Only effective for SIP trunk imported numbers.
          default: true
        suppress_turn_after_dtmf:
          type: boolean
          title: Suppress Turn After Dtmf
          description: >-
            If true, the agent will not generate further speech after playing
            DTMF tones. This prevents the agent's speech from interfering with
            IVR systems.
          default: false
      additionalProperties: false
      type: object
      title: PlayDTMFToolConfig
    VoicemailDetectionToolConfig:
      properties:
        system_tool_type:
          type: string
          const: voicemail_detection
          title: System Tool Type
          default: voicemail_detection
        voicemail_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Voicemail Message
          description: >-
            Optional message to leave on voicemail when detected. If not
            provided, the call will end immediately when voicemail is detected.
            Supports dynamic variables (e.g., {{system__time}},
            {{system__call_duration_secs}}, {{custom_variable}}).
      additionalProperties: false
      type: object
      title: VoicemailDetectionToolConfig
    KnowledgeBaseRagToolConfig:
      properties:
        system_tool_type:
          type: string
          const: knowledge_base_rag
          title: System Tool Type
          default: knowledge_base_rag
      additionalProperties: false
      type: object
      title: KnowledgeBaseRagToolConfig
    KnowledgeBaseToolConfig:
      properties:
        system_tool_type:
          type: string
          const: knowledge_base
          title: System Tool Type
          default: knowledge_base
        enabled_strategies:
          items:
            $ref: '#/components/schemas/SearchStrategy'
          type: array
          title: Enabled Strategies
      additionalProperties: false
      type: object
      title: KnowledgeBaseToolConfig
    StartProcedureToolConfig:
      properties:
        system_tool_type:
          type: string
          const: start_procedure
          title: System Tool Type
          default: start_procedure
        procedures:
          additionalProperties:
            anyOf:
              - $ref: '#/components/schemas/ProcedureVersionRef'
              - $ref: '#/components/schemas/ProcedureDraftRef'
          type: object
          title: Procedures
      additionalProperties: false
      type: object
      title: StartProcedureToolConfig
    EndProcedureToolConfig:
      properties:
        system_tool_type:
          type: string
          const: end_procedure
          title: System Tool Type
          default: end_procedure
        procedures:
          additionalProperties:
            anyOf:
              - $ref: '#/components/schemas/ProcedureVersionRef'
              - $ref: '#/components/schemas/ProcedureDraftRef'
          type: object
          title: Procedures
      additionalProperties: false
      type: object
      title: EndProcedureToolConfig
    IntegrationType:
      type: string
      enum:
        - mcp_server
        - mcp_integration
      title: IntegrationType
    MCPApprovalPolicy:
      type: string
      enum:
        - auto_approve_all
        - require_approval_all
        - require_approval_per_tool
      title: MCPApprovalPolicy
      description: Defines the MCP server-level approval policy for tool execution.
      default: require_approval_all
    ApiIntegrationWebhookOverrides:
      properties:
        schema_overrides:
          anyOf:
            - additionalProperties:
                oneOf:
                  - $ref: '#/components/schemas/ConstantSchemaOverride'
                  - $ref: '#/components/schemas/DynamicVariableSchemaOverride'
                  - $ref: '#/components/schemas/LLMSchemaOverride'
                  - $ref: '#/components/schemas/OmitSchemaOverride'
                discriminator:
                  propertyName: source
                  mapping:
                    constant:
                      $ref: '#/components/schemas/ConstantSchemaOverride'
                    dynamic_variable:
                      $ref: '#/components/schemas/DynamicVariableSchemaOverride'
                    llm:
                      $ref: '#/components/schemas/LLMSchemaOverride'
                    omit:
                      $ref: '#/components/schemas/OmitSchemaOverride'
              type: object
            - type: 'null'
          title: Schema Overrides
        request_headers:
          anyOf:
            - additionalProperties:
                anyOf:
                  - type: string
                  - $ref: '#/components/schemas/ConvAIDynamicVariable'
              type: object
            - type: 'null'
          title: Request Headers
        response_filter_mode:
          anyOf:
            - $ref: '#/components/schemas/ResponseFilterMode'
            - type: 'null'
        response_filters:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Response Filters
      type: object
      title: ApiIntegrationWebhookOverrides
      description: |-
        A whitelist of fields that can be overridden by users when
        configuring an API Integration Webhook Tool.
    SearchClientsParams:
      properties:
        smb_tool_type:
          type: string
          const: search_clients
          title: Smb Tool Type
          default: search_clients
      type: object
      title: SearchClientsParams
      description: Search for clients by name, phone number, or email.
    ListClientsParams:
      properties:
        smb_tool_type:
          type: string
          const: list_clients
          title: Smb Tool Type
          default: list_clients
      type: object
      title: ListClientsParams
      description: List clients ordered by most recently updated, with an optional limit.
    GetClientByPhoneParams:
      properties:
        smb_tool_type:
          type: string
          const: get_client_by_phone
          title: Smb Tool Type
          default: get_client_by_phone
      type: object
      title: GetClientByPhoneParams
      description: Look up a client by their exact phone number.
    CreateClientParams:
      properties:
        smb_tool_type:
          type: string
          const: create_client
          title: Smb Tool Type
          default: create_client
      type: object
      title: CreateClientParams
      description: Create a new client in the system.
    UpdateClientParams:
      properties:
        smb_tool_type:
          type: string
          const: update_client
          title: Smb Tool Type
          default: update_client
      type: object
      title: UpdateClientParams
      description: Update an existing client's information.
    DeleteClientParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_client
          title: Smb Tool Type
          default: delete_client
      type: object
      title: DeleteClientParams
      description: Delete a client, cascading deletion of all their appointments first.
    ListStaffParams:
      properties:
        list_kwargs:
          additionalProperties: true
          type: object
          title: List Kwargs
        smb_tool_type:
          type: string
          const: list_staff
          title: Smb Tool Type
          default: list_staff
      type: object
      title: ListStaffParams
    CreateStaffParams:
      properties:
        smb_tool_type:
          type: string
          const: create_staff
          title: Smb Tool Type
          default: create_staff
      type: object
      title: CreateStaffParams
      description: Create a new staff member in the system.
    UpdateStaffParams:
      properties:
        smb_tool_type:
          type: string
          const: update_staff
          title: Smb Tool Type
          default: update_staff
      type: object
      title: UpdateStaffParams
      description: Update an existing staff member's information.
    DeleteStaffParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_staff
          title: Smb Tool Type
          default: delete_staff
      type: object
      title: DeleteStaffParams
      description: Delete an existing staff member from the system.
    ListAssetsParams:
      properties:
        list_kwargs:
          additionalProperties: true
          type: object
          title: List Kwargs
        smb_tool_type:
          type: string
          const: list_assets
          title: Smb Tool Type
          default: list_assets
      type: object
      title: ListAssetsParams
    CreateAssetParams:
      properties:
        smb_tool_type:
          type: string
          const: create_asset
          title: Smb Tool Type
          default: create_asset
      type: object
      title: CreateAssetParams
    UpdateAssetParams:
      properties:
        smb_tool_type:
          type: string
          const: update_asset
          title: Smb Tool Type
          default: update_asset
      type: object
      title: UpdateAssetParams
    DeleteAssetParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_asset
          title: Smb Tool Type
          default: delete_asset
      type: object
      title: DeleteAssetParams
    ListServicesParams:
      properties:
        list_kwargs:
          additionalProperties: true
          type: object
          title: List Kwargs
        smb_tool_type:
          type: string
          const: list_services
          title: Smb Tool Type
          default: list_services
      type: object
      title: ListServicesParams
    CreateServiceParams:
      properties:
        smb_tool_type:
          type: string
          const: create_service
          title: Smb Tool Type
          default: create_service
      type: object
      title: CreateServiceParams
      description: Create a new service (classic, rental, or group) in the system.
    UpdateServiceParams:
      properties:
        smb_tool_type:
          type: string
          const: update_service
          title: Smb Tool Type
          default: update_service
      type: object
      title: UpdateServiceParams
      description: Update an existing service's information.
    DeleteServiceParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_service
          title: Smb Tool Type
          default: delete_service
      type: object
      title: DeleteServiceParams
      description: Delete an existing service from the system.
    ListProductsParams:
      properties:
        list_kwargs:
          additionalProperties: true
          type: object
          title: List Kwargs
        smb_tool_type:
          type: string
          const: list_products
          title: Smb Tool Type
          default: list_products
      type: object
      title: ListProductsParams
    CreateProductParams:
      properties:
        smb_tool_type:
          type: string
          const: create_product
          title: Smb Tool Type
          default: create_product
      type: object
      title: CreateProductParams
    UpdateProductParams:
      properties:
        smb_tool_type:
          type: string
          const: update_product
          title: Smb Tool Type
          default: update_product
      type: object
      title: UpdateProductParams
    DeleteProductParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_product
          title: Smb Tool Type
          default: delete_product
      type: object
      title: DeleteProductParams
    CheckServiceAvailabilityParams:
      properties:
        smb_tool_type:
          type: string
          const: check_service_availability
          title: Smb Tool Type
          default: check_service_availability
      type: object
      title: CheckServiceAvailabilityParams
    CreateClientAppointmentParams:
      properties:
        smb_tool_type:
          type: string
          const: create_client_appointment
          title: Smb Tool Type
          default: create_client_appointment
      type: object
      title: CreateClientAppointmentParams
    GetClientAppointmentsParams:
      properties:
        smb_tool_type:
          type: string
          const: get_client_appointments
          title: Smb Tool Type
          default: get_client_appointments
        include_cancelled:
          type: boolean
          title: Include Cancelled
          default: false
      type: object
      title: GetClientAppointmentsParams
    GetAppointmentByConfirmationNumberParams:
      properties:
        smb_tool_type:
          type: string
          const: get_appointment_by_confirmation_number
          title: Smb Tool Type
          default: get_appointment_by_confirmation_number
      type: object
      title: GetAppointmentByConfirmationNumberParams
      description: >-
        Look up an appointment by the booking confirmation number the caller
        quotes.


        The confirmation number is the 8-character code shown on the booking

        confirmation page (e.g. ``#01ABCDEF``). Callers may read it back with or

        without the leading ``#`` and with varied spacing; the tool normalizes

        the input and does a prefix match on the stored calendar item id.
    CreateOrderParams:
      properties:
        smb_tool_type:
          type: string
          const: create_order
          title: Smb Tool Type
          default: create_order
      type: object
      title: CreateOrderParams
    GetOrderByConfirmationNumberParams:
      properties:
        smb_tool_type:
          type: string
          const: get_order_by_confirmation_number
          title: Smb Tool Type
          default: get_order_by_confirmation_number
      type: object
      title: GetOrderByConfirmationNumberParams
    GetClientOrdersParams:
      properties:
        smb_tool_type:
          type: string
          const: get_client_orders
          title: Smb Tool Type
          default: get_client_orders
        include_cancelled:
          type: boolean
          title: Include Cancelled
          default: false
      type: object
      title: GetClientOrdersParams
    UpdateOrderParams:
      properties:
        smb_tool_type:
          type: string
          const: update_order
          title: Smb Tool Type
          default: update_order
      type: object
      title: UpdateOrderParams
    CancelOrderParams:
      properties:
        smb_tool_type:
          type: string
          const: cancel_order
          title: Smb Tool Type
          default: cancel_order
      type: object
      title: CancelOrderParams
    ListGroupSessionsParams:
      properties:
        smb_tool_type:
          type: string
          const: list_group_sessions
          title: Smb Tool Type
          default: list_group_sessions
      type: object
      title: ListGroupSessionsParams
      description: >-
        List scheduled group sessions for a group service in a date range.


        Group services are scheduled in advance (e.g. yoga classes, workshops)
        and

        callers register against an existing session. Use this for group
        services;

        use ``check_service_availability`` for appointment / rental services.
    ScheduleGroupSessionParams:
      properties:
        smb_tool_type:
          type: string
          const: schedule_group_session
          title: Smb Tool Type
          default: schedule_group_session
      type: object
      title: ScheduleGroupSessionParams
      description: >-
        Schedule a single instance of a group service.


        The session's duration is derived from the parent service so the
        assistant

        only has to pin start time, the (optional) instructor / room, and the

        location. Participants register separately via

        ``register_for_group_session``.
    RegisterForGroupSessionParams:
      properties:
        smb_tool_type:
          type: string
          const: register_for_group_session
          title: Smb Tool Type
          default: register_for_group_session
      type: object
      title: RegisterForGroupSessionParams
      description: Register a client for a scheduled group session.
    CancelGroupSessionRegistrationParams:
      properties:
        smb_tool_type:
          type: string
          const: cancel_group_session_registration
          title: Smb Tool Type
          default: cancel_group_session_registration
      type: object
      title: CancelGroupSessionRegistrationParams
      description: Cancel a single client's registration for a group session.
    UpdateGroupSessionSeatsParams:
      properties:
        smb_tool_type:
          type: string
          const: update_group_session_seats
          title: Smb Tool Type
          default: update_group_session_seats
      type: object
      title: UpdateGroupSessionSeatsParams
      description: Change the seat count of an existing group session registration.
    CancelGroupSessionForAllParams:
      properties:
        smb_tool_type:
          type: string
          const: cancel_group_session_for_all
          title: Smb Tool Type
          default: cancel_group_session_for_all
      type: object
      title: CancelGroupSessionForAllParams
      description: >-
        Cancel an entire group session and notify every registered participant.

        Destructive -- prefer ``cancel_group_session_registration`` for
        cancelling

        a single attendee.
    DeleteGroupSessionParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_group_session
          title: Smb Tool Type
          default: delete_group_session
      type: object
      title: DeleteGroupSessionParams
      description: |-
        Permanently remove a previously-cancelled group session.

        Group analogue of ``delete_calendar_event``: cancel
        (``cancel_group_session_for_all``) is the soft, history-preserving step;
        this tool is the irreversible follow-up that drops the row from Mongo
        and the staff Google Calendar entirely. The backend rejects the call
        (422) if the session hasn't been cancelled yet, so the only safe path
        is cancel-then-delete.
    ListCalendarEventsParams:
      properties:
        smb_tool_type:
          type: string
          const: list_calendar_events
          title: Smb Tool Type
          default: list_calendar_events
        include_cancelled:
          type: boolean
          title: Include Cancelled
          default: false
      type: object
      title: ListCalendarEventsParams
    UpdateCalendarEventParams:
      properties:
        smb_tool_type:
          type: string
          const: update_calendar_event
          title: Smb Tool Type
          default: update_calendar_event
      type: object
      title: UpdateCalendarEventParams
    CancelCalendarEventParams:
      properties:
        smb_tool_type:
          type: string
          const: cancel_calendar_event
          title: Smb Tool Type
          default: cancel_calendar_event
      type: object
      title: CancelCalendarEventParams
    RestoreCalendarEventParams:
      properties:
        smb_tool_type:
          type: string
          const: restore_calendar_event
          title: Smb Tool Type
          default: restore_calendar_event
      type: object
      title: RestoreCalendarEventParams
    DeleteCalendarEventParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_calendar_event
          title: Smb Tool Type
          default: delete_calendar_event
      type: object
      title: DeleteCalendarEventParams
      description: |-
        Permanently remove a previously-cancelled calendar event.

        This delete tool is the irreversible follow-up to cancel_calendar_event.
        The backend rejects the call (422) if the event hasn't been
        cancelled yet, so the only safe path is cancel-then-delete.
    ListCustomerFacingAgentsParams:
      properties:
        smb_tool_type:
          type: string
          const: list_customer_facing_agents
          title: Smb Tool Type
          default: list_customer_facing_agents
      type: object
      title: ListCustomerFacingAgentsParams
      description: >-
        List every customer-facing agent on the workspace.


        The assistant uses this whenever it needs to act on a specific
        customer-facing

        agent (rules, config edits, etc.) so it can pick the right ``agent_id``
        to pass

        to mutating tools. Mirrors the ``list_services`` / ``list_clients``

        pattern: read once, then mutate by id.
    ListAgentRulesParams:
      properties:
        smb_tool_type:
          type: string
          const: list_agent_rules
          title: Smb Tool Type
          default: list_agent_rules
      type: object
      title: ListAgentRulesParams
    CreateAgentRuleParams:
      properties:
        smb_tool_type:
          type: string
          const: create_agent_rule
          title: Smb Tool Type
          default: create_agent_rule
      type: object
      title: CreateAgentRuleParams
    UpdateAgentRuleParams:
      properties:
        smb_tool_type:
          type: string
          const: update_agent_rule
          title: Smb Tool Type
          default: update_agent_rule
      type: object
      title: UpdateAgentRuleParams
    DeleteAgentRuleParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_agent_rule
          title: Smb Tool Type
          default: delete_agent_rule
      type: object
      title: DeleteAgentRuleParams
    ListTransferRulesParams:
      properties:
        smb_tool_type:
          type: string
          const: list_transfer_rules
          title: Smb Tool Type
          default: list_transfer_rules
      type: object
      title: ListTransferRulesParams
    CreateTransferRuleParams:
      properties:
        smb_tool_type:
          type: string
          const: create_transfer_rule
          title: Smb Tool Type
          default: create_transfer_rule
        post_dial_digits_enabled:
          type: boolean
          title: Post Dial Digits Enabled
          description: >-
            Whether to offer the post_dial_digits parameter, set from the
            receptionists' enable_play_keypad_touch_tone_tool config. Digits
            saved while that is off are dropped when the receptionist is built,
            so the parameter is hidden rather than accepted and ignored.
          default: false
      type: object
      title: CreateTransferRuleParams
    UpdateTransferRuleParams:
      properties:
        smb_tool_type:
          type: string
          const: update_transfer_rule
          title: Smb Tool Type
          default: update_transfer_rule
        post_dial_digits_enabled:
          type: boolean
          title: Post Dial Digits Enabled
          description: >-
            Whether to offer the post_dial_digits parameter, set from the
            receptionists' enable_play_keypad_touch_tone_tool config. Digits
            saved while that is off are dropped when the receptionist is built,
            so the parameter is hidden rather than accepted and ignored.
          default: false
      type: object
      title: UpdateTransferRuleParams
    DeleteTransferRuleParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_transfer_rule
          title: Smb Tool Type
          default: delete_transfer_rule
      type: object
      title: DeleteTransferRuleParams
    ListAgentProceduresParams:
      properties:
        smb_tool_type:
          type: string
          const: list_agent_procedures
          title: Smb Tool Type
          default: list_agent_procedures
      type: object
      title: ListAgentProceduresParams
    ListAgentReferencesParams:
      properties:
        smb_tool_type:
          type: string
          const: list_agent_references
          title: Smb Tool Type
          default: list_agent_references
      type: object
      title: ListAgentReferencesParams
    CreateAgentProcedureParams:
      properties:
        smb_tool_type:
          type: string
          const: create_agent_procedure
          title: Smb Tool Type
          default: create_agent_procedure
      type: object
      title: CreateAgentProcedureParams
    UpdateAgentProcedureParams:
      properties:
        smb_tool_type:
          type: string
          const: update_agent_procedure
          title: Smb Tool Type
          default: update_agent_procedure
      type: object
      title: UpdateAgentProcedureParams
    DeleteAgentProcedureParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_agent_procedure
          title: Smb Tool Type
          default: delete_agent_procedure
      type: object
      title: DeleteAgentProcedureParams
    ListHolidaysParams:
      properties:
        smb_tool_type:
          type: string
          const: list_holidays
          title: Smb Tool Type
          default: list_holidays
      type: object
      title: ListHolidaysParams
    CreateHolidayParams:
      properties:
        smb_tool_type:
          type: string
          const: create_holiday
          title: Smb Tool Type
          default: create_holiday
      type: object
      title: CreateHolidayParams
    UpdateHolidayParams:
      properties:
        smb_tool_type:
          type: string
          const: update_holiday
          title: Smb Tool Type
          default: update_holiday
      type: object
      title: UpdateHolidayParams
    DeleteHolidayParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_holiday
          title: Smb Tool Type
          default: delete_holiday
      type: object
      title: DeleteHolidayParams
    GetScheduleParams:
      properties:
        smb_tool_type:
          type: string
          const: get_schedule
          title: Smb Tool Type
          default: get_schedule
        include_location_filter:
          type: boolean
          title: Include Location Filter
          default: false
      type: object
      title: GetScheduleParams
    SubmitBusinessInfoParams:
      properties:
        smb_tool_type:
          type: string
          const: submit_business_info
          title: Smb Tool Type
          default: submit_business_info
      type: object
      title: SubmitBusinessInfoParams
      description: >-
        Finalize the onboarding interview: create a text knowledge source and
        mark done.
    UpdateBusinessInfoParams:
      properties:
        smb_tool_type:
          type: string
          const: update_business_info
          title: Smb Tool Type
          default: update_business_info
      type: object
      title: UpdateBusinessInfoParams
    UpdateCustomerFacingConfigParams:
      properties:
        smb_tool_type:
          type: string
          const: update_customer_facing_config
          title: Smb Tool Type
          default: update_customer_facing_config
      type: object
      title: UpdateCustomerFacingConfigParams
    GetAnalyticsSummaryParams:
      properties:
        smb_tool_type:
          type: string
          const: get_analytics_summary
          title: Smb Tool Type
          default: get_analytics_summary
      type: object
      title: GetAnalyticsSummaryParams
      description: Get a summary of key business analytics for a time period.
    GetBookingPageSettingsParams:
      properties:
        smb_tool_type:
          type: string
          const: get_booking_page_settings
          title: Smb Tool Type
          default: get_booking_page_settings
      type: object
      title: GetBookingPageSettingsParams
    UpdateBookingPageSettingsParams:
      properties:
        smb_tool_type:
          type: string
          const: update_booking_page_settings
          title: Smb Tool Type
          default: update_booking_page_settings
      type: object
      title: UpdateBookingPageSettingsParams
    UpdateBookingPageAppearanceParams:
      properties:
        smb_tool_type:
          type: string
          const: update_booking_page_appearance
          title: Smb Tool Type
          default: update_booking_page_appearance
      type: object
      title: UpdateBookingPageAppearanceParams
    GetBookingSlugStatusParams:
      properties:
        smb_tool_type:
          type: string
          const: get_booking_slug_status
          title: Smb Tool Type
          default: get_booking_slug_status
      type: object
      title: GetBookingSlugStatusParams
    SetBookingSlugParams:
      properties:
        smb_tool_type:
          type: string
          const: set_booking_slug
          title: Smb Tool Type
          default: set_booking_slug
      type: object
      title: SetBookingSlugParams
    ListClientInteractionsParams:
      properties:
        smb_tool_type:
          type: string
          const: list_client_interactions
          title: Smb Tool Type
          default: list_client_interactions
      type: object
      title: ListClientInteractionsParams
    CreateClientInteractionParams:
      properties:
        smb_tool_type:
          type: string
          const: create_client_interaction
          title: Smb Tool Type
          default: create_client_interaction
      type: object
      title: CreateClientInteractionParams
    DeleteClientInteractionParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_client_interaction
          title: Smb Tool Type
          default: delete_client_interaction
      type: object
      title: DeleteClientInteractionParams
    ListLocationsParams:
      properties:
        smb_tool_type:
          type: string
          const: list_locations
          title: Smb Tool Type
          default: list_locations
      type: object
      title: ListLocationsParams
      description: Params + Reception-proxied ``run()`` for list_locations.
    CreateLocationParams:
      properties:
        smb_tool_type:
          type: string
          const: create_location
          title: Smb Tool Type
          default: create_location
      type: object
      title: CreateLocationParams
    UpdateLocationParams:
      properties:
        smb_tool_type:
          type: string
          const: update_location
          title: Smb Tool Type
          default: update_location
      type: object
      title: UpdateLocationParams
    DeleteLocationParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_location
          title: Smb Tool Type
          default: delete_location
      type: object
      title: DeleteLocationParams
    LeaveMessageParams:
      properties:
        smb_tool_type:
          type: string
          const: leave_message
          title: Smb Tool Type
          default: leave_message
      type: object
      title: LeaveMessageParams
    ReportKnowledgeGapParams:
      properties:
        smb_tool_type:
          type: string
          const: report_knowledge_gap
          title: Smb Tool Type
          default: report_knowledge_gap
      type: object
      title: ReportKnowledgeGapParams
    OptInSmsReminderParams:
      properties:
        smb_tool_type:
          type: string
          const: opt_in_sms_reminder
          title: Smb Tool Type
          default: opt_in_sms_reminder
      type: object
      title: OptInSmsReminderParams
    OptOutSmsReminderParams:
      properties:
        smb_tool_type:
          type: string
          const: opt_out_sms_reminder
          title: Smb Tool Type
          default: opt_out_sms_reminder
      type: object
      title: OptOutSmsReminderParams
    TriggerUserVerificationParams:
      properties:
        smb_tool_type:
          type: string
          const: trigger_user_verification
          title: Smb Tool Type
          default: trigger_user_verification
      type: object
      title: TriggerUserVerificationParams
    ValidateUserVerificationCodeParams:
      properties:
        smb_tool_type:
          type: string
          const: validate_user_verification_code
          title: Smb Tool Type
          default: validate_user_verification_code
      type: object
      title: ValidateUserVerificationCodeParams
    ASTStringNode-Input:
      properties:
        type:
          type: string
          const: string_literal
          title: Type
          default: string_literal
        value:
          type: string
          title: Value
          description: Value of this literal.
      type: object
      required:
        - value
      title: ASTStringNode
    ASTNumberNode-Input:
      properties:
        type:
          type: string
          const: number_literal
          title: Type
          default: number_literal
        value:
          anyOf:
            - type: number
            - type: integer
          title: Value
          description: Value of this literal.
      type: object
      required:
        - value
      title: ASTNumberNode
    ASTBooleanNode-Input:
      properties:
        type:
          type: string
          const: boolean_literal
          title: Type
          default: boolean_literal
        value:
          type: boolean
          title: Value
          description: Value of this literal.
      type: object
      required:
        - value
      title: ASTBooleanNode
    ASTNullNode-Input:
      properties:
        type:
          type: string
          const: null_literal
          title: Type
          default: null_literal
      type: object
      title: ASTNullNode
    ASTLLMNode-Input:
      properties:
        type:
          type: string
          const: llm
          title: Type
          default: llm
        value_schema:
          $ref: '#/components/schemas/LLMLiteralJsonSchemaProperty'
          description: JSON schema describing the value that the LLM should extract.
          examples:
            - description: User's last message contains a question about our pricing.
              type: boolean
            - description: User provided their email address.
              type: boolean
      type: object
      required:
        - value_schema
      title: ASTLLMNode
    ASTDynamicVariableNode-Input:
      properties:
        type:
          type: string
          const: dynamic_variable
          title: Type
          default: dynamic_variable
        name:
          type: string
          title: Name
          description: The name of the dynamic variable.
      type: object
      required:
        - name
      title: ASTDynamicVariableNode
    ASTOrOperatorNode-Input:
      properties:
        type:
          type: string
          const: or_operator
          title: Type
          default: or_operator
        children:
          items:
            $ref: '#/components/schemas/ASTNode-Input'
          type: array
          minItems: 2
          title: Children
          description: Child nodes of the logical operator.
      type: object
      required:
        - children
      title: ASTOrOperatorNode
    ASTAndOperatorNode-Input:
      properties:
        type:
          type: string
          const: and_operator
          title: Type
          default: and_operator
        children:
          items:
            $ref: '#/components/schemas/ASTNode-Input'
          type: array
          minItems: 2
          title: Children
          description: Child nodes of the logical operator.
      type: object
      required:
        - children
      title: ASTAndOperatorNode
    ASTEqualsOperatorNode-Input:
      properties:
        type:
          type: string
          const: eq_operator
          title: Type
          default: eq_operator
        left:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Right operand of the binary operator.
      type: object
      required:
        - left
        - right
      title: ASTEqualsOperatorNode
    ASTNotEqualsOperatorNode-Input:
      properties:
        type:
          type: string
          const: neq_operator
          title: Type
          default: neq_operator
        left:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Right operand of the binary operator.
      type: object
      required:
        - left
        - right
      title: ASTNotEqualsOperatorNode
    ASTGreaterThanOperatorNode-Input:
      properties:
        type:
          type: string
          const: gt_operator
          title: Type
          default: gt_operator
        left:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Right operand of the binary operator.
      type: object
      required:
        - left
        - right
      title: ASTGreaterThanOperatorNode
    ASTLessThanOperatorNode-Input:
      properties:
        type:
          type: string
          const: lt_operator
          title: Type
          default: lt_operator
        left:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Right operand of the binary operator.
      type: object
      required:
        - left
        - right
      title: ASTLessThanOperatorNode
    ASTGreaterThanOrEqualsOperatorNode-Input:
      properties:
        type:
          type: string
          const: gte_operator
          title: Type
          default: gte_operator
        left:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Right operand of the binary operator.
      type: object
      required:
        - left
        - right
      title: ASTGreaterThanOrEqualsOperatorNode
    ASTLessThanOrEqualsOperatorNode-Input:
      properties:
        type:
          type: string
          const: lte_operator
          title: Type
          default: lte_operator
        left:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Right operand of the binary operator.
      type: object
      required:
        - left
        - right
      title: ASTLessThanOrEqualsOperatorNode
    ASTAdditionOperatorNode-Input:
      properties:
        type:
          type: string
          const: add_operator
          title: Type
          default: add_operator
        left:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Right operand of the binary operator.
      type: object
      required:
        - left
        - right
      title: ASTAdditionOperatorNode
    ASTSubtractionOperatorNode-Input:
      properties:
        type:
          type: string
          const: sub_operator
          title: Type
          default: sub_operator
        left:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Right operand of the binary operator.
      type: object
      required:
        - left
        - right
      title: ASTSubtractionOperatorNode
    ASTMultiplicationOperatorNode-Input:
      properties:
        type:
          type: string
          const: mul_operator
          title: Type
          default: mul_operator
        left:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Right operand of the binary operator.
      type: object
      required:
        - left
        - right
      title: ASTMultiplicationOperatorNode
    ASTDivisionOperatorNode-Input:
      properties:
        type:
          type: string
          const: div_operator
          title: Type
          default: div_operator
        left:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Right operand of the binary operator.
      type: object
      required:
        - left
        - right
      title: ASTDivisionOperatorNode
    ASTConditionalOperatorNode-Input:
      properties:
        type:
          type: string
          const: conditional_operator
          title: Type
          default: conditional_operator
        condition:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Condition deciding which expression should be selected.
        trueExpression:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Expression selected if the condition is true.
        falseExpression:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Expression selected if the condition is false.
      type: object
      required:
        - condition
        - trueExpression
        - falseExpression
      title: ASTConditionalOperatorNode
    DynamicVariableNestedValueType-Output:
      anyOf:
        - type: string
        - type: number
        - type: integer
        - type: boolean
        - items:
            $ref: '#/components/schemas/DynamicVariableNestedValueType-Output'
          type: array
        - type: 'null'
    SoftTimeoutConfigOverrideConfig:
      properties:
        message:
          type: boolean
          title: Message
          description: Whether to allow overriding the message field.
          default: false
        additional_soft_timeout_messages:
          type: boolean
          title: Additional Soft Timeout Messages
          description: >-
            Whether to allow overriding the additional_soft_timeout_messages
            field.
          default: false
      type: object
      title: SoftTimeoutConfigOverrideConfig
    PromptAgentAPIModelOverrideConfig:
      properties:
        prompt:
          type: boolean
          title: Prompt
          description: Whether to allow overriding the prompt field.
          default: false
        llm:
          type: boolean
          title: Llm
          description: Whether to allow overriding the llm field.
          default: false
        tool_ids:
          type: boolean
          title: Tool Ids
          description: Whether to allow overriding the tool_ids field.
          default: false
        native_mcp_server_ids:
          type: boolean
          title: Native Mcp Server Ids
          description: Whether to allow overriding the native_mcp_server_ids field.
          default: false
        knowledge_base:
          type: boolean
          title: Knowledge Base
          description: Whether to allow overriding the knowledge_base field.
          default: false
      type: object
      title: PromptAgentAPIModelOverrideConfig
    ContentThresholdGuardrail:
      properties:
        is_enabled:
          type: boolean
          title: Is Enabled
          default: false
        threshold:
          anyOf:
            - type: number
            - type: string
              enum:
                - low
                - medium
                - high
          title: Threshold
          default: 0.3
      type: object
      title: ContentThresholdGuardrail
    ThresholdGuardrail:
      properties:
        is_enabled:
          type: boolean
          title: Is Enabled
          default: false
        threshold:
          type: number
          maximum: 1
          minimum: 0
          title: Threshold
          default: 0.3
      type: object
      title: ThresholdGuardrail
    CustomGuardrailConfig:
      properties:
        is_enabled:
          type: boolean
          title: Is Enabled
          default: false
        name:
          type: string
          maxLength: 500
          minLength: 1
          title: Name
          description: User-facing name for this guardrail
        prompt:
          type: string
          maxLength: 10000
          minLength: 1
          title: Prompt
          description: >-
            Instruction describing what to block, e.g. 'don't talk about
            politics'
        execution_mode:
          $ref: '#/components/schemas/GuardrailExecutionMode'
          default: streaming
        model:
          type: string
          enum:
            - gemini-2.5-flash-lite
            - gemini-2.5-flash
            - gemini-3.1-flash-lite
            - gemini-3.5-flash
            - claude-haiku-4-5
            - claude-sonnet-4-6
            - gpt-5.4-nano
            - gpt-5.4-mini
          title: Model
          description: LLM model to use for custom guardrail evaluation
          default: gemini-2.5-flash-lite
        history_message_count:
          type: integer
          maximum: 100
          minimum: 0
          title: History Message Count
          description: >-
            How many recent customer messages to include in the guardrail's
            history, plus the agent replies that follow them (and tool calls and
            results when history_include_tool_calls is enabled). Only customer
            messages count toward the limit. 0 (default) shows none; 1 shows the
            customer's latest message onward. When > 0, the guardrail prompt can
            refer to this history as <conversation_history>; the reply under
            evaluation appears as <agent_message> and may repeat at the end of
            the history.
          default: 0
        history_include_tool_calls:
          type: boolean
          title: History Include Tool Calls
          description: >-
            When history is on (history_message_count > 0), also render
            interleaved tool calls and results in the window. Off by default:
            history shows only customer and agent text. Tool payloads can be
            large, so enabling this increases evaluation token cost.
          default: false
          x-fern-ignore: true
        trigger_action:
          oneOf:
            - $ref: '#/components/schemas/EndCallTriggerAction'
            - $ref: '#/components/schemas/RetryTriggerAction'
          title: Trigger Action
          discriminator:
            propertyName: type
            mapping:
              end_call:
                $ref: '#/components/schemas/EndCallTriggerAction'
              retry:
                $ref: '#/components/schemas/RetryTriggerAction'
        evaluate_full_response_only:
          type: boolean
          title: Evaluate Full Response Only
          description: >-
            Evaluate once against the complete non-TTS response instead of
            cumulative partials. Requires blocking mode.
          default: false
      type: object
      required:
        - name
        - prompt
      title: CustomGuardrailConfig
      description: Single custom guardrail configuration.
    ASTStringNode-Output:
      properties:
        type:
          type: string
          const: string_literal
          title: Type
          default: string_literal
        value:
          type: string
          title: Value
          description: Value of this literal.
      type: object
      required:
        - type
        - value
      title: ASTStringNode
    ASTNumberNode-Output:
      properties:
        type:
          type: string
          const: number_literal
          title: Type
          default: number_literal
        value:
          anyOf:
            - type: number
            - type: integer
          title: Value
          description: Value of this literal.
      type: object
      required:
        - type
        - value
      title: ASTNumberNode
    ASTBooleanNode-Output:
      properties:
        type:
          type: string
          const: boolean_literal
          title: Type
          default: boolean_literal
        value:
          type: boolean
          title: Value
          description: Value of this literal.
      type: object
      required:
        - type
        - value
      title: ASTBooleanNode
    ASTNullNode-Output:
      properties:
        type:
          type: string
          const: null_literal
          title: Type
          default: null_literal
      type: object
      required:
        - type
      title: ASTNullNode
    ASTLLMNode-Output:
      properties:
        type:
          type: string
          const: llm
          title: Type
          default: llm
        value_schema:
          $ref: '#/components/schemas/LLMLiteralJsonSchemaProperty'
          description: JSON schema describing the value that the LLM should extract.
          examples:
            - description: User's last message contains a question about our pricing.
              type: boolean
            - description: User provided their email address.
              type: boolean
      type: object
      required:
        - type
        - value_schema
      title: ASTLLMNode
    ASTDynamicVariableNode-Output:
      properties:
        type:
          type: string
          const: dynamic_variable
          title: Type
          default: dynamic_variable
        name:
          type: string
          title: Name
          description: The name of the dynamic variable.
      type: object
      required:
        - type
        - name
      title: ASTDynamicVariableNode
    ASTOrOperatorNode-Output:
      properties:
        type:
          type: string
          const: or_operator
          title: Type
          default: or_operator
        children:
          items:
            $ref: '#/components/schemas/ASTNode-Output'
          type: array
          minItems: 2
          title: Children
          description: Child nodes of the logical operator.
      type: object
      required:
        - type
        - children
      title: ASTOrOperatorNode
    ASTAndOperatorNode-Output:
      properties:
        type:
          type: string
          const: and_operator
          title: Type
          default: and_operator
        children:
          items:
            $ref: '#/components/schemas/ASTNode-Output'
          type: array
          minItems: 2
          title: Children
          description: Child nodes of the logical operator.
      type: object
      required:
        - type
        - children
      title: ASTAndOperatorNode
    ASTEqualsOperatorNode-Output:
      properties:
        type:
          type: string
          const: eq_operator
          title: Type
          default: eq_operator
        left:
          $ref: '#/components/schemas/ASTNode-Output'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Output'
          description: Right operand of the binary operator.
      type: object
      required:
        - type
        - left
        - right
      title: ASTEqualsOperatorNode
    ASTNotEqualsOperatorNode-Output:
      properties:
        type:
          type: string
          const: neq_operator
          title: Type
          default: neq_operator
        left:
          $ref: '#/components/schemas/ASTNode-Output'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Output'
          description: Right operand of the binary operator.
      type: object
      required:
        - type
        - left
        - right
      title: ASTNotEqualsOperatorNode
    ASTGreaterThanOperatorNode-Output:
      properties:
        type:
          type: string
          const: gt_operator
          title: Type
          default: gt_operator
        left:
          $ref: '#/components/schemas/ASTNode-Output'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Output'
          description: Right operand of the binary operator.
      type: object
      required:
        - type
        - left
        - right
      title: ASTGreaterThanOperatorNode
    ASTLessThanOperatorNode-Output:
      properties:
        type:
          type: string
          const: lt_operator
          title: Type
          default: lt_operator
        left:
          $ref: '#/components/schemas/ASTNode-Output'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Output'
          description: Right operand of the binary operator.
      type: object
      required:
        - type
        - left
        - right
      title: ASTLessThanOperatorNode
    ASTGreaterThanOrEqualsOperatorNode-Output:
      properties:
        type:
          type: string
          const: gte_operator
          title: Type
          default: gte_operator
        left:
          $ref: '#/components/schemas/ASTNode-Output'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Output'
          description: Right operand of the binary operator.
      type: object
      required:
        - type
        - left
        - right
      title: ASTGreaterThanOrEqualsOperatorNode
    ASTLessThanOrEqualsOperatorNode-Output:
      properties:
        type:
          type: string
          const: lte_operator
          title: Type
          default: lte_operator
        left:
          $ref: '#/components/schemas/ASTNode-Output'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Output'
          description: Right operand of the binary operator.
      type: object
      required:
        - type
        - left
        - right
      title: ASTLessThanOrEqualsOperatorNode
    ASTAdditionOperatorNode-Output:
      properties:
        type:
          type: string
          const: add_operator
          title: Type
          default: add_operator
        left:
          $ref: '#/components/schemas/ASTNode-Output'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Output'
          description: Right operand of the binary operator.
      type: object
      required:
        - type
        - left
        - right
      title: ASTAdditionOperatorNode
    ASTSubtractionOperatorNode-Output:
      properties:
        type:
          type: string
          const: sub_operator
          title: Type
          default: sub_operator
        left:
          $ref: '#/components/schemas/ASTNode-Output'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Output'
          description: Right operand of the binary operator.
      type: object
      required:
        - type
        - left
        - right
      title: ASTSubtractionOperatorNode
    ASTMultiplicationOperatorNode-Output:
      properties:
        type:
          type: string
          const: mul_operator
          title: Type
          default: mul_operator
        left:
          $ref: '#/components/schemas/ASTNode-Output'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Output'
          description: Right operand of the binary operator.
      type: object
      required:
        - type
        - left
        - right
      title: ASTMultiplicationOperatorNode
    ASTDivisionOperatorNode-Output:
      properties:
        type:
          type: string
          const: div_operator
          title: Type
          default: div_operator
        left:
          $ref: '#/components/schemas/ASTNode-Output'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Output'
          description: Right operand of the binary operator.
      type: object
      required:
        - type
        - left
        - right
      title: ASTDivisionOperatorNode
    ASTConditionalOperatorNode-Output:
      properties:
        type:
          type: string
          const: conditional_operator
          title: Type
          default: conditional_operator
        condition:
          $ref: '#/components/schemas/ASTNode-Output'
          description: Condition deciding which expression should be selected.
        trueExpression:
          $ref: '#/components/schemas/ASTNode-Output'
          description: Expression selected if the condition is true.
        falseExpression:
          $ref: '#/components/schemas/ASTNode-Output'
          description: Expression selected if the condition is false.
      type: object
      required:
        - type
        - condition
        - trueExpression
        - falseExpression
      title: ASTConditionalOperatorNode
    DynamicVariablesConfigWorkflowOverride-Output:
      properties:
        dynamic_variable_placeholders:
          anyOf:
            - additionalProperties:
                $ref: '#/components/schemas/DynamicVariableValueType-Output'
              type: object
            - type: 'null'
          title: Dynamic Variable Placeholders
          description: A dictionary of dynamic variable placeholders and their values
      type: object
      title: DynamicVariablesConfigWorkflowOverride
      example:
        dynamic_variable_placeholders:
          user_name: John Doe
    PromptAgentAPIModelWorkflowOverride-Output:
      properties:
        prompt:
          anyOf:
            - type: string
            - type: 'null'
          title: Prompt
          description: The prompt for the agent
          x-convai-client-override: true
        llm:
          anyOf:
            - $ref: '#/components/schemas/LLM'
            - type: 'null'
          description: >-
            The LLM to query with the prompt and the chat history. If using data
            residency, the LLM must be supported in the data residency
            environment
          x-convai-client-override: true
        reasoning_effort:
          anyOf:
            - $ref: '#/components/schemas/LLMReasoningEffort'
            - type: 'null'
          description: Reasoning effort of the model. Only available for some models.
        thinking_budget:
          anyOf:
            - type: integer
            - type: 'null'
          title: Thinking Budget
          description: >-
            Max number of tokens used for thinking. Use 0 to turn off if
            supported by the model.
        enable_reasoning_summary:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enable Reasoning Summary
          description: >-
            Enable model reasoning summaries. When disabled, we do not request
            summaries from provider if possible for faster TTFB. Not ZRM
            compatible.
        temperature:
          anyOf:
            - type: number
            - type: 'null'
          title: Temperature
          description: >-
            The temperature for the LLM. Defaults to 0. Set to null to omit the
            parameter from the LLM request entirely (useful for custom LLMs that
            reject the temperature field).
        max_tokens:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Tokens
          description: If greater than 0, maximum number of tokens the LLM can predict
        tool_ids:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Tool Ids
          description: A list of IDs of tools used by the agent
          x-convai-client-override: true
        built_in_tools:
          anyOf:
            - $ref: '#/components/schemas/BuiltInToolsWorkflowOverride'
            - type: 'null'
          description: Built-in system tools to be used by the agent
        mcp_server_ids:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Mcp Server Ids
          description: A list of MCP server ids to be used by the agent
        native_mcp_server_ids:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Native Mcp Server Ids
          description: A list of Native MCP server ids to be used by the agent
          x-convai-client-override: true
        knowledge_base:
          anyOf:
            - items:
                $ref: '#/components/schemas/KnowledgeBaseLocator'
              type: array
            - type: 'null'
          title: Knowledge Base
          description: A list of knowledge bases to be used by the agent
          x-convai-client-override: true
        custom_llm:
          anyOf:
            - $ref: '#/components/schemas/CustomLLM'
            - type: 'null'
          description: Definition for a custom LLM if LLM field is set to 'CUSTOM_LLM'
        ignore_default_personality:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Ignore Default Personality
          description: >-
            Whether to remove the default personality lines from the system
            prompt
        rag:
          anyOf:
            - $ref: '#/components/schemas/RagConfigWorkflowOverride'
            - type: 'null'
          description: Configuration for RAG
        timezone:
          anyOf:
            - type: string
            - type: 'null'
          title: Timezone
          description: >-
            Timezone for displaying current time in system prompt. If set, the
            current time will be included in the system prompt using this
            timezone. Must be a valid timezone name (e.g., 'America/New_York',
            'Europe/London', 'UTC'). Recommended for accurate time-aware
            responses; without this, the agent has no knowledge of the current
            date/time unless you provide it via dynamic variables or tools,
            which can lead to incorrect or hallucinated time references.
        backup_llm_config:
          anyOf:
            - $ref: '#/components/schemas/BackupLLMDefault'
            - $ref: '#/components/schemas/BackupLLMDisabled'
            - $ref: '#/components/schemas/BackupLLMOverride'
            - type: 'null'
          title: Backup Llm Config
          description: >-
            Configuration for backup LLM cascading. Can be disabled, use system
            defaults, or specify custom order.
        cascade_timeout_seconds:
          anyOf:
            - type: number
            - type: 'null'
          title: Cascade Timeout Seconds
          description: >-
            Time in seconds before cascading to backup LLM. Must be between 2
            and 15 seconds.
        tools:
          anyOf:
            - items:
                oneOf:
                  - $ref: '#/components/schemas/WebhookToolConfig-Output'
                  - $ref: '#/components/schemas/ClientToolConfig-Output'
                  - $ref: '#/components/schemas/SystemToolConfig'
                  - $ref: '#/components/schemas/MCPToolConfig-Output'
                  - $ref: >-
                      #/components/schemas/ApiIntegrationWebhookToolConfig-Output
                  - $ref: '#/components/schemas/SMBToolConfig'
                description: The type of tool
                discriminator:
                  propertyName: type
                  mapping:
                    api_integration_webhook:
                      $ref: >-
                        #/components/schemas/ApiIntegrationWebhookToolConfig-Output
                    client:
                      $ref: '#/components/schemas/ClientToolConfig-Output'
                    mcp:
                      $ref: '#/components/schemas/MCPToolConfig-Output'
                    smb:
                      $ref: '#/components/schemas/SMBToolConfig'
                    system:
                      $ref: '#/components/schemas/SystemToolConfig'
                    webhook:
                      $ref: '#/components/schemas/WebhookToolConfig-Output'
              type: array
            - type: 'null'
          title: Tools
          description: >-
            A list of tools that the agent can use over the course of the
            conversation, use tool_ids instead
      type: object
      title: PromptAgentAPIModelWorkflowOverride
      example:
        knowledge_base: []
        llm: gemini-2.0-flash-001
        max_tokens: -1
        prompt: >-
          You are a helpful assistant that can answer questions about the topic
          of the conversation.
        temperature: 0
        tool_ids: []
        tools: []
    LiteralJsonSchemaProperty:
      properties:
        type:
          anyOf:
            - type: string
              enum:
                - boolean
                - string
                - integer
                - number
            - items:
                type: string
              type: array
              maxItems: 2
              minItems: 2
          title: Type
        description:
          type: string
          title: Description
          description: >-
            The description of the property. When set, the LLM will provide the
            value based on this description. Mutually exclusive with
            dynamic_variable, is_system_provided, constant_value, and
            is_omitted.
          default: ''
        enum:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Enum
          description: List of allowed string values for string type parameters
        is_system_provided:
          type: boolean
          title: Is System Provided
          description: >-
            If true, the value will be populated by the system at runtime. Used
            by API Integration Webhook tools for templating. Mutually exclusive
            with description, dynamic_variable, constant_value, and is_omitted.
          default: false
        dynamic_variable:
          type: string
          title: Dynamic Variable
          description: >-
            The name of the dynamic variable to use for this property's value.
            Mutually exclusive with description, is_system_provided,
            constant_value, and is_omitted.
          default: ''
        allowed_values_dynamic_variable:
          type: string
          title: Allowed Values Dynamic Variable
          description: >-
            When set, the LLM provides the value but the runtime rejects any
            value not present in the list held by this dynamic variable. Use to
            let the LLM pick from a server-verified set (e.g. the IDs the
            current user is allowed to access). Requires description; mutually
            exclusive with dynamic_variable, is_system_provided, constant_value,
            and is_omitted.
          default: ''
        constant_value:
          anyOf:
            - type: string
            - type: integer
            - type: number
            - type: boolean
            - type: 'null'
          title: Constant Value
          description: >-
            A constant value to use for this property. Mutually exclusive with
            description, dynamic_variable, is_system_provided, and is_omitted.
          default: ''
        is_omitted:
          type: boolean
          title: Is Omitted
          description: >-
            If true, this parameter will be completely omitted from the request.
            Only valid for optional parameters. Mutually exclusive with
            description, dynamic_variable, is_system_provided, and
            constant_value.
          default: false
      type: object
      required:
        - type
      title: LiteralJsonSchemaProperty
      description: >-
        Schema property for literal JSON types. IMPORTANT: Only ONE of the
        following fields can be set: description (LLM provides value),
        dynamic_variable (value from variable), is_system_provided (system
        provides value), constant_value (fixed value), or is_omitted (parameter
        is omitted). These are mutually exclusive.
      example:
        description: A user-provided message
        type: string
    QueryParamsJsonSchema:
      properties:
        properties:
          additionalProperties:
            $ref: '#/components/schemas/LiteralJsonSchemaProperty'
          type: object
          minProperties: 1
          title: Properties
        required:
          items:
            type: string
          type: array
          title: Required
      additionalProperties: false
      type: object
      required:
        - properties
      title: QueryParamsJsonSchema
    ResponseFilter:
      properties:
        mode:
          $ref: '#/components/schemas/ResponseFilterMode'
          description: >-
            Controls how tool responses are filtered. 'all' returns entire
            response, 'allow' returns only specified paths, 'hide_all' hides the
            entire response.
          default: all
        filters:
          items:
            type: string
          type: array
          title: Filters
          description: >-
            Dot notation paths to include when mode is 'allow' (e.g.,
            ['ticket.id', 'ticket.status']).
        content_type:
          type: string
          const: application/json
          title: Content Type
          description: >-
            Content type for response filtering. Only 'application/json'
            responses are filtered.
          default: application/json
      type: object
      title: ResponseFilter
      description: >-
        Configuration for filtering tool responses before they are visible to
        the agent.
    AuthConnectionLocator:
      properties:
        auth_connection_id:
          type: string
          title: Auth Connection Id
      type: object
      required:
        - auth_connection_id
      title: AuthConnectionLocator
      description: >-
        Used to reference an auth connection from the workspace's auth
        connection store.
    EnvironmentAuthConnectionLocator:
      properties:
        env_var_label:
          type: string
          title: Env Var Label
      type: object
      required:
        - env_var_label
      title: EnvironmentAuthConnectionLocator
      description: |-
        References an environment variable of type 'auth_connection' by label.
        At runtime, resolves to the auth connection for the current environment,
        falling back to the default environment.
    ArrayJsonSchemaProperty-Input:
      properties:
        property_kind:
          type: string
          enum:
            - array
            - object
          title: Property Kind
          default: array
        description:
          type: string
          title: Description
          default: ''
        dynamic_variable:
          type: string
          title: Dynamic Variable
          description: >-
            When set, the entire parameter is populated from this dynamic
            variable at runtime. Mutually exclusive with description
            (LLM-provided value), constant_value, and is_omitted.
          default: ''
        constant_value:
          anyOf:
            - items: {}
              type: array
            - type: 'null'
          title: Constant Value
          description: >-
            When set, the entire array uses this constant value at runtime.
            Mutually exclusive with description (LLM-provided array),
            dynamic_variable, and is_omitted.
        is_omitted:
          type: boolean
          title: Is Omitted
          description: >-
            If true, this parameter will be completely omitted from the request.
            Only valid for optional parameters. Mutually exclusive with
            description, dynamic_variable, and constant_value.
          default: false
        type:
          type: string
          const: array
          title: Type
          default: array
        items:
          oneOf:
            - $ref: '#/components/schemas/LiteralJsonSchemaProperty'
            - $ref: '#/components/schemas/ObjectJsonSchemaProperty-Input'
            - $ref: '#/components/schemas/ArrayJsonSchemaProperty-Input'
          title: Items
          description: Schema for array elements.
          default:
            type: string
            description: Array element
            is_system_provided: false
            dynamic_variable: ''
            allowed_values_dynamic_variable: ''
            constant_value: ''
            is_omitted: false
      additionalProperties: false
      type: object
      title: ArrayJsonSchemaProperty
    RequiredConstraints:
      properties:
        any_of:
          items:
            $ref: '#/components/schemas/RequiredConstraint'
          type: array
          title: Any Of
        all_of:
          items:
            $ref: '#/components/schemas/RequiredConstraint'
          type: array
          title: All Of
      type: object
      title: RequiredConstraints
      description: >-
        Wrapper for anyOf/allOf composition constraints scoped to required
        fields.
    AgentTransfer:
      properties:
        agent_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Agent Id
        node_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Node Id
        condition:
          type: string
          title: Condition
        delay_ms:
          type: integer
          title: Delay Ms
          default: 0
        transfer_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Transfer Message
        enable_transferred_agent_first_message:
          type: boolean
          title: Enable Transferred Agent First Message
          default: false
        is_workflow_node_transfer:
          type: boolean
          title: Is Workflow Node Transfer
          default: false
        preserve_client_tts_overrides:
          type: boolean
          title: Preserve Client Tts Overrides
          description: >-
            Defines whether TTS client overrides should be carried over to the
            transferred agent.
          default: false
      additionalProperties: false
      type: object
      required:
        - condition
      title: AgentTransfer
    PhoneNumberTransfer:
      properties:
        custom_sip_headers:
          items:
            oneOf:
              - $ref: '#/components/schemas/CustomSIPHeader'
              - $ref: '#/components/schemas/CustomSIPHeaderWithDynamicVariable'
            discriminator:
              propertyName: type
              mapping:
                dynamic:
                  $ref: '#/components/schemas/CustomSIPHeaderWithDynamicVariable'
                static:
                  $ref: '#/components/schemas/CustomSIPHeader'
          type: array
          maxItems: 20
          title: Custom Sip Headers
          description: >-
            Custom SIP headers to include when transferring the call. Each
            header can be either a static value or a dynamic variable reference.
        transfer_destination:
          oneOf:
            - $ref: '#/components/schemas/PhoneNumberTransferDestination'
            - $ref: '#/components/schemas/SIPUriTransferDestination'
            - $ref: >-
                #/components/schemas/PhoneNumberDynamicVariableTransferDestination
            - $ref: '#/components/schemas/SIPUriDynamicVariableTransferDestination'
          title: Transfer Destination
          discriminator:
            propertyName: type
            mapping:
              phone:
                $ref: '#/components/schemas/PhoneNumberTransferDestination'
              phone_dynamic_variable:
                $ref: >-
                  #/components/schemas/PhoneNumberDynamicVariableTransferDestination
              sip_uri:
                $ref: '#/components/schemas/SIPUriTransferDestination'
              sip_uri_dynamic_variable:
                $ref: '#/components/schemas/SIPUriDynamicVariableTransferDestination'
        transfer_type:
          $ref: '#/components/schemas/TransferTypeEnum'
          default: conference
        sip_refer_play_dialtone:
          type: boolean
          title: Sip Refer Play Dialtone
          description: >-
            When True, a ringing tone is played on the original call leg while a
            SIP REFER transfer completes. The tone is carried over RTP to the
            SIP peer executing the REFER, so disable this if the receiving
            system (e.g. an SBC or contact center) should not hear it. When
            disabled the caller hears silence until the transfer completes. SIP
            REFER transfers only.
          default: true
        uui:
          anyOf:
            - $ref: '#/components/schemas/UUITransferConfig'
            - type: 'null'
          description: >-
            User-to-User Information (RFC 7433) to attach to SIP REFER
            transfers. Carries call context such as CRM identifiers or
            escalation reason across the transfer boundary.
        post_dial_digits:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/PostDialDigitsStatic'
                - $ref: '#/components/schemas/PostDialDigitsDynamicVariable'
              discriminator:
                propertyName: type
                mapping:
                  dynamic:
                    $ref: '#/components/schemas/PostDialDigitsDynamicVariable'
                  static:
                    $ref: '#/components/schemas/PostDialDigitsStatic'
            - type: 'null'
          title: Post Dial Digits
          description: >-
            DTMF digits to send after call connects (e.g., 'ww1234' for
            extension). Can be either a static value or a dynamic variable
            reference. Use 'w' for 0.5s pause. Only supported for Twilio
            transfers.
        condition:
          type: string
          title: Condition
      additionalProperties: false
      type: object
      required:
        - transfer_destination
        - condition
      title: PhoneNumberTransfer
    SearchStrategy:
      type: string
      enum:
        - cat
        - keyword
        - semantic
        - ls
      title: SearchStrategy
    ProcedureDraftRef:
      properties:
        procedure_id:
          type: string
          title: Procedure Id
          description: Procedure ID
        version_id:
          type: 'null'
          title: Version Id
      additionalProperties: false
      type: object
      required:
        - procedure_id
      title: ProcedureDraftRef
    ResponseFilterMode:
      type: string
      enum:
        - all
        - allow
        - hide_all
      title: ResponseFilterMode
      description: >-
        Controls how tool responses are filtered before being visible to the
        agent.
      default: all
    LLMLiteralJsonSchemaProperty:
      properties:
        type:
          anyOf:
            - type: string
              enum:
                - boolean
                - string
                - integer
                - number
            - items:
                type: string
              type: array
              maxItems: 2
              minItems: 2
          title: Type
        description:
          type: string
          minLength: 0
          title: Description
        enum:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Enum
          description: List of allowed string values for string type parameters
      type: object
      required:
        - type
        - description
      title: LLMLiteralJsonSchemaProperty
    WebhookToolConfig-Output:
      properties:
        type:
          type: string
          const: webhook
          title: Type
          description: The type of tool
          default: webhook
        name:
          type: string
          minLength: 0
          pattern: ^[a-zA-Z0-9_-]{1,64}$
          title: Name
        description:
          type: string
          minLength: 0
          title: Description
          description: Description of when the tool should be used and what it does.
        response_timeout_secs:
          type: integer
          maximum: 300
          minimum: 5
          title: Response Timeout Secs
          description: >-
            The maximum time in seconds to wait for the tool call to complete.
            Must be between 5 and 300 seconds (inclusive).
          default: 20
        interruption_mode:
          $ref: '#/components/schemas/ToolInterruptionMode'
          description: >-
            Controls whether the user can interrupt the agent around this tool
            call. 'allow' (default) lets the user interrupt at any time,
            'disable_during_tool' suppresses interruptions only while the tool
            is running, 'disable_during_tool_and_turn' suppresses interruptions
            while the tool runs and for the agent response that follows it.
          default: allow
        pre_tool_speech:
          $ref: '#/components/schemas/PreToolSpeechMode'
          description: >-
            Controls whether the agent speaks before this tool is called. 'auto'
            (default) decides based on recent tool latency, 'force' always asks
            the agent to speak, 'off' fully opts out regardless of latency.
          default: auto
        assignments:
          items:
            $ref: '#/components/schemas/DynamicVariableAssignment'
          type: array
          title: Assignments
          description: >-
            Configuration for extracting values from tool responses and
            assigning them to dynamic variables
        tool_call_sound:
          anyOf:
            - $ref: '#/components/schemas/ToolCallSoundType'
            - type: 'null'
          description: >-
            Predefined tool call sound type to play during tool execution. If
            not specified, no tool call sound will be played.
          x-convai-client-override: true
        tool_call_sound_behavior:
          $ref: '#/components/schemas/ToolCallSoundBehavior'
          description: >-
            Determines when the tool call sound should play. 'auto' only plays
            when there's pre-tool speech, 'always' plays for every tool call.
          default: auto
        tool_error_handling_mode:
          $ref: '#/components/schemas/ToolErrorHandlingMode'
          description: >-
            Controls how tool errors are processed before being shared with the
            agent. 'auto' determines handling based on tool type (summarized for
            native integrations, hide for others), 'summarized' sends an
            LLM-generated summary, 'passthrough' sends the raw error, 'hide'
            does not share the error with the agent.
          default: auto
        dynamic_variables:
          $ref: '#/components/schemas/DynamicVariablesConfig-Output'
          description: Configuration for dynamic variables
        execution_mode:
          $ref: '#/components/schemas/ToolExecutionMode'
          description: >-
            Determines when and how the tool executes: 'immediate' executes the
            tool right away when requested by the LLM, 'post_tool_speech' waits
            for the agent to finish speaking before executing, 'async' runs the
            tool in the background without blocking - best for long-running
            operations.
          default: immediate
        api_schema:
          $ref: '#/components/schemas/WebhookToolApiSchemaConfig-Output'
          description: >-
            The schema for the outgoing webhook, including parameters and URL
            specification
      type: object
      required:
        - name
        - description
        - api_schema
      title: WebhookToolConfig
      description: A webhook tool is a tool that calls an external webhook from our server
      example:
        response_timeout_secs: 20
        type: webhook
    ClientToolConfig-Output:
      properties:
        type:
          type: string
          const: client
          title: Type
          description: The type of tool
          default: client
        name:
          type: string
          minLength: 0
          pattern: ^[a-zA-Z0-9_-]{1,64}$
          title: Name
        description:
          type: string
          minLength: 0
          title: Description
          description: Description of when the tool should be used and what it does.
        response_timeout_secs:
          type: integer
          maximum: 120
          minimum: 1
          title: Response Timeout Secs
          description: >-
            The maximum time in seconds to wait for the tool call to complete.
            Must be between 1 and 120 seconds (inclusive).
          default: 20
        interruption_mode:
          $ref: '#/components/schemas/ToolInterruptionMode'
          description: >-
            Controls whether the user can interrupt the agent around this tool
            call. 'allow' (default) lets the user interrupt at any time,
            'disable_during_tool' suppresses interruptions only while the tool
            is running, 'disable_during_tool_and_turn' suppresses interruptions
            while the tool runs and for the agent response that follows it.
          default: allow
        pre_tool_speech:
          $ref: '#/components/schemas/PreToolSpeechMode'
          description: >-
            Controls whether the agent speaks before this tool is called. 'auto'
            (default) decides based on recent tool latency, 'force' always asks
            the agent to speak, 'off' fully opts out regardless of latency.
          default: auto
        assignments:
          items:
            $ref: '#/components/schemas/DynamicVariableAssignment'
          type: array
          title: Assignments
          description: >-
            Configuration for extracting values from tool responses and
            assigning them to dynamic variables
        tool_call_sound:
          anyOf:
            - $ref: '#/components/schemas/ToolCallSoundType'
            - type: 'null'
          description: >-
            Predefined tool call sound type to play during tool execution. If
            not specified, no tool call sound will be played.
          x-convai-client-override: true
        tool_call_sound_behavior:
          $ref: '#/components/schemas/ToolCallSoundBehavior'
          description: >-
            Determines when the tool call sound should play. 'auto' only plays
            when there's pre-tool speech, 'always' plays for every tool call.
          default: auto
        tool_error_handling_mode:
          $ref: '#/components/schemas/ToolErrorHandlingMode'
          description: >-
            Controls how tool errors are processed before being shared with the
            agent. 'auto' determines handling based on tool type (summarized for
            native integrations, hide for others), 'summarized' sends an
            LLM-generated summary, 'passthrough' sends the raw error, 'hide'
            does not share the error with the agent.
          default: auto
        parameters:
          anyOf:
            - $ref: '#/components/schemas/ObjectJsonSchemaProperty-Output'
            - type: 'null'
          description: Schema for any parameters to pass to the client
        expects_response:
          type: boolean
          title: Expects Response
          description: >-
            If true, calling this tool should block the conversation until the
            client responds with some response which is passed to the llm. If
            false then we will continue the conversation without waiting for the
            client to respond, this is useful to show content to a user but not
            block the conversation
          default: false
        dynamic_variables:
          $ref: '#/components/schemas/DynamicVariablesConfig-Output'
          description: Configuration for dynamic variables
        execution_mode:
          $ref: '#/components/schemas/ToolExecutionMode'
          description: >-
            Determines when and how the tool executes: 'immediate' executes the
            tool right away when requested by the LLM, 'post_tool_speech' waits
            for the agent to finish speaking before executing, 'async' runs the
            tool in the background without blocking - best for long-running
            operations.
          default: immediate
      type: object
      required:
        - name
        - description
      title: ClientToolConfig
      description: >-
        A client tool is one that sends an event to the user's client to trigger
        something client side
      example:
        expects_response: false
        type: client
    MCPToolConfig-Output:
      properties:
        type:
          type: string
          const: mcp
          title: Type
          default: mcp
        name:
          type: string
          minLength: 0
          pattern: ^[a-zA-Z0-9_-]{1,64}$
          title: Name
        description:
          type: string
          minLength: 0
          title: Description
          description: Description of when the tool should be used and what it does.
        response_timeout_secs:
          type: integer
          maximum: 300
          minimum: 5
          title: Response Timeout Secs
          description: >-
            The maximum time in seconds to wait for the MCP tool call to
            complete. Must be between 5 and 300 seconds (inclusive).
          default: 30
        interruption_mode:
          $ref: '#/components/schemas/ToolInterruptionMode'
          description: >-
            Controls whether the user can interrupt the agent around this tool
            call. 'allow' (default) lets the user interrupt at any time,
            'disable_during_tool' suppresses interruptions only while the tool
            is running, 'disable_during_tool_and_turn' suppresses interruptions
            while the tool runs and for the agent response that follows it.
          default: allow
        pre_tool_speech:
          $ref: '#/components/schemas/PreToolSpeechMode'
          description: >-
            Controls whether the agent speaks before this tool is called. 'auto'
            (default) decides based on recent tool latency, 'force' always asks
            the agent to speak, 'off' fully opts out regardless of latency.
          default: auto
        assignments:
          items:
            $ref: '#/components/schemas/DynamicVariableAssignment'
          type: array
          title: Assignments
          description: >-
            Configuration for extracting values from tool responses and
            assigning them to dynamic variables
        tool_call_sound:
          anyOf:
            - $ref: '#/components/schemas/ToolCallSoundType'
            - type: 'null'
          description: >-
            Predefined tool call sound type to play during tool execution. If
            not specified, no tool call sound will be played.
          x-convai-client-override: true
        tool_call_sound_behavior:
          $ref: '#/components/schemas/ToolCallSoundBehavior'
          description: >-
            Determines when the tool call sound should play. 'auto' only plays
            when there's pre-tool speech, 'always' plays for every tool call.
          default: auto
        tool_error_handling_mode:
          $ref: '#/components/schemas/ToolErrorHandlingMode'
          description: >-
            Controls how tool errors are processed before being shared with the
            agent. 'auto' determines handling based on tool type (summarized for
            native integrations, hide for others), 'summarized' sends an
            LLM-generated summary, 'passthrough' sends the raw error, 'hide'
            does not share the error with the agent.
          default: auto
        integration_type:
          $ref: '#/components/schemas/IntegrationType'
          description: The type of MCP tool
        parameters:
          anyOf:
            - $ref: '#/components/schemas/ObjectJsonSchemaProperty-Output'
            - type: 'null'
          description: Schema for any parameters the LLM needs to provide to the MCP tool.
        approval_policy:
          $ref: '#/components/schemas/MCPApprovalPolicy'
          description: The approval policy for the MCP tool
          default: require_approval_all
        mcp_tool_name:
          type: string
          title: Mcp Tool Name
          description: The name of the MCP tool to call
        mcp_tool_description:
          type: string
          title: Mcp Tool Description
          description: The description of the MCP tool to call
        mcp_server_id:
          type: string
          title: Mcp Server Id
          description: The id of the MCP server to call
        mcp_server_name:
          type: string
          title: Mcp Server Name
          description: The name of the MCP server to call
        mcp_input_schema:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Mcp Input Schema
          description: Original inputSchema dict for consistent hashing
        execution_mode:
          $ref: '#/components/schemas/ToolExecutionMode'
          description: >-
            Determines when and how the tool executes: 'immediate' executes the
            tool right away when requested by the LLM, 'post_tool_speech' waits
            for the agent to finish speaking before executing, 'async' runs the
            tool in the background without blocking - best for long-running
            operations.
          default: immediate
        input_overrides:
          anyOf:
            - additionalProperties:
                oneOf:
                  - $ref: '#/components/schemas/ConstantSchemaOverride'
                  - $ref: '#/components/schemas/DynamicVariableSchemaOverride'
                  - $ref: '#/components/schemas/LLMSchemaOverride'
                  - $ref: '#/components/schemas/OmitSchemaOverride'
                discriminator:
                  propertyName: source
                  mapping:
                    constant:
                      $ref: '#/components/schemas/ConstantSchemaOverride'
                    dynamic_variable:
                      $ref: '#/components/schemas/DynamicVariableSchemaOverride'
                    llm:
                      $ref: '#/components/schemas/LLMSchemaOverride'
                    omit:
                      $ref: '#/components/schemas/OmitSchemaOverride'
              type: object
            - type: 'null'
          title: Input Overrides
          description: Input parameter overrides for this tool
      type: object
      required:
        - name
        - description
        - integration_type
        - mcp_tool_name
        - mcp_tool_description
        - mcp_server_id
        - mcp_server_name
      title: MCPToolConfig
      description: An MCP tool configuration that can be used to call MCP servers.
      x-fern-ignore: true
    ApiIntegrationWebhookToolConfig-Output:
      properties:
        type:
          type: string
          const: api_integration_webhook
          title: Type
          default: api_integration_webhook
        name:
          type: string
          minLength: 0
          pattern: ^[a-zA-Z0-9_-]{1,64}$
          title: Name
        description:
          type: string
          minLength: 0
          title: Description
          description: Description of when the tool should be used and what it does.
        response_timeout_secs:
          type: integer
          maximum: 300
          minimum: 5
          title: Response Timeout Secs
          description: >-
            The maximum time in seconds to wait for the tool call to complete.
            Must be between 5 and 300 seconds (inclusive).
          default: 20
        interruption_mode:
          $ref: '#/components/schemas/ToolInterruptionMode'
          description: >-
            Controls whether the user can interrupt the agent around this tool
            call. 'allow' (default) lets the user interrupt at any time,
            'disable_during_tool' suppresses interruptions only while the tool
            is running, 'disable_during_tool_and_turn' suppresses interruptions
            while the tool runs and for the agent response that follows it.
          default: allow
        pre_tool_speech:
          $ref: '#/components/schemas/PreToolSpeechMode'
          description: >-
            Controls whether the agent speaks before this tool is called. 'auto'
            (default) decides based on recent tool latency, 'force' always asks
            the agent to speak, 'off' fully opts out regardless of latency.
          default: auto
        assignments:
          items:
            $ref: '#/components/schemas/DynamicVariableAssignment'
          type: array
          title: Assignments
          description: >-
            Configuration for extracting values from tool responses and
            assigning them to dynamic variables
        tool_call_sound:
          anyOf:
            - $ref: '#/components/schemas/ToolCallSoundType'
            - type: 'null'
          description: >-
            Predefined tool call sound type to play during tool execution. If
            not specified, no tool call sound will be played.
          x-convai-client-override: true
        tool_call_sound_behavior:
          $ref: '#/components/schemas/ToolCallSoundBehavior'
          description: >-
            Determines when the tool call sound should play. 'auto' only plays
            when there's pre-tool speech, 'always' plays for every tool call.
          default: auto
        tool_error_handling_mode:
          $ref: '#/components/schemas/ToolErrorHandlingMode'
          description: >-
            Controls how tool errors are processed before being shared with the
            agent. 'auto' determines handling based on tool type (summarized for
            native integrations, hide for others), 'summarized' sends an
            LLM-generated summary, 'passthrough' sends the raw error, 'hide'
            does not share the error with the agent.
          default: auto
        dynamic_variables:
          $ref: '#/components/schemas/DynamicVariablesConfig-Output'
          description: Configuration for dynamic variables
        execution_mode:
          $ref: '#/components/schemas/ToolExecutionMode'
          description: >-
            Determines when and how the tool executes: 'immediate' executes the
            tool right away when requested by the LLM, 'post_tool_speech' waits
            for the agent to finish speaking before executing, 'async' runs the
            tool in the background without blocking - best for long-running
            operations.
          default: immediate
        tool_version:
          type: string
          title: Tool Version
          description: The version of the API integration tool
          default: 1.0.0
        api_integration_id:
          type: string
          title: Api Integration Id
        api_integration_connection_id:
          type: string
          title: Api Integration Connection Id
        api_schema_overrides:
          anyOf:
            - $ref: '#/components/schemas/ApiIntegrationWebhookOverrides'
            - type: 'null'
          title: Api Schema Overrides
          description: User overrides applied on top of the base api_schema
      type: object
      required:
        - type
        - name
        - description
        - response_timeout_secs
        - interruption_mode
        - pre_tool_speech
        - assignments
        - tool_call_sound
        - tool_call_sound_behavior
        - tool_error_handling_mode
        - dynamic_variables
        - execution_mode
        - tool_version
        - api_integration_id
        - api_integration_connection_id
        - api_schema_overrides
      title: ApiIntegrationWebhookToolConfig
    RequiredConstraint:
      properties:
        required:
          items:
            type: string
          type: array
          title: Required
      type: object
      required:
        - required
      title: RequiredConstraint
      description: A set of fields that must all be present to satisfy this constraint.
    WebhookToolApiSchemaConfig-Output:
      properties:
        request_headers:
          additionalProperties:
            anyOf:
              - type: string
              - $ref: '#/components/schemas/ConvAISecretLocator'
              - $ref: '#/components/schemas/ConvAIDynamicVariable'
              - $ref: '#/components/schemas/ConvAIEnvVarLocator'
          type: object
          title: Request Headers
          description: Headers that should be included in the request
        url:
          type: string
          title: Url
          description: >-
            The URL that the webhook will be sent to. May include path
            parameters, e.g. https://example.com/agents/{agent_id}
        method:
          type: string
          enum:
            - GET
            - POST
            - PUT
            - PATCH
            - DELETE
          title: Method
          description: The HTTP method to use for the webhook
          default: GET
        path_params_schema:
          additionalProperties:
            $ref: '#/components/schemas/LiteralJsonSchemaProperty'
          type: object
          title: Path Params Schema
          description: >-
            Schema for path parameters, if any. The keys should match the
            placeholders in the URL.
        query_params_schema:
          anyOf:
            - $ref: '#/components/schemas/QueryParamsJsonSchema'
            - type: 'null'
          description: >-
            Schema for any query params, if any. These will be added to end of
            the URL as query params. Note: properties in a query param must all
            be literal types
        request_body_schema:
          anyOf:
            - $ref: '#/components/schemas/ObjectJsonSchemaProperty-Output'
            - type: 'null'
          description: >-
            Schema for the body parameters, if any. Used for POST/PATCH/PUT
            requests. The schema should be an object which will be sent as the
            json body
        response_body_schema:
          anyOf:
            - $ref: '#/components/schemas/ObjectJsonSchemaProperty-Output'
            - type: 'null'
          description: >-
            Schema describing the expected response body structure. For
            documentation only; not surfaced to the LLM.
        response_filter:
          anyOf:
            - $ref: '#/components/schemas/ResponseFilter'
            - type: 'null'
          description: >-
            Optional allow-list filter applied to the response before the LLM
            sees it, so large responses don't pollute the context. Defaults to
            the full response.
        content_type:
          type: string
          enum:
            - application/json
            - application/x-www-form-urlencoded
          title: Content Type
          description: >-
            Content type for the request body. Only applies to POST/PUT/PATCH
            requests.
          default: application/json
        auth_resolved_params:
          items:
            type: string
          type: array
          uniqueItems: true
          title: Auth Resolved Params
          description: >-
            URL placeholders resolved from the auth connection (e.g. secrets
            injected via UrlSecretAuthConnection) rather than from
            path_params_schema.
        auth_connection:
          anyOf:
            - $ref: '#/components/schemas/AuthConnectionLocator'
            - $ref: '#/components/schemas/EnvironmentAuthConnectionLocator'
            - type: 'null'
          title: Auth Connection
          description: Optional auth connection to use for authentication with this webhook
      type: object
      required:
        - url
      title: WebhookToolApiSchemaConfig
      example:
        method: GET
        path_params_schema:
          agent_id:
            type: string
        query_params_schema:
          param1:
            type: string
        request_body_schema:
          param1:
            type: string
        request_headers:
          Authorization: Bearer {api_key}
        url: https://example.com/agents/{agent_id}
    ObjectJsonSchemaProperty-Output:
      properties:
        description:
          type: string
          title: Description
          default: ''
        dynamic_variable:
          type: string
          title: Dynamic Variable
          description: >-
            When set, the entire parameter is populated from this dynamic
            variable at runtime. Mutually exclusive with description
            (LLM-provided value), constant_value, and is_omitted.
          default: ''
        constant_value:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Constant Value
          description: >-
            When set, the entire object uses this constant JSON value at
            runtime. Mutually exclusive with description (LLM-provided object),
            dynamic_variable, and is_omitted.
        is_omitted:
          type: boolean
          title: Is Omitted
          description: >-
            If true, this parameter will be completely omitted from the request.
            Only valid for optional parameters. Mutually exclusive with
            description, dynamic_variable, and constant_value.
          default: false
        type:
          type: string
          const: object
          title: Type
          default: object
        required:
          items:
            type: string
          type: array
          title: Required
        properties:
          additionalProperties:
            oneOf:
              - $ref: '#/components/schemas/LiteralJsonSchemaProperty'
              - $ref: '#/components/schemas/ObjectJsonSchemaProperty-Output'
              - $ref: '#/components/schemas/ArrayJsonSchemaProperty-Output'
          type: object
          title: Properties
        required_constraints:
          anyOf:
            - $ref: '#/components/schemas/RequiredConstraints'
            - type: 'null'
      additionalProperties: false
      type: object
      title: ObjectJsonSchemaProperty
    ArrayJsonSchemaProperty-Output:
      properties:
        description:
          type: string
          title: Description
          default: ''
        dynamic_variable:
          type: string
          title: Dynamic Variable
          description: >-
            When set, the entire parameter is populated from this dynamic
            variable at runtime. Mutually exclusive with description
            (LLM-provided value), constant_value, and is_omitted.
          default: ''
        constant_value:
          anyOf:
            - items: {}
              type: array
            - type: 'null'
          title: Constant Value
          description: >-
            When set, the entire array uses this constant value at runtime.
            Mutually exclusive with description (LLM-provided array),
            dynamic_variable, and is_omitted.
        is_omitted:
          type: boolean
          title: Is Omitted
          description: >-
            If true, this parameter will be completely omitted from the request.
            Only valid for optional parameters. Mutually exclusive with
            description, dynamic_variable, and constant_value.
          default: false
        type:
          type: string
          const: array
          title: Type
          default: array
        items:
          oneOf:
            - $ref: '#/components/schemas/LiteralJsonSchemaProperty'
            - $ref: '#/components/schemas/ObjectJsonSchemaProperty-Output'
            - $ref: '#/components/schemas/ArrayJsonSchemaProperty-Output'
          title: Items
          description: Schema for array elements.
          default:
            type: string
            description: Array element
            is_system_provided: false
            dynamic_variable: ''
            allowed_values_dynamic_variable: ''
            constant_value: ''
            is_omitted: false
      additionalProperties: false
      type: object
      title: ArrayJsonSchemaProperty

````