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

# List Multi Agents

> List all multi agents.



## OpenAPI

````yaml get /api/v1/multi-agent
openapi: 3.1.0
info:
  title: Voicebot Public API
  description: Public API for Voicebot Assistant Management
  version: 1.0.0
servers: []
security: []
paths:
  /api/v1/multi-agent:
    get:
      tags:
        - multi-agent
      summary: List Multi Agents
      description: List all multi agents.
      operationId: list_multi_agents_api_v1_multi_agent_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/MultiAgentResponse'
                type: array
                title: Response List Multi Agents Api V1 Multi Agent Get
      security:
        - APIKeyHeader: []
components:
  schemas:
    MultiAgentResponse:
      properties:
        id:
          type: string
          title: Id
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
        members:
          items:
            $ref: '#/components/schemas/SquadMemberDTO-Output'
          type: array
          title: Members
        members_overrides:
          anyOf:
            - $ref: '#/components/schemas/CreateAssistantRequest-Output'
            - type: 'null'
        organizationId:
          type: string
          title: Organizationid
        createdAt:
          type: string
          title: Createdat
        updatedAt:
          type: string
          title: Updatedat
      type: object
      required:
        - id
        - members
        - organizationId
        - createdAt
        - updatedAt
      title: MultiAgentResponse
      description: Response model for a mighty agent
    SquadMemberDTO-Output:
      properties:
        assistantId:
          anyOf:
            - type: string
            - type: 'null'
          title: Assistantid
          description: >-
            This is the assistant that will be used for the call. To use a
            transient assistant, use `assistant` instead.
        assistant:
          anyOf:
            - $ref: '#/components/schemas/CreateAssistantRequest-Output'
            - type: 'null'
          description: >-
            This is the assistant that will be used for the call. To use an
            existing assistant, use `assistantId` instead.
        assistantOverrides:
          anyOf:
            - $ref: '#/components/schemas/CreateAssistantRequest-Output'
            - type: 'null'
          description: >-
            This can be used to override the assistant's settings and provide
            values for it's template variables.
        assistantDestinations:
          anyOf:
            - items:
                $ref: '#/components/schemas/TransferDestinationAssistant-Output'
              type: array
            - type: 'null'
          title: Assistantdestinations
          description: >-
            These are the others assistants that this assistant can transfer to.


            If the assistant already has transfer call tool, these destinations
            are just appended to existing ones.
      type: object
      title: SquadMemberDTO
    CreateAssistantRequest-Output:
      properties:
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
        model:
          anyOf:
            - $ref: '#/components/schemas/CreateAssistantDtoModel-Output'
            - type: 'null'
        voice:
          anyOf:
            - $ref: '#/components/schemas/CreateAssistantDtoVoice-Output'
            - type: 'null'
        firstMessageMode:
          anyOf:
            - $ref: '#/components/schemas/CreateAssistantDtoFirstMessageMode'
            - type: 'null'
        hipaaEnabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Hipaaenabled
          default: false
        clientMessages:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Clientmessages
        serverMessages:
          anyOf:
            - items:
                $ref: '#/components/schemas/CreateAssistantDtoServerMessagesItem'
              type: array
            - type: 'null'
          title: Servermessages
        silenceTimeoutSeconds:
          anyOf:
            - type: number
            - type: 'null'
          title: Silencetimeoutseconds
        maxDurationSeconds:
          anyOf:
            - type: number
            - type: 'null'
          title: Maxdurationseconds
        backgroundSound:
          anyOf:
            - $ref: '#/components/schemas/CreateAssistantDtoBackgroundSound'
            - type: 'null'
        backgroundDenoisingEnabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Backgrounddenoisingenabled
        modelOutputInMessagesEnabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Modeloutputinmessagesenabled
        transportConfigurations:
          anyOf:
            - items:
                $ref: '#/components/schemas/TransportConfigurationTwilio'
              type: array
            - type: 'null'
          title: Transportconfigurations
        firstMessage:
          anyOf:
            - type: string
            - type: 'null'
          title: Firstmessage
        voicemailDetection:
          anyOf:
            - $ref: '#/components/schemas/VoicemailDetection'
            - type: 'null'
        voicemailMessage:
          anyOf:
            - type: string
            - type: 'null'
          title: Voicemailmessage
          default: ''
        endCallMessage:
          anyOf:
            - type: string
            - type: 'null'
          title: Endcallmessage
        endCallPhrases:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Endcallphrases
        metadata:
          anyOf:
            - additionalProperties:
                anyOf:
                  - {}
                  - type: 'null'
              type: object
            - type: 'null'
          title: Metadata
        serverUrl:
          anyOf:
            - type: string
            - type: 'null'
          title: Serverurl
          description: >-
            Server URL must match either workflow.amira.bot or
            workflow.voicebot.studio
        serverUrlSecret:
          anyOf:
            - type: string
            - type: 'null'
          title: Serverurlsecret
        analysisPlan:
          anyOf:
            - $ref: '#/components/schemas/changedAssistantAnalysisPlan-Output'
            - type: 'null'
        artifactPlan:
          anyOf:
            - $ref: '#/components/schemas/ArtifactPlan'
            - type: 'null'
        messagePlan:
          anyOf:
            - $ref: '#/components/schemas/MessagePlan'
            - type: 'null'
        startSpeakingPlan:
          anyOf:
            - $ref: '#/components/schemas/StartSpeakingPlan'
            - type: 'null'
        stopSpeakingPlan:
          anyOf:
            - $ref: '#/components/schemas/StopSpeakingPlan'
            - type: 'null'
        monitorPlan:
          anyOf:
            - $ref: '#/components/schemas/MonitorPlan'
            - type: 'null'
        transcriber:
          anyOf:
            - $ref: '#/components/schemas/CreateAssistantDtoTranscriber'
            - type: 'null'
        dialKeypadFunctionEnabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Dialkeypadfunctionenabled
        endCallFunctionEnabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Endcallfunctionenabled
        forwardingPhoneNumber:
          anyOf:
            - type: string
            - type: 'null'
          title: Forwardingphonenumber
      type: object
      title: CreateAssistantRequest
    TransferDestinationAssistant-Output:
      properties:
        message:
          anyOf:
            - type: string
            - $ref: '#/components/schemas/CustomMessage-Output'
            - type: 'null'
          title: Message
          description: >-
            This is spoken to the customer before connecting them to the
            destination.


            Usage:

            - If this is not provided and transfer tool messages is not
            provided, default is "Transferring the call now".

            - If set to "", nothing is spoken. This is useful when you want to
            silently transfer. This is especially useful when transferring
            between assistants in a squad. In this scenario, you likely also
            want to set
            `assistant.firstMessageMode=assistant-speaks-first-with-model-generated-message`
            for the destination assistant.


            This accepts a string or a ToolMessageStart class. Latter is useful
            if you want to specify multiple messages for different languages
            through the `contents` field.
        type:
          $ref: '#/components/schemas/Type14'
        transferMode:
          anyOf:
            - $ref: '#/components/schemas/TransferMode'
            - type: 'null'
          description: >-
            This is the mode to use for the transfer. Defaults to
            `rolling-history`.


            - `rolling-history`: This is the default mode. It keeps the entire
            conversation history and appends the new assistant's system message
            on transfer.

              Example:

              Pre-transfer:
                system: assistant1 system message
                assistant: assistant1 first message
                user: hey, good morning
                assistant: how can i help?
                user: i need help with my account
                assistant: (destination.message)

              Post-transfer:
                system: assistant1 system message
                assistant: assistant1 first message
                user: hey, good morning
                assistant: how can i help?
                user: i need help with my account
                assistant: (destination.message)
                system: assistant2 system message
                assistant: assistant2 first message (or model generated if firstMessageMode is set to `assistant-speaks-first-with-model-generated-message`)

            - `swap-system-message-in-history`: This replaces the original
            system message with the new assistant's system message on transfer.

              Example:

              Pre-transfer:
                system: assistant1 system message
                assistant: assistant1 first message
                user: hey, good morning
                assistant: how can i help?
                user: i need help with my account
                assistant: (destination.message)

              Post-transfer:
                system: assistant2 system message
                assistant: assistant1 first message
                user: hey, good morning
                assistant: how can i help?
                user: i need help with my account
                assistant: (destination.message)
                assistant: assistant2 first message (or model generated if firstMessageMode is set to `assistant-speaks-first-with-model-generated-message`)

            - `delete-history`: This deletes the entire conversation history on
            transfer.

              Example:

              Pre-transfer:
                system: assistant1 system message
                assistant: assistant1 first message
                user: hey, good morning
                assistant: how can i help?
                user: i need help with my account
                assistant: (destination.message)

              Post-transfer:
                system: assistant2 system message
                assistant: assistant2 first message
                user: Yes, please
                assistant: how can i help?
                user: i need help with my account

            @default 'rolling-history'
        assistantName:
          type: string
          title: Assistantname
          description: This is the assistant to transfer the call to.
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: >-
            This is the description of the destination, used by the AI to choose
            when and how to transfer the call.
      type: object
      required:
        - type
        - assistantName
      title: TransferDestinationAssistant
    CreateAssistantDtoModel-Output:
      properties:
        messages:
          anyOf:
            - items:
                $ref: '#/components/schemas/Messages'
              type: array
            - type: 'null'
          title: Messages
        provider:
          anyOf:
            - $ref: '#/components/schemas/StandardModel'
            - type: 'null'
          default: standard
        model:
          anyOf:
            - $ref: '#/components/schemas/StandardModel'
            - type: 'null'
          default: standard
        tools:
          anyOf:
            - items:
                anyOf:
                  - $ref: '#/components/schemas/CreateDtmfToolDTO-Output'
                  - $ref: '#/components/schemas/CreateEndCallToolDTO-Output'
                  - $ref: '#/components/schemas/CreateFunctionToolDTO-Output'
                  - $ref: '#/components/schemas/CreateTransferCallToolDTO-Output'
              type: array
            - type: 'null'
          title: Tools
          description: >-
            These are the tools that the assistant can use during the call. To
            use existing tools, use `toolIds`.


            Both `tools` and `toolIds` can be used together.
        toolIds:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Toolids
          description: >-
            These are the tools that the assistant can use during the call. To
            use transient tools, use `tools`.


            Both `tools` and `toolIds` can be used together.
        temperature:
          anyOf:
            - type: number
            - type: 'null'
          title: Temperature
        maxTokens:
          anyOf:
            - type: integer
            - type: 'null'
          title: Maxtokens
        numFastTurns:
          anyOf:
            - type: number
            - type: 'null'
          title: Numfastturns
        knowledgeBase:
          anyOf:
            - $ref: '#/components/schemas/KnowledgeBase'
            - type: 'null'
        fallbackModels:
          anyOf:
            - items:
                $ref: '#/components/schemas/StandardModel'
              type: array
            - type: 'null'
          title: Fallbackmodels
          default:
            - standard
        semanticCachingEnabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Semanticcachingenabled
        emotionRecognitionEnabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Emotionrecognitionenabled
      type: object
      title: CreateAssistantDtoModel
    CreateAssistantDtoVoice-Output:
      properties:
        fillerInjectionEnabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Fillerinjectionenabled
        model:
          anyOf:
            - $ref: '#/components/schemas/ElevenLabsModel'
            - type: 'null'
        style:
          type: number
          title: Style
        voiceId:
          anyOf:
            - $ref: '#/components/schemas/ElevenLabsVoiceId'
            - type: 'null'
        language:
          type: string
          title: Language
        provider:
          type: string
          title: Provider
          default: standard
        stability:
          anyOf:
            - type: number
            - type: 'null'
          title: Stability
        similarityBoost:
          anyOf:
            - type: number
            - type: 'null'
          title: Similarityboost
        useSpeakerBoost:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Usespeakerboost
          default: false
        enableSsmlParsing:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enablessmlparsing
          default: false
        optimizeStreamingLatency:
          anyOf:
            - type: number
            - type: 'null'
          title: Optimizestreaminglatency
          default: 3
        chunkPlan:
          anyOf:
            - $ref: '#/components/schemas/ChunkPlan-Output'
            - type: 'null'
      type: object
      required:
        - model
        - style
        - voiceId
        - language
        - chunkPlan
      title: CreateAssistantDtoVoice
    CreateAssistantDtoFirstMessageMode:
      type: string
      enum:
        - assistant-speaks-first
        - assistant-speaks-first-with-model-generated-message
        - assistant-waits-for-user
      title: CreateAssistantDtoFirstMessageMode
    CreateAssistantDtoServerMessagesItem:
      type: string
      enum:
        - end-of-call-report
      title: CreateAssistantDtoServerMessagesItem
      description: '"end-of-call-report",'
    CreateAssistantDtoBackgroundSound:
      type: string
      enum:
        - 'off'
        - office
      title: CreateAssistantDtoBackgroundSound
      description: '"off", "office"'
    TransportConfigurationTwilio:
      properties:
        provider:
          type: string
          title: Provider
          default: twilio
        timeout:
          anyOf:
            - type: number
            - type: 'null'
          title: Timeout
        record:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Record
        recordingChannels:
          anyOf:
            - $ref: >-
                #/components/schemas/TransportConfigurationTwilioRecordingChannels
            - type: 'null'
      type: object
      title: TransportConfigurationTwilio
    VoicemailDetection:
      properties:
        enabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enabled
        provider:
          anyOf:
            - type: string
            - type: 'null'
          title: Provider
        machineDetectionTimeout:
          anyOf:
            - type: integer
            - type: 'null'
          title: Machinedetectiontimeout
        voicemailDetectionTypes:
          anyOf:
            - items:
                $ref: '#/components/schemas/VoicemailDetectionTypes'
              type: array
            - type: 'null'
          title: Voicemaildetectiontypes
          default:
            - machine_end_beep
            - machine_end_silence
        machineDetectionSilenceTimeout:
          anyOf:
            - type: integer
            - type: 'null'
          title: Machinedetectionsilencetimeout
        machineDetectionSpeechThreshold:
          anyOf:
            - type: integer
            - type: 'null'
          title: Machinedetectionspeechthreshold
        machineDetectionSpeechEndThreshold:
          anyOf:
            - type: integer
            - type: 'null'
          title: Machinedetectionspeechendthreshold
      type: object
      title: VoicemailDetection
    changedAssistantAnalysisPlan-Output:
      properties:
        successEvaluationRubric:
          anyOf:
            - $ref: '#/components/schemas/Rubric'
            - type: 'null'
          description: >-
            This is the rubric for the success evaluation request. This outputs
            to `call.analysis.successEvaluation`.
        successEvaluationRequestTimeoutSeconds:
          anyOf:
            - type: integer
            - type: 'null'
          title: Successevaluationrequesttimeoutseconds
          description: >-
            This is the timeout for the success evaluation request. This outputs
            to `call.analysis.successEvaluation`.
        successEvaluationPrompt:
          anyOf:
            - type: string
            - type: 'null'
          title: Successevaluationprompt
          description: >-
            This is the prompt for the success evaluation request. This outputs
            to `call.analysis.successEvaluation`.
        structuredDataSchema:
          anyOf:
            - $ref: '#/components/schemas/JsonSchema'
            - type: 'null'
          description: >-
            This is the schema for the structured data request. This outputs to
            `call.analysis.structuredData`.
        structuredDataRequestTimeoutSeconds:
          anyOf:
            - type: integer
            - type: 'null'
          title: Structureddatarequesttimeoutseconds
          description: >-
            This is the timeout for the structured data request. This outputs to
            `call.analysis.structuredData`.
        structuredDataPrompt:
          anyOf:
            - type: string
            - type: 'null'
          title: Structureddataprompt
          description: >-
            This is the prompt for the structured data request. This outputs to
            `call.analysis.structuredData`.
        summaryPrompt:
          anyOf:
            - type: string
            - type: 'null'
          title: Summaryprompt
          description: >-
            This is the prompt for the summary request. This outputs to
            `call.analysis.summary`.
        summaryRequestTimeoutSeconds:
          anyOf:
            - type: integer
            - type: 'null'
          title: Summaryrequesttimeoutseconds
          description: >-
            This is the timeout for the summary request. This outputs to
            `call.analysis.summary`.
      type: object
      title: changedAssistantAnalysisPlan
      description: This is the analysis plan for the assistant.
    ArtifactPlan:
      properties:
        transcriptPlan:
          $ref: '#/components/schemas/TranscriptPlan'
        recordingEnabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Recordingenabled
        videoRecordingEnabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Videorecordingenabled
        recordingPath:
          anyOf:
            - type: string
            - type: 'null'
          title: Recordingpath
      type: object
      required:
        - transcriptPlan
      title: ArtifactPlan
    MessagePlan:
      properties:
        idleMessages:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Idlemessages
        idleMessageMaxSpokenCount:
          anyOf:
            - type: number
            - type: 'null'
          title: Idlemessagemaxspokencount
        idleTimeoutSeconds:
          anyOf:
            - type: number
            - type: 'null'
          title: Idletimeoutseconds
      type: object
      title: MessagePlan
    StartSpeakingPlan:
      properties:
        waitSeconds:
          anyOf:
            - type: number
            - type: 'null'
          title: Waitseconds
        smartEndpointingEnabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Smartendpointingenabled
        transcriptionEndpointingPlan:
          anyOf:
            - $ref: '#/components/schemas/TranscriptionEndpointingPlan'
            - type: 'null'
      type: object
      title: StartSpeakingPlan
    StopSpeakingPlan:
      properties:
        numWords:
          anyOf:
            - type: number
            - type: 'null'
          title: Numwords
        voiceSeconds:
          anyOf:
            - type: number
            - type: 'null'
          title: Voiceseconds
        backoffSeconds:
          anyOf:
            - type: number
            - type: 'null'
          title: Backoffseconds
      type: object
      title: StopSpeakingPlan
    MonitorPlan:
      properties:
        listenEnabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Listenenabled
        controlEnabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Controlenabled
      type: object
      title: MonitorPlan
    CreateAssistantDtoTranscriber:
      properties:
        provider:
          anyOf:
            - $ref: '#/components/schemas/StandardModel'
            - type: 'null'
        model:
          anyOf:
            - $ref: '#/components/schemas/StandardModel'
            - type: 'null'
        language:
          anyOf:
            - type: string
            - type: 'null'
          title: Language
        smartFormat:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Smartformat
        languageDetectionEnabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Languagedetectionenabled
        keywords:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Keywords
        endpointing:
          anyOf:
            - type: number
            - type: 'null'
          title: Endpointing
      type: object
      title: CreateAssistantDtoTranscriber
    CustomMessage-Output:
      properties:
        contents:
          anyOf:
            - items:
                $ref: '#/components/schemas/TextContent'
              type: array
            - type: 'null'
          title: Contents
          description: >-
            This is an alternative to the `content` property. It allows to
            specify variants of the same content, one per language.


            Usage:

            - If your assistants are multilingual, you can provide content for
            each language.

            - If you don't provide content for a language, the first item in the
            array will be automatically translated to the active language at
            that moment.


            This will override the `content` property.
        type:
          $ref: '#/components/schemas/Type13'
          description: This is a custom message.
        content:
          anyOf:
            - type: string
              maxLength: 1000
            - type: 'null'
          title: Content
          description: >-
            This is the content that the assistant will say when this message is
            triggered.
      type: object
      required:
        - type
      title: CustomMessage
    Type14:
      type: string
      enum:
        - assistant
      title: Type14
    TransferMode:
      type: string
      enum:
        - rolling-history
        - swap-system-message-in-history
        - delete-history
      title: TransferMode
    Messages:
      properties:
        content:
          type: string
          title: Content
        role:
          type: string
          title: Role
      type: object
      required:
        - content
        - role
      title: Messages
    StandardModel:
      type: string
      enum:
        - standard
      title: StandardModel
    CreateDtmfToolDTO-Output:
      properties:
        async:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Async
          description: >-
            This determines if the tool is async.


            If async, the assistant will move forward without waiting for your
            server to respond. This is useful if you just want to trigger
            something on your server.


            If sync, the assistant will wait for your server to respond. This is
            useful if want assistant to respond with the result from your
            server.


            Defaults to synchronous (`false`).
          examples:
            - false
        messages:
          anyOf:
            - items:
                anyOf:
                  - $ref: '#/components/schemas/ToolMessageStart-Output'
                  - $ref: '#/components/schemas/ToolMessageComplete-Output'
                  - $ref: '#/components/schemas/ToolMessageFailed-Output'
                  - $ref: '#/components/schemas/ToolMessageDelayed-Output'
              type: array
            - type: 'null'
          title: Messages
          description: >-
            These are the messages that will be spoken to the user as the tool
            is running.


            For some tools, this is auto-filled based on special fields like
            `tool.destinations`. For others like the function tool, these can be
            custom configured.
        type:
          $ref: '#/components/schemas/Type7'
          description: The type of tool. "dtmf" for DTMF tool.
        function:
          anyOf:
            - $ref: '#/components/schemas/OpenAIFunction-Output'
            - type: 'null'
          description: >-
            This is the function definition of the tool.


            For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled
            based on tool-specific fields like `tool.destinations`. But, even in
            those cases, you can provide a custom function definition for
            advanced use cases.


            An example of an advanced use case is if you want to customize the
            message that's spoken for `endCall` tool. You can specify a function
            where it returns an argument "reason". Then, in `messages` array,
            you can have many "request-complete" messages. One of these messages
            will be triggered if the `messages[].conditions` matches the
            "reason" argument.
        server:
          anyOf:
            - $ref: '#/components/schemas/Server'
            - type: 'null'
          description: >-
            This is the server that will be hit when this tool is requested by
            the model.


            All requests will be sent with the call object among other things.
            You can find more details in the Server URL documentation.


            This overrides the serverUrl set on the org and the phoneNumber.
            Order of precedence: highest tool.server.url, then
            assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
      type: object
      required:
        - type
      title: CreateDtmfToolDTO
    CreateEndCallToolDTO-Output:
      properties:
        async:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Async
          description: >-
            This determines if the tool is async.


            If async, the assistant will move forward without waiting for your
            server to respond. This is useful if you just want to trigger
            something on your server.


            If sync, the assistant will wait for your server to respond. This is
            useful if want assistant to respond with the result from your
            server.


            Defaults to synchronous (`false`).
          examples:
            - false
        messages:
          anyOf:
            - items:
                anyOf:
                  - $ref: '#/components/schemas/ToolMessageStart-Output'
                  - $ref: '#/components/schemas/ToolMessageComplete-Output'
                  - $ref: '#/components/schemas/ToolMessageFailed-Output'
                  - $ref: '#/components/schemas/ToolMessageDelayed-Output'
              type: array
            - type: 'null'
          title: Messages
          description: >-
            These are the messages that will be spoken to the user as the tool
            is running.


            For some tools, this is auto-filled based on special fields like
            `tool.destinations`. For others like the function tool, these can be
            custom configured.
        type:
          $ref: '#/components/schemas/Type8'
          description: The type of tool. "endCall" for End Call tool.
        function:
          anyOf:
            - $ref: '#/components/schemas/OpenAIFunction-Output'
            - type: 'null'
          description: >-
            This is the function definition of the tool.


            For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled
            based on tool-specific fields like `tool.destinations`. But, even in
            those cases, you can provide a custom function definition for
            advanced use cases.


            An example of an advanced use case is if you want to customize the
            message that's spoken for `endCall` tool. You can specify a function
            where it returns an argument "reason". Then, in `messages` array,
            you can have many "request-complete" messages. One of these messages
            will be triggered if the `messages[].conditions` matches the
            "reason" argument.
        server:
          anyOf:
            - $ref: '#/components/schemas/Server'
            - type: 'null'
          description: >-
            This is the server that will be hit when this tool is requested by
            the model.


            All requests will be sent with the call object among other things.
            You can find more details in the Server URL documentation.


            This overrides the serverUrl set on the org and the phoneNumber.
            Order of precedence: highest tool.server.url, then
            assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
      type: object
      required:
        - type
      title: CreateEndCallToolDTO
    CreateFunctionToolDTO-Output:
      properties:
        async:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Async
          description: >-
            This determines if the tool is async.


            If async, the assistant will move forward without waiting for your
            server to respond. This is useful if you just want to trigger
            something on your server.


            If sync, the assistant will wait for your server to respond. This is
            useful if want assistant to respond with the result from your
            server.


            Defaults to synchronous (`false`).
          examples:
            - false
        messages:
          anyOf:
            - items:
                anyOf:
                  - $ref: '#/components/schemas/ToolMessageStart-Output'
                  - $ref: '#/components/schemas/ToolMessageComplete-Output'
                  - $ref: '#/components/schemas/ToolMessageFailed-Output'
                  - $ref: '#/components/schemas/ToolMessageDelayed-Output'
              type: array
            - type: 'null'
          title: Messages
          description: >-
            These are the messages that will be spoken to the user as the tool
            is running.


            For some tools, this is auto-filled based on special fields like
            `tool.destinations`. For others like the function tool, these can be
            custom configured.
        type:
          $ref: '#/components/schemas/Type10'
          description: The type of tool. "function" for Function tool.
        function:
          anyOf:
            - $ref: '#/components/schemas/OpenAIFunction-Output'
            - type: 'null'
          description: >-
            This is the function definition of the tool.


            For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled
            based on tool-specific fields like `tool.destinations`. But, even in
            those cases, you can provide a custom function definition for
            advanced use cases.


            An example of an advanced use case is if you want to customize the
            message that's spoken for `endCall` tool. You can specify a function
            where it returns an argument "reason". Then, in `messages` array,
            you can have many "request-complete" messages. One of these messages
            will be triggered if the `messages[].conditions` matches the
            "reason" argument.
        server:
          anyOf:
            - $ref: '#/components/schemas/Server'
            - type: 'null'
          description: >-
            This is the server that will be hit when this tool is requested by
            the model.


            All requests will be sent with the call object among other things.
            You can find more details in the Server URL documentation.


            This overrides the serverUrl set on the org and the phoneNumber.
            Order of precedence: highest tool.server.url, then
            assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
      type: object
      required:
        - type
      title: CreateFunctionToolDTO
    CreateTransferCallToolDTO-Output:
      properties:
        async:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Async
          description: >-
            This determines if the tool is async.


            If async, the assistant will move forward without waiting for your
            server to respond. This is useful if you just want to trigger
            something on your server.


            If sync, the assistant will wait for your server to respond. This is
            useful if want assistant to respond with the result from your
            server.


            Defaults to synchronous (`false`).
          examples:
            - false
        messages:
          anyOf:
            - items:
                anyOf:
                  - $ref: '#/components/schemas/ToolMessageStart-Output'
                  - $ref: '#/components/schemas/ToolMessageComplete-Output'
                  - $ref: '#/components/schemas/ToolMessageFailed-Output'
                  - $ref: '#/components/schemas/ToolMessageDelayed-Output'
              type: array
            - type: 'null'
          title: Messages
          description: >-
            These are the messages that will be spoken to the user as the tool
            is running.


            For some tools, this is auto-filled based on special fields like
            `tool.destinations`. For others like the function tool, these can be
            custom configured.
        type:
          $ref: '#/components/schemas/Type18'
        destinations:
          anyOf:
            - items:
                anyOf:
                  - $ref: '#/components/schemas/TransferDestinationAssistant-Output'
                  - $ref: '#/components/schemas/TransferDestinationStep-Output'
                  - $ref: >-
                      #/components/schemas/app__schemas__tools__TransferDestinationNumber-Output
                  - $ref: >-
                      #/components/schemas/app__schemas__tools__TransferDestinationSip-Output
              type: array
            - type: 'null'
          title: Destinations
          description: >-
            These are the destinations that the call can be transferred to. If
            no destinations are provided, server.url will be used to get the
            transfer destination once the tool is called.
        function:
          anyOf:
            - $ref: '#/components/schemas/OpenAIFunction-Output'
            - type: 'null'
          description: >-
            This is the function definition of the tool.


            For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled
            based on tool-specific fields like `tool.destinations`. But, even in
            those cases, you can provide a custom function definition for
            advanced use cases.


            An example of an advanced use case is if you want to customize the
            message that's spoken for `endCall` tool. You can specify a function
            where it returns an argument "reason". Then, in `messages` array,
            you can have many "request-complete" messages. One of these messages
            will be triggered if the `messages[].conditions` matches the
            "reason" argument.
        server:
          anyOf:
            - $ref: '#/components/schemas/Server'
            - type: 'null'
          description: >-
            This is the server that will be hit when this tool is requested by
            the model.


            All requests will be sent with the call object among other things.
            You can find more details in the Server URL documentation.


            This overrides the serverUrl set on the org and the phoneNumber.
            Order of precedence: highest tool.server.url, then
            assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
      type: object
      required:
        - type
      title: CreateTransferCallToolDTO
    KnowledgeBase:
      properties:
        provider:
          type: string
          title: Provider
          default: canonical
        topK:
          type: number
          title: Topk
        fileIds:
          items:
            type: string
          type: array
          title: Fileids
      type: object
      required:
        - topK
        - fileIds
      title: KnowledgeBase
    ElevenLabsModel:
      type: string
      enum:
        - standard
      title: ElevenLabsModel
    ElevenLabsVoiceId:
      type: string
      enum:
        - Robert
        - Sascha
        - Kevin
        - Fred
        - Emma
        - Eva
        - Lola
        - Amira
        - Emilio
        - Sunita
        - Mohd
        - Jean
        - Mary
        - Tobias
      title: ElevenLabsVoiceId
    ChunkPlan-Output:
      properties:
        enabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enabled
          default: true
        minCharacters:
          anyOf:
            - type: number
              maximum: 80
              minimum: 1
            - type: 'null'
          title: Mincharacters
          default: 30
        punctuationBoundaries:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Punctuationboundaries
        formatPlan:
          anyOf:
            - $ref: '#/components/schemas/FormatPlan-Output'
            - type: 'null'
      type: object
      title: ChunkPlan
    TransportConfigurationTwilioRecordingChannels:
      type: string
      enum:
        - mono
        - dual
      title: TransportConfigurationTwilioRecordingChannels
    VoicemailDetectionTypes:
      type: string
      enum:
        - machine_start
        - human
        - fax
        - unknown
        - machine_end_beep
        - machine_end_silence
        - machine_end_other
      title: VoicemailDetectionTypes
    Rubric:
      type: string
      enum:
        - NumericScale
        - DescriptiveScale
        - Checklist
        - Matrix
        - PercentageScale
        - LikertScale
        - AutomaticRubric
        - PassFail
        - <class 'app.schemas.assistants.Rubric.Config'>
      title: Rubric
    JsonSchema:
      properties:
        type:
          $ref: '#/components/schemas/Type5'
          description: >-
            This is the type of output you'd like.


            `string`, `number`, `integer`, `boolean` are the primitive types and
            should be obvious.


            `array` and `object` are more interesting and quite powerful. They
            allow you to define nested structures.


            For `array`, you can define the schema of the items in the array
            using the `items` property.


            For `object`, you can define the properties of the object using the
            `properties` property.
        items:
          anyOf:
            - type: object
            - type: 'null'
          title: Items
          description: >-
            This is required if the type is "array". This is the schema of the
            items in the array.


            This is of type JsonSchema. However, Swagger doesn't support
            circular references.
        properties:
          anyOf:
            - type: object
            - type: 'null'
          title: Properties
          description: >-
            This is required if the type is "object". This specifies the
            properties of the object.


            This is a map of string to JsonSchema. However, Swagger doesn't
            support circular references.
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: >-
            This is the description to help the model understand what it needs
            to output.
        required:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Required
          description: |-
            This is a list of properties that are required.

            This only makes sense if the type is "object".
      type: object
      required:
        - type
      title: JsonSchema
    TranscriptPlan:
      properties:
        enabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enabled
        userName:
          anyOf:
            - type: string
            - type: 'null'
          title: Username
        assistantName:
          anyOf:
            - type: string
            - type: 'null'
          title: Assistantname
      type: object
      title: TranscriptPlan
    TranscriptionEndpointingPlan:
      properties:
        onPunctuationSeconds:
          anyOf:
            - type: number
            - type: 'null'
          title: Onpunctuationseconds
        onNoPunctuationSeconds:
          anyOf:
            - type: number
            - type: 'null'
          title: Onnopunctuationseconds
        onNumberSeconds:
          anyOf:
            - type: number
            - type: 'null'
          title: Onnumberseconds
      type: object
      title: TranscriptionEndpointingPlan
    TextContent:
      properties:
        type:
          $ref: '#/components/schemas/Type'
        text:
          type: string
          title: Text
        language:
          $ref: '#/components/schemas/Language4'
      type: object
      required:
        - type
        - text
        - language
      title: TextContent
    Type13:
      type: string
      enum:
        - custom-message
      title: Type13
    ToolMessageStart-Output:
      properties:
        contents:
          anyOf:
            - items:
                $ref: '#/components/schemas/TextContent'
              type: array
            - type: 'null'
          title: Contents
          description: >-
            This is an alternative to the `content` property. It allows to
            specify variants of the same content, one per language.


            Usage:

            - If your assistants are multilingual, you can provide content for
            each language.

            - If you don't provide content for a language, the first item in the
            array will be automatically translated to the active language at
            that moment.


            This will override the `content` property.
        type:
          $ref: '#/components/schemas/Type1'
          description: >-
            This message is triggered when the tool call starts.


            This message is never triggered for async tools.


            If this message is not provided, one of the default filler messages
            "Hold on a sec", "One moment", "Just a sec", "Give me a moment" or
            "This'll just take a sec" will be used.
        content:
          anyOf:
            - type: string
              maxLength: 1000
            - type: 'null'
          title: Content
          description: >-
            This is the content that the assistant says when this message is
            triggered.
        conditions:
          anyOf:
            - items:
                $ref: '#/components/schemas/Condition'
              type: array
            - type: 'null'
          title: Conditions
          description: >-
            This is an optional array of conditions that the tool call arguments
            must meet in order for this message to be triggered.
      type: object
      required:
        - type
      title: ToolMessageStart
    ToolMessageComplete-Output:
      properties:
        contents:
          anyOf:
            - items:
                $ref: '#/components/schemas/TextContent'
              type: array
            - type: 'null'
          title: Contents
          description: >-
            This is an alternative to the `content` property. It allows to
            specify variants of the same content, one per language.


            Usage:

            - If your assistants are multilingual, you can provide content for
            each language.

            - If you don't provide content for a language, the first item in the
            array will be automatically translated to the active language at
            that moment.


            This will override the `content` property.
        type:
          $ref: '#/components/schemas/Type2'
          description: >-
            This message is triggered when the tool call is complete.


            This message is triggered immediately without waiting for your
            server to respond for async tool calls.


            If this message is not provided, the model will be requested to
            respond.


            If this message is provided, only this message will be spoken and
            the model will not be requested to come up with a response. It's an
            exclusive OR.
        role:
          anyOf:
            - $ref: '#/components/schemas/Role'
            - type: 'null'
          description: >-
            This is optional and defaults to "assistant".


            When role=assistant, `content` is said out loud.


            When role=system, `content` is passed to the model in a system
            message. Example:
                system: default one
                assistant:
                user:
                assistant:
                user:
                assistant:
                user:
                assistant: tool called
                tool: your server response
                <--- system prompt as hint
                ---> model generates response which is spoken
            This is useful when you want to provide a hint to the model about
            what to say next.
        endCallAfterSpokenEnabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Endcallafterspokenenabled
          description: >-
            This is an optional boolean that if true, the call will end after
            the message is spoken. Default is false.


            This is ignored if `role` is set to `system`.


            @default false
          examples:
            - false
        content:
          anyOf:
            - type: string
              maxLength: 1000
            - type: 'null'
          title: Content
          description: >-
            This is the content that the assistant says when this message is
            triggered.
        conditions:
          anyOf:
            - items:
                $ref: '#/components/schemas/Condition'
              type: array
            - type: 'null'
          title: Conditions
          description: >-
            This is an optional array of conditions that the tool call arguments
            must meet in order for this message to be triggered.
      type: object
      required:
        - type
      title: ToolMessageComplete
    ToolMessageFailed-Output:
      properties:
        contents:
          anyOf:
            - items:
                $ref: '#/components/schemas/TextContent'
              type: array
            - type: 'null'
          title: Contents
          description: >-
            This is an alternative to the `content` property. It allows to
            specify variants of the same content, one per language.


            Usage:

            - If your assistants are multilingual, you can provide content for
            each language.

            - If you don't provide content for a language, the first item in the
            array will be automatically translated to the active language at
            that moment.


            This will override the `content` property.
        type:
          $ref: '#/components/schemas/Type3'
          description: >-
            This message is triggered when the tool call fails.


            This message is never triggered for async tool calls.


            If this message is not provided, the model will be requested to
            respond.


            If this message is provided, only this message will be spoken and
            the model will not be requested to come up with a response. It's an
            exclusive OR.
        endCallAfterSpokenEnabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Endcallafterspokenenabled
          description: >-
            This is an optional boolean that if true, the call will end after
            the message is spoken. Default is false.


            @default false
          examples:
            - false
        content:
          anyOf:
            - type: string
              maxLength: 1000
            - type: 'null'
          title: Content
          description: >-
            This is the content that the assistant says when this message is
            triggered.
        conditions:
          anyOf:
            - items:
                $ref: '#/components/schemas/Condition'
              type: array
            - type: 'null'
          title: Conditions
          description: >-
            This is an optional array of conditions that the tool call arguments
            must meet in order for this message to be triggered.
      type: object
      required:
        - type
      title: ToolMessageFailed
    ToolMessageDelayed-Output:
      properties:
        contents:
          anyOf:
            - items:
                $ref: '#/components/schemas/TextContent'
              type: array
            - type: 'null'
          title: Contents
          description: >-
            This is an alternative to the `content` property. It allows to
            specify variants of the same content, one per language.


            Usage:

            - If your assistants are multilingual, you can provide content for
            each language.

            - If you don't provide content for a language, the first item in the
            array will be automatically translated to the active language at
            that moment.


            This will override the `content` property.
        type:
          $ref: '#/components/schemas/Type4'
          description: >-
            This message is triggered when the tool call is delayed.


            There are the two things that can trigger this message:

            1. The user talks with the assistant while your server is processing
            the request. Default is "Sorry, a few more seconds."

            2. The server doesn't respond within `timingMilliseconds`.


            This message is never triggered for async tool calls.
        timingMilliseconds:
          anyOf:
            - type: number
              maximum: 120000
              minimum: 100
            - type: 'null'
          title: Timingmilliseconds
          description: >-
            The number of milliseconds to wait for the server response before
            saying this message.
          examples:
            - 1000
        content:
          anyOf:
            - type: string
              maxLength: 1000
            - type: 'null'
          title: Content
          description: >-
            This is the content that the assistant says when this message is
            triggered.
        conditions:
          anyOf:
            - items:
                $ref: '#/components/schemas/Condition'
              type: array
            - type: 'null'
          title: Conditions
          description: >-
            This is an optional array of conditions that the tool call arguments
            must meet in order for this message to be triggered.
      type: object
      required:
        - type
      title: ToolMessageDelayed
    Type7:
      type: string
      enum:
        - dtmf
      title: Type7
    OpenAIFunction-Output:
      properties:
        strict:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Strict
          description: >-
            This is a boolean that controls whether to enable strict schema
            adherence when generating the function call. If set to true, the
            model will follow the exact schema defined in the parameters field.
            Only a subset of JSON Schema is supported when strict is true. Learn
            more about Structured Outputs in the [OpenAI
            guide](https://openai.com/index/introducing-structured-outputs-in-the-api/).


            @default false
          default: false
        name:
          type: string
          maxLength: 64
          title: Name
          description: >-
            This is the the name of the function to be called.


            Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a
            maximum length of 64.
        description:
          anyOf:
            - type: string
              maxLength: 1000
            - type: 'null'
          title: Description
          description: >-
            This is the description of what the function does, used by the AI to
            choose when and how to call the function.
        parameters:
          anyOf:
            - $ref: '#/components/schemas/OpenAIFunctionParameters-Output'
            - type: 'null'
          description: >-
            These are the parameters the functions accepts, described as a JSON
            Schema object.


            See the [OpenAI
            guide](https://platform.openai.com/docs/guides/function-calling) for
            examples, and the [JSON Schema
            reference](https://json-schema.org/understanding-json-schema) for
            documentation about the format.


            Omitting parameters defines a function with an empty parameter list.
      type: object
      required:
        - name
      title: OpenAIFunction
    Server:
      properties:
        timeoutSeconds:
          anyOf:
            - type: number
              maximum: 120
              minimum: 1
            - type: 'null'
          title: Timeoutseconds
          description: >-
            This is the timeout in seconds for the request to your server.
            Defaults to 20 seconds.


            @default 20
          examples:
            - 20
        url:
          type: string
          maxLength: 2083
          minLength: 1
          format: uri
          title: Url
          description: >-
            API endpoint to send requests to. Must match specific domains and
            structure.
        secret:
          anyOf:
            - type: string
            - type: 'null'
          title: Secret
          description: >-
            This is the secret you can set that voicebot will send with every
            request to your server. Will be sent as a header called
            x-voicebot-secret.


            Same precedence logic as server.
        headers:
          anyOf:
            - type: object
            - type: 'null'
          title: Headers
          description: >-
            These are the custom headers to include in the request sent to your
            server.


            Each key-value pair represents a header name and its value.
      type: object
      required:
        - url
      title: Server
    Type8:
      type: string
      enum:
        - endCall
      title: Type8
    Type10:
      type: string
      enum:
        - function
      title: Type10
    Type18:
      type: string
      enum:
        - transferCall
      title: Type18
    TransferDestinationStep-Output:
      properties:
        message:
          anyOf:
            - type: string
            - $ref: '#/components/schemas/CustomMessage-Output'
            - type: 'null'
          title: Message
          description: >-
            This is spoken to the customer before connecting them to the
            destination.


            Usage:

            - If this is not provided and transfer tool messages is not
            provided, default is "Transferring the call now".

            - If set to "", nothing is spoken. This is useful when you want to
            silently transfer. This is especially useful when transferring
            between assistants in a squad. In this scenario, you likely also
            want to set
            `assistant.firstMessageMode=assistant-speaks-first-with-model-generated-message`
            for the destination assistant.


            This accepts a string or a ToolMessageStart class. Latter is useful
            if you want to specify multiple messages for different languages
            through the `contents` field.
        type:
          $ref: '#/components/schemas/Type15'
        stepName:
          type: string
          title: Stepname
          description: This is the step to transfer to.
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: >-
            This is the description of the destination, used by the AI to choose
            when and how to transfer the call.
      type: object
      required:
        - type
        - stepName
      title: TransferDestinationStep
    app__schemas__tools__TransferDestinationNumber-Output:
      properties:
        message:
          anyOf:
            - type: string
            - $ref: '#/components/schemas/CustomMessage-Output'
            - type: 'null'
          title: Message
          description: >-
            This is spoken to the customer before connecting them to the
            destination.


            Usage:

            - If this is not provided and transfer tool messages is not
            provided, default is "Transferring the call now".

            - If set to "", nothing is spoken. This is useful when you want to
            silently transfer. This is especially useful when transferring
            between assistants in a squad. In this scenario, you likely also
            want to set
            `assistant.firstMessageMode=assistant-speaks-first-with-model-generated-message`
            for the destination assistant.


            This accepts a string or a ToolMessageStart class. Latter is useful
            if you want to specify multiple messages for different languages
            through the `contents` field.
        type:
          $ref: '#/components/schemas/Type16'
        numberE164CheckEnabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Numbere164Checkenabled
          description: >-
            This is the flag to toggle the E164 check for the `number` field.
            This is an advanced property which should be used if you know your
            use case requires it.


            Use cases:

            - `false`: To allow non-E164 numbers like `+001234567890`, `1234`,
            or `abc`. This is useful for dialing out to non-E164 numbers on your
            SIP trunks.

            - `true` (default): To allow only E164 numbers like `+14155551234`.
            This is standard for PSTN calls.


            If `false`, the `number` is still required to only contain
            alphanumeric characters (regex: `/^\+?[a-zA-Z0-9]+$/`).


            @default true (E164 check is enabled)
          default: true
        number:
          type: string
          maxLength: 40
          minLength: 3
          title: Number
          description: This is the phone number to transfer the call to.
        extension:
          anyOf:
            - type: string
              maxLength: 10
              minLength: 1
            - type: 'null'
          title: Extension
          description: >-
            This is the extension to dial after transferring the call to the
            `number`.
        callerId:
          anyOf:
            - type: string
              maxLength: 40
            - type: 'null'
          title: Callerid
          description: >-
            This is the caller ID to use when transferring the call to the
            `number`.


            Usage:

            - If not provided, the caller ID will be the number the call is
            coming from. Example, +14151111111 calls in to and the assistant
            transfers out to +16470000000. +16470000000 will see +14151111111 as
            the caller.

            - To change this behavior, provide a `callerId`.

            - Set to '{{customer.number}}' to always use the customer's number
            as the caller ID.

            - Set to '{{phoneNumber.number}}' to always use the phone number of
            the assistant as the caller ID.

            - Set to any E164 number to always use that number as the caller ID.
            This needs to be a number that is owned or verified by your
            Transport provider like Twilio.


            For Twilio, you can read up more here:
            https://www.twilio.com/docs/voice/twiml/dial#callerid
        transferPlan:
          anyOf:
            - $ref: '#/components/schemas/TransferPlan-Output'
            - type: 'null'
          description: >-
            This configures how transfer is executed and the experience of the
            destination party receiving the call. Defaults to `blind-transfer`.


            @default `transferPlan.mode='blind-transfer'`
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: >-
            This is the description of the destination, used by the AI to choose
            when and how to transfer the call.
      type: object
      required:
        - type
        - number
      title: TransferDestinationNumber
    app__schemas__tools__TransferDestinationSip-Output:
      properties:
        message:
          anyOf:
            - type: string
            - $ref: '#/components/schemas/CustomMessage-Output'
            - type: 'null'
          title: Message
          description: >-
            This is spoken to the customer before connecting them to the
            destination.


            Usage:

            - If this is not provided and transfer tool messages is not
            provided, default is "Transferring the call now".

            - If set to "", nothing is spoken. This is useful when you want to
            silently transfer. This is especially useful when transferring
            between assistants in a squad. In this scenario, you likely also
            want to set
            `assistant.firstMessageMode=assistant-speaks-first-with-model-generated-message`
            for the destination assistant.


            This accepts a string or a ToolMessageStart class. Latter is useful
            if you want to specify multiple messages for different languages
            through the `contents` field.
        type:
          $ref: '#/components/schemas/Type17'
        sipUri:
          type: string
          title: Sipuri
          description: This is the SIP URI to transfer the call to.
        transferPlan:
          anyOf:
            - $ref: '#/components/schemas/TransferPlan-Output'
            - type: 'null'
          description: >-
            This configures how transfer is executed and the experience of the
            destination party receiving the call. Defaults to `blind-transfer`.


            @default `transferPlan.mode='blind-transfer'`
        sipHeaders:
          anyOf:
            - type: object
            - type: 'null'
          title: Sipheaders
          description: >-
            These are custom headers to be added to SIP refer during transfer
            call.
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: >-
            This is the description of the destination, used by the AI to choose
            when and how to transfer the call.
      type: object
      required:
        - type
        - sipUri
      title: TransferDestinationSip
    FormatPlan-Output:
      properties:
        enabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enabled
          default: true
        numberToDigitsCutoff:
          anyOf:
            - type: number
              minimum: 0
            - type: 'null'
          title: Numbertodigitscutoff
          default: 2025
        replacements:
          anyOf:
            - items:
                anyOf:
                  - $ref: '#/components/schemas/ExactReplacement'
                  - $ref: '#/components/schemas/RegexReplacement-Output'
              type: array
            - type: 'null'
          title: Replacements
      type: object
      title: FormatPlan
    Type5:
      type: string
      enum:
        - string
        - number
        - integer
        - boolean
        - array
        - object
      title: Type5
    Type:
      type: string
      enum:
        - text
      title: Type
    Language4:
      type: string
      enum:
        - aa
        - ab
        - ae
        - af
        - ak
        - am
        - an
        - ar
        - as
        - av
        - ay
        - az
        - ba
        - be
        - bg
        - bh
        - bi
        - bm
        - bn
        - bo
        - br
        - bs
        - ca
        - ce
        - ch
        - co
        - cr
        - cs
        - cu
        - cv
        - cy
        - da
        - de
        - dv
        - dz
        - ee
        - el
        - en
        - eo
        - es
        - et
        - eu
        - fa
        - ff
        - fi
        - fj
        - fo
        - fr
        - fy
        - ga
        - gd
        - gl
        - gn
        - gu
        - gv
        - ha
        - he
        - hi
        - ho
        - hr
        - ht
        - hu
        - hy
        - hz
        - ia
        - id
        - ie
        - ig
        - ii
        - ik
        - io
        - is
        - it
        - iu
        - ja
        - jv
        - ka
        - kg
        - ki
        - kj
        - kk
        - kl
        - km
        - kn
        - ko
        - kr
        - ks
        - ku
        - kv
        - kw
        - ky
        - la
        - lb
        - lg
        - li
        - ln
        - lo
        - lt
        - lu
        - lv
        - mg
        - mh
        - mi
        - mk
        - ml
        - mn
        - mr
        - ms
        - mt
        - my
        - na
        - nb
        - nd
        - ne
        - ng
        - nl
        - nn
        - 'no'
        - nr
        - nv
        - ny
        - oc
        - oj
        - om
        - or
        - os
        - pa
        - pi
        - pl
        - ps
        - pt
        - qu
        - rm
        - rn
        - ro
        - ru
        - rw
        - sa
        - sc
        - sd
        - se
        - sg
        - si
        - sk
        - sl
        - sm
        - sn
        - so
        - sq
        - sr
        - ss
        - st
        - su
        - sv
        - sw
        - ta
        - te
        - tg
        - th
        - ti
        - tk
        - tl
        - tn
        - to
        - tr
        - ts
        - tt
        - tw
        - ty
        - ug
        - uk
        - ur
        - uz
        - ve
        - vi
        - vo
        - wa
        - wo
        - xh
        - yi
        - yue
        - yo
        - za
        - zh
        - zu
      title: Language4
    Type1:
      type: string
      enum:
        - request-start
      title: Type1
    Condition:
      properties:
        operator:
          $ref: '#/components/schemas/Operator'
          description: >-
            This is the operator you want to use to compare the parameter and
            value.
        param:
          type: string
          maxLength: 1000
          title: Param
          description: This is the name of the parameter that you want to check.
        value:
          type: object
          title: Value
          description: This is the value you want to compare against the parameter.
      type: object
      required:
        - operator
        - param
        - value
      title: Condition
    Type2:
      type: string
      enum:
        - request-complete
      title: Type2
    Role:
      type: string
      enum:
        - assistant
        - system
      title: Role
    Type3:
      type: string
      enum:
        - request-failed
      title: Type3
    Type4:
      type: string
      enum:
        - request-response-delayed
      title: Type4
    OpenAIFunctionParameters-Output:
      properties:
        type:
          $ref: '#/components/schemas/Type6'
          description: >-
            This must be set to 'object'. It instructs the model to return a
            JSON object containing the function call properties.
        properties:
          additionalProperties:
            $ref: '#/components/schemas/JsonSchema'
          type: object
          title: Properties
          description: >-
            This provides a description of the properties required by the
            function.

            JSON Schema can be used to specify expectations for each property.

            Refer to [this
            doc](https://ajv.js.org/json-schema.html#json-data-type) for a
            comprehensive guide on JSON Schema.
        required:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Required
          description: This specifies the properties that are required by the function.
      type: object
      required:
        - type
        - properties
      title: OpenAIFunctionParameters
    Type15:
      type: string
      enum:
        - step
      title: Type15
    Type16:
      type: string
      enum:
        - number
      title: Type16
    TransferPlan-Output:
      properties:
        mode:
          $ref: '#/components/schemas/Mode'
          description: >-
            This configures how transfer is executed and the experience of the
            destination party receiving the call.


            Usage:

            - `blind-transfer`: The assistant forwards the call to the
            destination without any message or summary.

            - `blind-transfer-add-summary-to-sip-header`: The assistant forwards
            the call to the destination and adds a SIP header X-Transfer-Summary
            to the call to include the summary.

            - `warm-transfer-say-message`: The assistant dials the destination,
            delivers the `message` to the destination party, connects the
            customer, and leaves the call.

            - `warm-transfer-say-summary`: The assistant dials the destination,
            provides a summary of the call to the destination party, connects
            the customer, and leaves the call.

            -
            `warm-transfer-wait-for-operator-to-speak-first-and-then-say-message`:
            The assistant dials the destination, waits for the operator to
            speak, delivers the `message` to the destination party, and then
            connects the customer.

            -
            `warm-transfer-wait-for-operator-to-speak-first-and-then-say-summary`:
            The assistant dials the destination, waits for the operator to
            speak, provides a summary of the call to the destination party, and
            then connects the customer.


            @default 'blind-transfer'
        message:
          anyOf:
            - type: string
            - $ref: '#/components/schemas/CustomMessage-Output'
            - type: 'null'
          title: Message
          description: >-
            This is the message the assistant will deliver to the destination
            party before connecting the customer.


            Usage:

            - Used only when `mode` is `warm-transfer-say-message` or
            `warm-transfer-wait-for-operator-to-speak-first-and-then-say-message`.
        summaryPlan:
          anyOf:
            - $ref: '#/components/schemas/SummaryPlan'
            - type: 'null'
          description: >-
            This is the plan for generating a summary of the call to present to
            the destination party.


            Usage:

            - Used only when `mode` is `warm-transfer-say-summary` or
            `warm-transfer-wait-for-operator-to-speak-first-and-then-say-summary`.
      type: object
      required:
        - mode
      title: TransferPlan
    Type17:
      type: string
      enum:
        - sip
      title: Type17
    ExactReplacement:
      properties:
        type:
          type: string
          title: Type
          default: exact
        key:
          type: string
          title: Key
        value:
          type: string
          maxLength: 1000
          title: Value
      type: object
      required:
        - key
        - value
      title: ExactReplacement
    RegexReplacement-Output:
      properties:
        type:
          type: string
          title: Type
          default: regex
        regex:
          type: string
          title: Regex
        value:
          type: string
          maxLength: 1000
          title: Value
        options:
          anyOf:
            - items:
                $ref: '#/components/schemas/RegexOption'
              type: array
            - type: 'null'
          title: Options
      type: object
      required:
        - regex
        - value
      title: RegexReplacement
    Operator:
      type: string
      enum:
        - eq
        - neq
        - gt
        - gte
        - lt
        - lte
      title: Operator
    Type6:
      type: string
      enum:
        - object
      title: Type6
    Mode:
      type: string
      enum:
        - blind-transfer
        - blind-transfer-add-summary-to-sip-header
        - warm-transfer-say-message
        - warm-transfer-say-summary
        - warm-transfer-wait-for-operator-to-speak-first-and-then-say-message
        - warm-transfer-wait-for-operator-to-speak-first-and-then-say-summary
      title: Mode
    SummaryPlan:
      properties:
        messages:
          anyOf:
            - items:
                type: object
              type: array
            - type: 'null'
          title: Messages
          description: >-
            These are the messages used to generate the summary.


            @default: ```

            [
              {
                "role": "system",
                "content": "You are an expert note-taker. You will be given a transcript of a call. Summarize the call in 2-3 sentences. DO NOT return anything except the summary."
              },
              {
                "role": "user",
                "content": "Here is the transcript:\n\n{{transcript}}\n\n"
              }
            ]```


            You can customize by providing any messages you want.


            Here are the template variables available:

            - {{transcript}}: The transcript of the call from
            `call.artifact.transcript`- {{systemPrompt}}: The system prompt of
            the call from `assistant.model.messages[type=system].content`
        enabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enabled
          description: >-
            This determines whether a summary is generated and stored in
            `call.analysis.summary`. Defaults to true.


            Usage:

            - If you want to disable the summary, set this to false.


            @default true
        timeoutSeconds:
          anyOf:
            - type: number
              maximum: 60
              minimum: 1
            - type: 'null'
          title: Timeoutseconds
          description: >-
            This is how long the request is tried before giving up. When request
            times out, `call.analysis.summary` will be empty.


            Usage:

            - To guarantee the summary is generated, set this value high. Note,
            this will delay the end of call report in cases where model is slow
            to respond.


            @default 5 seconds
      type: object
      title: SummaryPlan
    RegexOption:
      properties:
        type:
          $ref: '#/components/schemas/RegexOptionType'
        enabled:
          type: boolean
          title: Enabled
          default: false
      type: object
      required:
        - type
      title: RegexOption
    RegexOptionType:
      type: string
      enum:
        - ignore-case
        - whole-word
        - multi-line
      title: RegexOptionType
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key

````