Syllable Channels API

Operations related to channel configuration. A channel is an organization-level point of communication, like a phone number or a web chat. A channel can be associated with an agent by creating a channel target linking them.

OpenAPI Specification

syllable-channels-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: SyllableSDK Channels API
  description: "\n# Syllable Platform SDK\n\nSyllable SDK gives you the power of awesome AI agentry. \U0001F680\n\n## Overview\n\nThe Syllable SDK provides a comprehensive set of tools and APIs to integrate powerful AI\ncapabilities into your communication applications. Whether you're building phone agents, chatbots,\nvirtual assistants, or any other AI-driven solutions, Syllable SDK has got you covered.\n\n## Features\n\n- **Agent Configuration**: Create and manage agents that can interact with users across various \nchannels.\n- **Channel Management**: Configure channels like SMS, web chat, and more to connect agents with \nusers.\n- **Custom Messages**: Set up custom messages that agents can deliver as greetings or responses.\n- **Conversations**: Track and manage conversations between users and agents, including session \nmanagement.\n- **Tools and Workflows**: Leverage tools and workflows to enhance agent capabilities, such as data \nprocessing and API calls.\n- **Data Sources**: Integrate data sources to provide agents with additional context and \ninformation.\n- **Insights and Analytics**: Analyze conversations and sessions to gain insights into user \ninteractions.\n- **Permissions and Security**: Manage permissions to control access to various features and \nfunctionalities.\n- **Language Support**: Define language groups to enable multilingual support for agents.\n- **Outbound Campaigns**: Create and manage outbound communication campaigns to reach users \neffectively.\n- **Session Labels**: Label sessions with evaluations of quality and descriptions of issues \nencountered.\n- **Incident Management**: Track and manage incidents related to agent interactions.\n"
  version: 0.0.3
servers:
- url: https://api.syllable.cloud
  description: API server
tags:
- name: channels
  description: Operations related to channel configuration.           A channel is an organization-level point of communication, like a phone number or a web           chat. A channel can be associated with an agent by creating a channel target linking           them.
