Syllable Outbound.campaigns API

Operations related to outbound message campaigns

OpenAPI Specification

syllable-outbound-campaigns-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: SyllableSDK Outbound.campaigns 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: outbound.campaigns
  description: Operations related to outbound message campaigns
paths:
  /api/v1/outbound/campaigns:
    get:
      tags:
      - outbound.campaigns
      summary: List Outbound Communication Campaigns
      operationId: outbound_campaign_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/CampaignProperties'
          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/CampaignProperties'
          - 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/CampaignProperties'
          - 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:
                anyOf:
                - $ref: '#/components/schemas/ListResponse_OutboundCampaign_'
                - type: 'null'
                title: Response Outbound Campaign List
        '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.outbound.campaigns.list(page=0, limit=25, search_fields=[\n        models.CampaignProperties.ID,\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.outbound.campaigns.list({\n    page: 0,\n    searchFields: [\n      \"id\",\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:
      - outbound.campaigns
      summary: Create Outbound Communication Campaign
      operationId: outbound_campaign_create
      security:
      - APIKeyHeader: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OutboundCampaignInput'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/OutboundCampaign'
                - type: 'null'
                title: Response Outbound Campaign Create
        '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.outbound.campaigns.create(request=models.OutboundCampaignInput(\n        campaign_name=\"Outbound Campaign 1\",\n        description=\"This is a test campaign\",\n        mode=\"voice\",\n        sms_session_ttl=720,\n        labels=[\n            \"test\",\n            \"demo\",\n        ],\n        campaign_variables={\n            \"key\": \"value\",\n            \"key2\": \"value2\",\n        },\n        daily_start_time=\"09:00:00\",\n        daily_end_time=\"17:00:00\",\n        source=\"+19032900844\",\n        caller_id=\"19995551234\",\n        hourly_rate=25,\n        max_daily_calls=2500,\n        retry_count=1,\n        retry_interval=\"30m\",\n        active_days=[\n            models.DaysOfWeek.MON,\n            models.DaysOfWeek.TUE,\n            models.DaysOfWeek.WED,\n            models.DaysOfWeek.THU,\n            models.DaysOfWeek.FRI,\n        ],\n        voicemail_detection=models.VoicemailDetectionConfig(\n            voicemail_detection_overall_timeout=30,\n            voicemail_detection_pre_speech_timeout=3.5,\n            voicemail_detection_post_speech_timeout=1.75,\n        ),\n        allowed_line_types=[\n            models.LineTypeBucket.MOBILE,\n            models.LineTypeBucket.VOIP,\n        ],\n        target_filters=models.TargetFilters(\n            match=models.Match.ANY,\n            rules=[\n                models.TargetFilterRule(\n                    field=\"line_type\",\n                    op=models.FilterOp.IN,\n                    values=[\n                        \"landline\",\n                        \"fixedVoip\",\n                        \"nonFixedVoip\",\n                    ],\n                ),\n                models.TargetFilterRule(\n                    field=\"carrier_name\",\n                    op=models.FilterOp.IN,\n                    values=[\n                        \"Onvoy, LLC - Sinch\",\n                    ],\n                ),\n            ],\n        ),\n        webhooks=[\n            models.OutboundCampaignWebhookInput(\n                trigger_statuses=[\n                    models.ChannelManagerStatus.COMPLETED,\n                ],\n                url=\"https://example.com/hooks/syllable\",\n                request_method=\"POST\",\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.outbound.campaigns.create({\n    campaignName: \"Outbound Campaign 1\",\n    description: \"This is a test campaign\",\n    mode: \"voice\",\n    smsSessionTtl: 720,\n    labels: [\n      \"test\",\n      \"demo\",\n    ],\n    campaignVariables: {\n      \"key\": \"value\",\n      \"key2\": \"value2\",\n    },\n    dailyStartTime: \"09:00:00\",\n    dailyEndTime: \"17:00:00\",\n    source: \"+19032900844\",\n    callerId: \"19995551234\",\n    hourlyRate: 25,\n    maxDailyCalls: 2500,\n    retryCount: 1,\n    retryInterval: \"30m\",\n    activeDays: [\n      \"mon\",\n      \"tue\",\n      \"wed\",\n      \"thu\",\n      \"fri\",\n    ],\n    voicemailDetection: {\n      voicemailDetectionOverallTimeout: 30,\n      voicemailDetectionPreSpeechTimeout: 3.5,\n      voicemailDetectionPostSpeechTimeout: 1.75,\n    },\n    allowedLineTypes: [\n      \"mobile\",\n      \"voip\",\n    ],\n    targetFilters: {\n      match: \"any\",\n      rules: [\n        {\n          field: \"line_type\",\n          op: \"in\",\n          values: [\n            \"landline\",\n            \"fixedVoip\",\n            \"nonFixedVoip\",\n          ],\n        },\n        {\n          field: \"carrier_name\",\n          op: \"in\",\n          values: [\n            \"Onvoy, LLC - Sinch\",\n          ],\n        },\n      ],\n    },\n    webhooks: [\n      {\n        triggerStatuses: [\n          \"COMPLETED\",\n        ],\n        url: \"https://example.com/hooks/syllable\",\n        requestMethod: \"POST\",\n      },\n    ],\n  });\n\n  console.log(result);\n}\n\nrun();"
  /api/v1/outbound/campaigns/{campaign_id}:
    get:
      tags:
      - outbound.campaigns
      summary: Get Outbound Communication Campaign
      operationId: outbound_campaign_get_by_id
      security:
      - APIKeyHeader: []
      parameters:
      - name: campaign_id
        in: path
        required: true
        schema:
          type: integer
          title: Campaign Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OutboundCampaign'
        '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.outbound.campaigns.get_by_id(campaign_id=11227)\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.outbound.campaigns.getById({\n    campaignId: 11227,\n  });\n\n  console.log(result);\n}\n\nrun();"
    put:
      tags:
      - outbound.campaigns
      summary: Update Outbound Communication Campaign
      operationId: outbound_campaign_update
      security:
      - APIKeyHeader: []
      parameters:
      - name: campaign_id
        in: path
        required: true
        schema:
          type: integer
          title: Campaign Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OutboundCampaignInput'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OutboundCampaign'
        '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.outbound.campaigns.update(campaign_id=187717, outbound_campaign_input=models.OutboundCampaignInput(\n        campaign_name=\"Outbound Campaign 1\",\n        description=\"This is a test campaign\",\n        mode=\"voice\",\n        sms_session_ttl=720,\n        labels=[\n            \"test\",\n            \"demo\",\n        ],\n        campaign_variables={\n            \"key\": \"value\",\n            \"key2\": \"value2\",\n        },\n        daily_start_time=\"09:00:00\",\n        daily_end_time=\"17:00:00\",\n        source=\"+19032900844\",\n        caller_id=\"19995551234\",\n        hourly_rate=25,\n        max_daily_calls=2500,\n        retry_count=1,\n        retry_interval=\"30m\",\n        active_days=[\n            models.DaysOfWeek.MON,\n            models.DaysOfWeek.TUE,\n            models.DaysOfWeek.WED,\n            models.DaysOfWeek.THU,\n            models.DaysOfWeek.FRI,\n        ],\n        voicemail_detection=models.VoicemailDetectionConfig(\n            voicemail_detection_overall_timeout=30,\n            voicemail_detection_pre_speech_timeout=3.5,\n            voicemail_detection_post_speech_timeout=1.75,\n        ),\n        allowed_line_types=[\n            models.LineTypeBucket.MOBILE,\n            models.LineTypeBucket.VOIP,\n        ],\n        target_filters=models.TargetFilters(\n            match=models.Match.ANY,\n            rules=[\n                models.TargetFilterRule(\n                    field=\"line_type\",\n                    op=models.FilterOp.IN,\n                    values=[\n                        \"landline\",\n                        \"fixedVoip\",\n                        \"nonFixedVoip\",\n                    ],\n                ),\n                models.TargetFilterRule(\n                    field=\"carrier_name\",\n                    op=models.FilterOp.IN,\n                    values=[\n                        \"Onvoy, LLC - Sinch\",\n                    ],\n                ),\n            ],\n        ),\n        webhooks=[\n            models.OutboundCampaignWebhookInput(\n                trigger_statuses=[\n                    models.ChannelManagerStatus.COMPLETED,\n                ],\n                url=\"https://example.com/hooks/syllable\",\n                request_method=\"POST\",\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.outbound.campaigns.update({\n    campaignId: 679645,\n    outboundCampaignInput: {\n      campaignName: \"Outbound Campaign 1\",\n      description: \"This is a test campaign\",\n      mode: \"voice\",\n      smsSessionTtl: 720,\n      labels: [\n        \"test\",\n        \"demo\",\n      ],\n      campaignVariables: {\n        \"key\": \"value\",\n        \"key2\": \"value2\",\n      },\n      dailyStartTime: \"09:00:00\",\n      dailyEndTime: \"17:00:00\",\n      source: \"+19032900844\",\n      callerId: \"19995551234\",\n      hourlyRate: 25,\n      maxDailyCalls: 2500,\n      retryCount: 1,\n      retryInterval: \"30m\",\n      activeDays: [\n        \"mon\",\n        \"tue\",\n        \"wed\",\n        \"thu\",\n        \"fri\",\n      ],\n      voicemailDetection: {\n        voicemailDetectionOverallTimeout: 30,\n        voicemailDetectionPreSpeechTimeout: 3.5,\n        voicemailDetectionPostSpeechTimeout: 1.75,\n      },\n      allowedLineTypes: [\n        \"mobile\",\n        \"voip\",\n      ],\n      targetFilters: {\n        match: \"any\",\n        rules: [\n          {\n            field: \"line_type\",\n            op: \"in\",\n            values: [\n              \"landline\",\n              \"fixedVoip\",\n              \"nonFixedVoip\",\n            ],\n          },\n          {\n            field: \"carrier_name\",\n            op: \"in\",\n            values: [\n              \"Onvoy, LLC - Sinch\",\n            ],\n          },\n        ],\n      },\n      webhooks: [\n        {\n          triggerStatuses: [\n            \"COMPLETED\",\n          ],\n          url: \"https://example.com/hooks/syllable\",\n          requestMethod: \"POST\",\n        },\n      ],\n    },\n  });\n\n  console.log(result);\n}\n\nrun();"
    delete:
      tags:
      - outbound.campaigns
      summary: Delete Outbound Communication Campaign
      operationId: outbound_campaign_delete
      security:
      - APIKeyHeader: []
      parameters:
      - name: campaign_id
        in: path
        required: true
        schema:
          type: integer
          title: Campaign 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.outbound.campaigns.delete(campaign_id=439537)\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.outbound.campaigns.delete({\n    campaignId: 439537,\n  });\n\n  console.log(result);\n}\n\nrun();"