paths:
  /api/v1/channels/:
    get:
      tags:
      - channels
      summary: Get Channels
      operationId: channels_list
      security:
      - APIKeyHeader: []
      parameters:
      - name: page
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
            minimum: 0
          - type: 'null'
          description: The page number from which to start (0-based)
          examples:
          - 0
          default: 0
          title: Page
        description: The page number from which to start (0-based)
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          description: The maximum number of items to return
          examples:
          - 25
          default: 25
          title: Limit
        description: The maximum number of items to return
      - name: search_fields
        in: query
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ChannelProperties'
          description: String names of fields to search. Correspond by index to search field values
          examples:
          - name
          default: []
          title: Search Fields
        description: String names of fields to search. Correspond by index to search field values
      - name: search_field_values
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
          description: Values of fields to search. Correspond by index to search fields. Unless field name contains "list", an individual search field value cannot be a list
          examples:
          - Some Object Name
          default: []
          title: Search Field Values
        description: Values of fields to search. Correspond by index to search fields. Unless field name contains "list", an individual search field value cannot be a list
      - name: order_by
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/ChannelProperties'
          - type: 'null'
          description: The field whose value should be used to order the results
          examples:
          - name
          title: Order By
        description: The field whose value should be used to order the results
      - name: order_by_direction
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/OrderByDirection'
          - type: 'null'
          description: The direction in which to order the results
          title: Order By Direction
        description: The direction in which to order the results
      - name: fields
        in: query
        required: false
        schema:
          anyOf:
          - type: array
            items:
              $ref: '#/components/schemas/ChannelProperties'
          - type: 'null'
          description: The fields to include in the response
          default: []
          title: Fields
        description: The fields to include in the response
      - name: start_datetime
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: The start datetime for filtering results
          examples:
          - '2023-01-01T00:00:00Z'
          title: Start Datetime
        description: The start datetime for filtering results
      - name: end_datetime
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: The end datetime for filtering results
          examples:
          - '2024-01-01T00:00:00Z'
          title: End Datetime
        description: The end datetime for filtering results
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResponse_Channel_'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples:
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom syllable_sdk import SyllableSDK, models\n\n\nwith SyllableSDK(\n    api_key_header=os.getenv(\"SYLLABLESDK_API_KEY_HEADER\", \"\"),\n) as ss_client:\n\n    res = ss_client.channels.list(page=0, limit=25, search_fields=[\n        models.ChannelProperties.NAME,\n    ], search_field_values=[\n        \"Some Object Name\",\n    ], start_datetime=\"2023-01-01T00:00:00Z\", end_datetime=\"2024-01-01T00:00:00Z\")\n\n    # Handle response\n    print(res)"
      - lang: typescript
        label: Typescript (SDK)
        source: "import { SyllableSDK } from \"syllable-sdk\";\n\nconst syllableSDK = new SyllableSDK({\n  apiKeyHeader: process.env[\"SYLLABLESDK_API_KEY_HEADER\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await syllableSDK.channels.list({\n    page: 0,\n    searchFields: [\n      \"name\",\n    ],\n    searchFieldValues: [\n      \"Some Object Name\",\n    ],\n    startDatetime: \"2023-01-01T00:00:00Z\",\n    endDatetime: \"2024-01-01T00:00:00Z\",\n  });\n\n  console.log(result);\n}\n\nrun();"
    post:
      tags:
      - channels
      summary: Create Channel
      operationId: channels_create
      security:
      - APIKeyHeader: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationChannelCreateRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Channel'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples:
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom syllable_sdk import SyllableSDK, models\n\n\nwith SyllableSDK(\n    api_key_header=os.getenv(\"SYLLABLESDK_API_KEY_HEADER\", \"\"),\n) as ss_client:\n\n    res = ss_client.channels.create(request={\n        \"name\": \"twilio\",\n        \"channel_service\": models.ChannelServices.SIP,\n        \"supported_modes\": \"chat,voice\",\n        \"is_system_channel\": False,\n        \"config\": {\n            \"account_sid\": \"AC123...\",\n            \"auth_token\": \"sometoken\",\n            \"provider_credentials\": {\n                \"api_key\": \"atk123\",\n                \"username\": \"test_username\",\n            },\n            \"telephony\": {\n                \"pre_input_timeout\": 1.2,\n                \"overall_input_timeout\": 20,\n                \"interruptibility\": \"dtmf_only\",\n                \"passive_speech_input_enabled\": True,\n                \"passive_input_start\": 0.5,\n            },\n            \"email\": {\n                \"sending_domain\": \"mail.example.com\",\n            },\n        },\n    })\n\n    # Handle response\n    print(res)"
      - lang: typescript
        label: Typescript (SDK)
        source: "import { SyllableSDK } from \"syllable-sdk\";\n\nconst syllableSDK = new SyllableSDK({\n  apiKeyHeader: process.env[\"SYLLABLESDK_API_KEY_HEADER\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await syllableSDK.channels.create({\n    name: \"twilio\",\n    channelService: \"sip\",\n    supportedModes: \"chat,voice\",\n    isSystemChannel: false,\n    config: {\n      accountSid: \"AC123...\",\n      authToken: \"sometoken\",\n      providerCredentials: {\n        \"api_key\": \"atk123\",\n        \"username\": \"test_username\",\n      },\n      telephony: {\n        preInputTimeout: 1.2,\n        overallInputTimeout: 20,\n        interruptibility: \"dtmf_only\",\n        passiveSpeechInputEnabled: true,\n        passiveInputStart: 0.5,\n      },\n      email: {\n        sendingDomain: \"mail.example.com\",\n      },\n    },\n  });\n\n  console.log(result);\n}\n\nrun();"
    put:
      tags:
      - channels
      summary: Update Channel
      operationId: channels_update
      security:
      - APIKeyHeader: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationChannelUpdateRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Channel'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples:
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom syllable_sdk import SyllableSDK, models\n\n\nwith SyllableSDK(\n    api_key_header=os.getenv(\"SYLLABLESDK_API_KEY_HEADER\", \"\"),\n) as ss_client:\n\n    res = ss_client.channels.update(request={\n        \"name\": \"twilio\",\n        \"channel_service\": models.ChannelServices.SIP,\n        \"supported_modes\": \"chat,voice\",\n        \"is_system_channel\": False,\n        \"config\": {\n            \"account_sid\": \"AC123...\",\n            \"auth_token\": \"sometoken\",\n            \"provider_credentials\": {\n                \"api_key\": \"atk123\",\n                \"username\": \"test_username\",\n            },\n            \"telephony\": {\n                \"pre_input_timeout\": 1.2,\n                \"overall_input_timeout\": 20,\n                \"interruptibility\": \"dtmf_only\",\n                \"passive_speech_input_enabled\": True,\n                \"passive_input_start\": 0.5,\n            },\n            \"email\": {\n                \"sending_domain\": \"mail.example.com\",\n            },\n        },\n        \"id\": 1,\n    })\n\n    # Handle response\n    print(res)"
      - lang: typescript
        label: Typescript (SDK)
        source: "import { SyllableSDK } from \"syllable-sdk\";\n\nconst syllableSDK = new SyllableSDK({\n  apiKeyHeader: process.env[\"SYLLABLESDK_API_KEY_HEADER\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await syllableSDK.channels.update({\n    name: \"twilio\",\n    channelService: \"sip\",\n    supportedModes: \"chat,voice\",\n    isSystemChannel: false,\n    config: {\n      accountSid: \"AC123...\",\n      authToken: \"sometoken\",\n      providerCredentials: {\n        \"api_key\": \"atk123\",\n        \"username\": \"test_username\",\n      },\n      telephony: {\n        preInputTimeout: 1.2,\n        overallInputTimeout: 20,\n        interruptibility: \"dtmf_only\",\n        passiveSpeechInputEnabled: true,\n        passiveInputStart: 0.5,\n      },\n      email: {\n        sendingDomain: \"mail.example.com\",\n      },\n    },\n    id: 1,\n  });\n\n  console.log(result);\n}\n\nrun();"
  /api/v1/channels/{channel_id}:
    delete:
      tags:
      - channels
      summary: Delete Channel Target
      description: Hard-delete a channel target by ID
      operationId: channel_targets_delete
      security:
      - APIKeyHeader: []
      parameters:
      - name: channel_id
        in: path
        required: true
        schema:
          type: string
          title: Channel Id
      - name: target_id
        in: query
        required: true
        schema:
          type: string
          title: Target Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples:
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom syllable_sdk import SyllableSDK\n\n\nwith SyllableSDK(\n    api_key_header=os.getenv(\"SYLLABLESDK_API_KEY_HEADER\", \"\"),\n) as ss_client:\n\n    res = ss_client.channels.delete(channel_id=\"<id>\", target_id=\"<id>\")\n\n    # Handle response\n    print(res)"
      - lang: typescript
        label: Typescript (SDK)
        source: "import { SyllableSDK } from \"syllable-sdk\";\n\nconst syllableSDK = new SyllableSDK({\n  apiKeyHeader: process.env[\"SYLLABLESDK_API_KEY_HEADER\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await syllableSDK.channels.delete({\n    channelId: \"<id>\",\n    targetId: \"<id>\",\n  });\n\n  console.log(result);\n}\n\nrun();"
components:
  schemas:
    OrganizationChannelConfig:
      properties:
        account_sid:
          anyOf:
          - type: string
          - type: 'null'
          title: Account Sid
          description: SID of the Twilio account
          examples:
          - AC123...
        auth_token:
          anyOf:
          - type: string
          - type: 'null'
          title: Auth Token
          description: The Twilio auth token
          examples:
          - sometoken
        provider_credentials:
          anyOf:
          - additionalProperties:
              type: string
            type: object
          - type: 'null'
          title: Provider Credentials
          description: Provider-specific credentials. Initially to be used for AfricasTalking creds.In a future this would be used for Twilio creds too (removing the account_sid and auth_token fields).
          examples:
          - api_key: atk123
            username: test_username
        telephony:
          anyOf:
          - $ref: '#/components/schemas/TelephonyConfigurations'
          - type: 'null'
          description: Telephony configurations to be applied to the targets under the channel
          examples:
          - interruptibility: dtmf_only
            overall_input_timeout: 20.0
            passive_input_start: 0.5
            passive_speech_input_enabled: true
            pre_input_timeout: 1.2
        email:
          anyOf:
          - $ref: '#/components/schemas/EmailConfigurations'
          - type: 'null'
          description: Email configurations (required for email channels)
          examples:
          - sending_domain: mail.example.com
      type: object
      title: OrganizationChannelConfig
      description: Channel config information for creates / updates through the organizations API
    TelephonyConfigurations:
      properties:
        pre_input_timeout:
          anyOf:
          - type: number
            maximum: 10
            minimum: 0
          - type: 'null'
          title: Pre Input Timeout
          description: Pre input silence threshold
        post_speech_input_timeout:
          anyOf:
          - type: number
            maximum: 10
            minimum: 0
          - type: 'null'
          title: Post Speech Input Timeout
          description: Post speech silence timeout to determine input as ended.
        post_dtmf_input_timeout:
          anyOf:
          - type: number
            maximum: 10
            minimum: 0
          - type: 'null'
          title: Post Dtmf Input Timeout
          description: Post dtmf silence timeout to determine input as ended.
        overall_input_timeout:
          anyOf:
          - type: number
            maximum: 300
            minimum: 0
          - type: 'null'
          title: Overall Input Timeout
          description: Total input timeout
        output_padding:
          anyOf:
          - type: number
            maximum: 5
            minimum: -5
          - type: 'null'
          title: Output Padding
          description: Number of seconds to start listening to user input before assistant speech ends
        interruptibility:
          anyOf:
          - type: string
          - type: 'null'
          title: Interruptibility
          description: 'Interruptibility setting for user input.Valid values: none, dtmf_only, speech_only, all'
        passive_speech_input_enabled:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Passive Speech Input Enabled
          description: Whether passive speech input is enabled (input while assistant is speaking)
        passive_input_start:
          anyOf:
          - type: number
            maximum: 5
            minimum: 0
          - type: 'null'
          title: Passive Input Start
          description: Waiting time to start passive input (in seconds) after start of assistant speech
        async_enabled:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Async Enabled
          description: Whether asynchronous mode is enabled for the conversation
        transfer_leg_voicemail_detection_enabled:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Transfer Leg Voicemail Detection Enabled
          description: Whether transfer leg voicemail detection is enabled
        sip_configuration:
          anyOf:
          - $ref: '#/components/schemas/SipConfiguration'
          - type: 'null'
          description: SIP routing configuration applied when transferring calls on this channel
      type: object
      title: TelephonyConfigurations
    SipConfiguration:
      properties:
        sip_transfer_mode:
          anyOf:
          - $ref: '#/components/schemas/SipTransferMode'
          - type: 'null'
          description: How to perform the SIP transfer, INVITE or REFER.
          examples:
          - refer
        sip_endpoints:
          anyOf:
          - items:
              $ref: '#/components/schemas/SipEndpoint'
            type: array
          - type: 'null'
          title: Sip Endpoints
          description: List of SIP endpoints to attempt for the transfer.
          examples:
          - - host: 10.0.0.1
              port: '5060'
              transport: tcp
            - host: pbx.example.com
              port: '5071'
              transport: tls
        call_info_placement:
          anyOf:
          - type: string
          - type: 'null'
          title: Call Info Placement
          description: Where to place call information during a transfer. Supported values are `uri_parameters`, `to_parameters`, `from_parameters`, or `sip_header:<header-name>`.
          examples:
          - uri_parameters
          - sip_header:P-Asserted-Identity
      type: object
      title: SipConfiguration
      description: 'SIP routing configuration for transferring a call to a destination.


        This is internal telephony/routing configuration used to direct a transfer to specific

        SIP endpoints.'
    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
    SipEndpoint:
      properties:
        host:
          type: string
          title: Host
          description: SIP endpoint host (IP address or hostname).
          examples:
          - 10.0.0.1
          - pbx.example.com
        port:
          anyOf:
          - type: string
          - type: 'null'
          title: Port
          description: SIP endpoint port.
          examples:
          - '5060'
          - '5071'
        transport:
          anyOf:
          - $ref: '#/components/schemas/SipTransport'
          - type: 'null'
          description: SIP transport protocol, e.g. `tcp`, `tls` or `udp`.
          examples:
          - tcp
          - tls
          - udp
      type: object
      required:
      - host
      title: SipEndpoint
      description: A single SIP endpoint to attempt for a transfer.
    ChannelConfigView:
      properties:
        telephony:
          anyOf:
          - $ref: '#/components/schemas/TelephonyConfigurations'
          - type: 'null'
          description: Telephony configurations to be applied to targets belonging to the channel.       Only applies to voice supported channels.
          examples:
          - interruptibility: dtmf_only
            overall_input_timeout: 20.0
            passive_input_start: 0.5
            passive_speech_input_enabled: true
            pre_input_timeout: 1.2
        email:
          anyOf:
          - $ref: '#/components/schemas/EmailConfigurations'
          - type: 'null'
          description: Email configurations for email channels. Only applies to email channels.
          examples:
          - sending_domain: mail.example.com
        credentials:
          anyOf:
          - additionalProperties:
              type: string
            type: object
          - type: 'null'
          title: Credentials
          description: Exposed credentials for the channel - currently just account_sid_last_four for Twilio channels
          examples:
          - account_sid_last_four: '1234'
      type: object
      title: ChannelConfigView
    OrganizationChannelCreateRequest:
      properties:
        name:
          type: string
          title: Name
          description: The channel name
          examples:
          - twilio
        channel_service:
          $ref: '#/components/schemas/ChannelServices'
          description: The service that facilitates communication on the channel
          examples:
          - webchat
        supported_modes:
          anyOf:
          - type: string
          - type: 'null'
          title: Supported Modes
          description: The comma-delimited list of supported modes for the channel, which defines the       possible communication methods for channel targets linked to it.
          examples:
          - chat,voice
        is_system_channel:
          type: boolean
          title: Is System Channel
          description: Whether the channel is a built-in system channel (i.e., is not customizable)
          default: true
          examples:
          - false
        config:
          $ref: '#/components/schemas/OrganizationChannelConfig'
          description: The configuration of the channel
          examples:
          - account_sid: AC123
            auth_token: sometoken
            telephony:
              interruptibility: dtmf_only
              passive_input_start: 0.5
              passive_speech_input_enabled: true
              pre_input_timeout: 3.0
          - provider_credentials:
              api_key: atk123
              username: test_username
            telephony:
              interruptibility: dtmf_only
              passive_input_start: 0.5
              passive_speech_input_enabled: true
              pre_input_timeout: 3.0
      type: object
      required:
      - name
      - channel_service
      - config
      title: OrganizationChannelCreateRequest
      description: Request model to create a channel through the organizations API
    OrderByDirection:
      type: string
      enum:
      - asc
      - desc
      title: OrderByDirection
      description: The direction in which to order list results, either ascending or descending.
    ChannelProperties:
      type: string
      enum:
      - id
      - name
      - name_exact
      - channel_service
      - supported_modes
      - config
      title: ChannelProperties
      description: Names of channel fields supported for filtering/sorting on list endpoint.
    ListResponse_Channel_:
      properties:
        items:
          items:
            $ref: '#/components/schemas/Channel'
          type: array
          title: Items
          description: List of items returned from the query
          examples: []
        page:
          type: integer
          title: Page
          description: The page number of the results (0-based)
          examples:
          - 0
        page_size:
          type: integer
          title: Page Size
          description: The number of items returned per page
          examples:
          - 25
        total_pages:
          anyOf:
          - type: integer
          - type: 'null'
          title: Total Pages
          description: The total number of pages of results given the indicated page size
          examples:
          - 4
        total_count:
          anyOf:
          - type: integer
          - type: 'null'
          title: Total Count
          description: The total number of items returned from the query
          examples:
          - 100
      type: object
      required:
      - items
      - page
      - page_size
      title: ListResponse[Channel]
    OrganizationChannelUpdateRequest:
      properties:
        name:
          type: string
          title: Name
          description: The channel name
          examples:
          - twilio
        channel_service:
          $ref: '#/components/schemas/ChannelServices'
          description: The service that facilitates communication on the channel
          examples:
          - webchat
        supported_modes:
          anyOf:
          - type: string
          - type: 'null'
          title: Supported Modes
          description: The comma-delimited list of supported modes for the channel, which defines the       possible communication methods for channel targets linked to it.
          examples:
          - chat,voice
        is_system_channel:
          type: boolean
          title: Is System Channel
          description: Whether the channel is a built-in system channel (i.e., is not customizable)
          default: true
          examples:
          - false
        config:
          $ref: '#/components/schemas/OrganizationChannelConfig'
          description: The configuration of the channel
          examples:
          - account_sid: AC123
            auth_token: sometoken
            telephony:
              interruptibility: dtmf_only
              passive_input_start: 0.5
              passive_speech_input_enabled: true
              pre_input_timeout: 3.0
          - provider_credentials:
              api_key: atk123
              username: test_username
            telephony:
              interruptibility: dtmf_only
              passive_input_start: 0.5
              passive_speech_input_enabled: true
              pre_input_timeout: 3.0
        id:
          type: integer
          title: Id
          description: The internal ID of the channel
          examples:
          - 1
      type: object
      required:
      - name
      - channel_service
      - config
      - id
      title: OrganizationChannelUpdateRequest
      description: Request model to update a channel through the organizations API
    Channel:
      properties:
        name:
          type: string
          title: Name
          description: The channel name
          examples:
          - syllable-webchat
        channel_service:
          $ref: '#/components/schemas/ChannelServices'
          description: The service that facilitates communication on the channel
          examples:
          - webchat
        supported_modes:
          anyOf:
          - type: string
          - type: 'null'
          title: Supported Modes
          description: The comma-delimited list of supported modes for the channel, which defines the       possible communication methods for channel targets linked to it.
          examples:
          - chat,voice
        is_system_channel:
          type: boolean
          title: Is System Channel
          description: Whether the channel is a built-in system channel (i.e., is not customizable)
          default: true
          examples:
          - false
        id:
          type: integer
          title: Id
          description: The channel ID
        config:
          anyOf:
          - $ref: '#/components/schemas/ChannelConfigView'
          - type: 'null'
          description: Configuration for the channel
          examples:
          - telephony:
              interruptibility: dtmf_only
              overall_input_timeout: 20.0
              passive_input_start: 0.5
              passive_speech_input_enabled: true
              pre_input_timeout: 1.2
      type: object
      required:
      - name
      - channel_service
      - id
      title: Channel
    SipTransport:
      type: string
      enum:
      - tls
      - tcp
      - udp
      title: SipTransport
      description: The transport protocol to use for the SIP endpoint.
    SipTransferMode:
      type: string
      enum:
      - refer
      - invite
      title: SipTransferMode
      description: How a call should be transferred to a SIP endpoint.
    ChannelServices:
      type: string
      enum:
      - sip
      - twilio
      - email
      - webchat
      - africastalking
      - whatsapp
      title: ChannelServices
      description: The communication service for a channel.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    EmailConfigurations:
      properties:
        sending_domain:
          type: string
          title: Sending Domain
          description: The domain to use for sending emails. Must be authenticated in SendGrid.
          examples:
          - mail.example.com
      type: object
      required:
      - sending_domain
      title: EmailConfigurations
      description: Email channel configurations.
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: Syllable-API-Key
x-speakeasy-name-override:
- operationId: .*_list$
  methodNameOverride: list
- operationId: .*_create$
  methodNameOverride: create
- operationId: .*_update$
  methodNameOverride: update
- operationId: .*_upload$
  methodNameOverride: upload
- operationId: .*_delete$
  methodNameOverride: delete
- operationId: .*_get_by_id$
  methodNameOverride: get_by_id
- operationId: .*_get_by_name$
  methodNameOverride: get_by_name
- operationId: .*_add$
  methodNameOverride: add
- operationId: .*_remove$
  methodNameOverride: remove
- operationId: .*_results$
  methodNameOverride: results
- operationId: .*_queue_work$
  methodNameOverride: queue_work
- operationId: .*_activate$
  methodNameOverride: activate
- operationId: .*_inactivate$
  metho

# --- truncated at 32 KB (32 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/syllable/refs/heads/main/openapi/syllable-channels-api-openapi.yml