components:
  schemas:
    DaysOfWeek:
      type: string
      enum:
      - mon
      - tue
      - wed
      - thu
      - fri
      - sat
      - sun
      title: DaysOfWeek
      description: Enum representing days of the week.
    ChannelManagerStatus:
      type: string
      enum:
      - PENDING
      - DUPLICATE
      - INVALID
      - UNEXPECTED_ERROR
      - FILTERED_LINE_TYPE
      - PROCESSED
      - DROPPED
      - DEFERRED
      - BOUNCED
      - DELIVERED
      - OPENED
      - CLICKED
      - SPAM_REPORT
      - UNSUBSCRIBED
      - PRIOR_UNSUBSCRIBED
      - PRIOR_SPAM_REPORT
      - PRIOR_DROPPED
      - PRIOR_BOUNCED
      - SENT
      - ACCEPTED
      - QUEUED
      - SENDING
      - UNDELIVERED
      - DELIVERY_UNKNOWN
      - DELIVERY_FAILED
      - IN-PROGRESS
      - BUSY
      - CANCELED
      - COMPLETED
      - DECLINED
      - NO-ANSWER
      - MACHINE
      - HUMAN
      - UNKNOWN
      - FAILED
      - SIP_NOT_FOUND
      - SIP_TEMPORARILY_UNAVAILABLE
      - SIP_LOOP_DETECTED
      - SIP_DOES_NOT_EXIST_ANYWHERE
      title: ChannelManagerStatus
      description: Status of an outbound communication request (voice, SMS, or email).
    OrderByDirection:
      type: string
      enum:
      - asc
      - desc
      title: OrderByDirection
      description: The direction in which to order list results, either ascending or descending.
    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
    TargetFilterRule:
      properties:
        field:
          type: string
          title: Field
          description: Enrichment attribute to match on (a key in the request enrichment payload).
          examples:
          - line_type
          - carrier_name
          - mnc
        op:
          $ref: '#/components/schemas/FilterOp'
          description: Comparison operator.
          examples:
          - in
          - not_in
        values:
          items:
            type: string
          type: array
          title: Values
          description: Values to compare against. Ignored for exists / not_exists.
          examples:
          - - landline
            - fixedVoip
            - nonFixedVoip
      type: object
      required:
      - field
      - op
      title: TargetFilterRule
      description: 'A single predicate over one enrichment attribute of an outbound request.


        ``field`` names a key in the request''s enrichment payload (e.g. ``line_type``, ``carrier_name``,

        ``mcc``, ``mnc``). Any attribute captured at lookup time can be filtered on with no code change.'
    OutboundCampaignWebhookResponse:
      properties:
        trigger_statuses:
          items:
            $ref: '#/components/schemas/ChannelManagerStatus'
          type: array
          title: Trigger Statuses
          description: Condition expression evaluated when the trigger fires
          examples:
          - campaign_id == 1 && channel_manager_status == 'COMPLETED'
        url:
          type: string
          title: Url
          description: HTTPS URL to which to send the webhook payload
          examples:
          - https://example.com/hooks/syllable
        request_method:
          type: string
          title: Request Method
          description: HTTP method for the outbound request (POST, PUT, or PATCH)
          examples:
          - POST
        id:
          type: integer
          title: Id
          description: Unique ID for webhook
          examples:
          - 1
        auth_value_keys:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Auth Value Keys
          description: Auth value keys (values omitted for security); only hmac_secret is currently supported
          examples:
          - - hmac_secret
      type: object
      required:
      - trigger_statuses
      - url
      - request_method
      - id
      title: OutboundCampaignWebhookResponse
    FilterOp:
      type: string
      enum:
      - in
      - not_in
      - eq
      - neq
      - exists
      - not_exists
      title: FilterOp
      description: Comparison operator for a single target-filter rule.
    OutboundCampaignWebhookInput:
      properties:
        trigger_statuses:
          items:
            $ref: '#/components/schemas/ChannelManagerStatus'
          type: array
          title: Trigger Statuses
          description: Condition expression evaluated when the trigger fires
          examples:
          - campaign_id == 1 && channel_manager_status == 'COMPLETED'
        url:
          type: string
          title: Url
          description: HTTPS URL to which to send the webhook payload
          examples:
          - https://example.com/hooks/syllable
        request_method:
          type: string
          title: Request Method
          description: HTTP method for the outbound request (POST, PUT, or PATCH)
          examples:
          - POST
        id:
          anyOf:
          - type: integer
          - type: 'null'
          title: Id
          description: Unique ID for webhook, if updating an existing webhook
          examples:
          - 1
        auth_values:
          anyOf:
          - additionalProperties:
              anyOf:
              - type: string
              - type: 'null'
            type: object
          - type: 'null'
          title: Auth Values
          description: Optional dict of auth values. Currently, only the key "hmac_secret" is allowed; value must be standard Base64 (RFC 4648) decoding to 32–512 bytes of key material. On update, leave a value for a given key null and the stored value for that key is kept. (If a key is omitted entirely, any existing value for that key is removed.)
          examples:
          - hmac_secret: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
      type: object
      required:
      - trigger_statuses
      - url
      - request_method
      title: OutboundCampaignWebhookInput
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    TargetFilters:
      properties:
        match:
          type: string
          enum:
          - all
          - any
          title: Match
          description: 'How to combine rules: ''all'' (AND) or ''any'' (OR).'
          default: all
          examples:
          - all
          - any
        on_unknown:
          type: string
          enum:
          - include
          - exclude
          title: On Unknown
          description: Whether to dial requests whose enrichment is unresolved (no lookup data).
          default: include
          examples:
          - include
          - exclude
        rules:
          items:
            $ref: '#/components/schemas/TargetFilterRule'
          type: array
          title: Rules
          description: Predicates over request enrichment attributes. Empty means no filter.
          examples:
          - - field: line_type
              op: in
              values:
              - landline
              - fixedVoip
              - nonFixedVoip
            - field: carrier_name
              op: in
              values:
              - Onvoy, LLC - Sinch
      type: object
      title: TargetFilters
      description: 'Generic target filter for an outbound campaign: a flat list of rules over request enrichment.


        A request is *dialable* when it matches the ruleset (``match=''all''`` -> every rule; ``''any''`` ->

        at least one rule); non-matching requests are skipped. ``on_unknown`` decides the fate of

        requests whose enrichment never resolved (no lookup / lookup failed). An empty ``rules`` list

        means no filter (all numbers dialed), matching the pre-filter behavior.'
    CampaignProperties:
      type: string
      enum:
      - id
      - campaign_name
      - campaign_variables
      - daily_start_time
      - daily_end_time
      - source
      - mode
      - caller_id
      - updated_at
      - label
      - labels
      - voicemail_detection
      title: CampaignProperties
    ListResponse_OutboundCampaign_:
      properties:
        items:
          items:
            $ref: '#/components/schemas/OutboundCampaign'
          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[OutboundCampaign]
    VoicemailDetectionConfig:
      properties:
        mode:
          anyOf:
          - type: string
            enum:
            - v1
            - v2
          - type: 'null'
          title: Mode
          description: 'Voicemail-detection strategy: ''v1'' (original check_voicemail/leave_voicemail) or ''v2'' (Voicemail Detection 2, which suppresses the turn-0 greeting and uses the greeting tool). The two modes are mutually exclusive. Omitted/null on legacy v1 campaigns is treated as v1.'
          examples:
          - v1
          - v2
        voicemail_detection_overall_timeout:
          anyOf:
          - type: number
          - type: 'null'
          title: Voicemail Detection Overall Timeout
        voicemail_detection_pre_speech_timeout:
          anyOf:
          - type: number
          - type: 'null'
          title: Voicemail Detection Pre Speech Timeout
        voicemail_detection_post_speech_timeout:
          anyOf:
          - type: number
          - type: 'null'
          title: Voicemail Detection Post Speech Timeout
        voicemail_detection_speech_threshold:
          anyOf:
          - type: number
          - type: 'null'
          title: Voicemail Detection Speech Threshold
      additionalProperties: true
      type: object
      title: VoicemailDetectionConfig
      description: 'Voicemail detection config stored on outbound_campaign.voicemail_detection.


        `mode` selects the (mutually-exclusive) strategy; the remaining fields are detection timeouts.

        Unknown keys are preserved (`extra=''allow

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