Knock Workflows API

Trigger and cancel notification workflows and inspect workflow recipient runs. Workflows are Knock's core programmable model — orchestrating channel steps (email, SMS, push, in-app, chat, webhook) and function steps (batch, delay, branch, throttle, fetch, AI agent, trigger-workflow) with conditions and preferences across recipients.

Knock Workflows API is one of 14 APIs that Knock publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 1 JSON Schema definition.

Tagged areas include Workflows, Notifications, Messaging, and Triggers. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, 1 Naftiko capability spec, and 1 JSON Schema.

OpenAPI Specification

knock-workflows-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Knock Workflows API
  version: '1.0'
  description: Trigger and cancel notification workflows, and inspect workflow recipient runs. Workflows are Knock's core
    programmable notification model — orchestrating channel steps (email, SMS, push, in-app, chat), function steps (batch,
    delay, branch, throttle, fetch, AI agent), and conditions across recipients.
  contact:
    name: Knock
    url: https://knock.app
  license:
    name: Proprietary
servers:
- url: https://api.knock.app
  variables: {}
security:
- BearerAuth: []
paths:
  /v1/workflows/{key}/trigger:
    post:
      callbacks: {}
      description: Trigger a workflow (specified by the key) to run for the given recipients, using the parameters provided.
        Returns an identifier for the workflow run request. All workflow runs are executed asynchronously. This endpoint also
        handles [inline identifications](/managing-recipients/identifying-recipients#inline-identifying-recipients) for the
        `actor`, `recipient`, and `tenant` fields.
      operationId: triggerWorkflow (2)
      parameters:
      - description: Key of the workflow to trigger.
        in: path
        name: key
        required: true
        schema:
          type: string
          x-struct: null
          x-validate: null
      requestBody:
        content:
          application/json:
            example:
              actor: mr_dna
              cancellation_key: isla_nublar_incident_1993
              data:
                affected_areas:
                - visitor_center
                - raptor_pen
                - trex_paddock
                attraction_id: paddock_rex_01
                evacuation_protocol: active
                message: Life finds a way
                severity: critical
                system_status: fences_failing
              recipients:
              - dr_grant
              - dr_sattler
              - dr_malcolm
              tenant: ingen_isla_nublar
            schema:
              $ref: '#/components/schemas/TriggerWorkflowRequest'
        description: Params
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TriggerWorkflowResponse'
          description: OK
      summary: Trigger workflow
      tags:
      - Workflows
      x-idempotent: true
      x-ratelimit-tier: 5
  /v1/workflow_recipient_runs/{id}:
    get:
      callbacks: {}
      description: Returns a single workflow recipient run with its associated events.
      operationId: getWorkflowRecipientRun
      parameters:
      - description: The unique identifier for the workflow recipient run (per-recipient).
        in: path
        name: id
        required: true
        schema:
          type: string
          x-struct: null
          x-validate: null
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowRecipientRunDetail'
          description: OK
      summary: Get a workflow recipient run
      tags:
      - Workflow recipient runs
      x-ratelimit-tier: 2
      x-retention-policy: true
  /v1/workflow_recipient_runs:
    get:
      callbacks: {}
      description: Returns a paginated list of workflow recipient runs for the current environment.
      operationId: listWorkflowRecipientRuns
      parameters:
      - description: The cursor to fetch entries after.
        in: query
        name: after
        required: false
        schema:
          type: string
          x-struct: null
          x-validate: null
      - description: The cursor to fetch entries before.
        in: query
        name: before
        required: false
        schema:
          type: string
          x-struct: null
          x-validate: null
      - description: The number of items per page (defaults to 50).
        in: query
        name: page_size
        required: false
        schema:
          type: integer
          x-struct: null
          x-validate: null
      - description: Limits the results to workflow recipient runs for the given workflow key.
        in: query
        name: workflow
        required: false
        schema:
          type: string
          x-struct: null
          x-validate: null
      - description: Limits the results to workflow recipient runs with the given status.
        in: query
        name: status[]
        required: false
        schema:
          items:
            enum:
            - queued
            - processing
            - paused
            - completed
            - cancelled
            type: string
            x-struct: null
            x-validate: null
          type: array
          x-struct: null
          x-validate: null
      - description: Limits the results to workflow recipient runs for the given tenant.
        in: query
        name: tenant
        required: false
        schema:
          type: string
          x-struct: null
          x-validate: null
      - description: Limits the results to workflow recipient runs that have errors.
        in: query
        name: has_errors
        required: false
        schema:
          type: boolean
          x-struct: null
          x-validate: null
      - description: Limits the results to workflow recipient runs for the given recipient. Accepts a user ID string or an
          object reference with `id` and `collection`.
        in: query
        name: recipient
        required: false
        schema:
          $ref: '#/components/schemas/RecipientReference'
      - description: Limits the results to workflow recipient runs started after the given date.
        example: '2025-01-01T00:00:00Z'
        in: query
        name: starting_at
        required: false
        schema:
          format: date-time
          type: string
          x-struct: null
          x-validate: null
      - description: Limits the results to workflow recipient runs started before the given date.
        example: '2025-01-01T00:00:00Z'
        in: query
        name: ending_at
        required: false
        schema:
          format: date-time
          type: string
          x-struct: null
          x-validate: null
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListWorkflowRecipientRunsResponse'
          description: OK
      summary: List workflow recipient runs
      tags:
      - Workflow recipient runs
      x-ratelimit-tier: 2
      x-retention-policy: true
  /v1/workflows/{key}/cancel:
    post:
      callbacks: {}
      description: When invoked for a workflow using a specific workflow key and cancellation key, will cancel any queued
        workflow runs associated with that key/cancellation key pair. Can optionally be provided one or more recipients to
        scope the request to.
      operationId: cancelWorkflow
      parameters:
      - description: The key of the workflow to cancel.
        in: path
        name: key
        required: true
        schema:
          type: string
          x-struct: null
          x-validate: null
      requestBody:
        content:
          application/json:
            example:
              cancellation_key: cancel-workflow-123
              recipients:
              - jhammond
            schema:
              $ref: '#/components/schemas/CancelWorkflowRequest'
        description: Params
        required: true
      responses:
        '204':
          description: No Content
      summary: Cancel workflow
      tags:
      - Workflows
      x-ratelimit-tier: 5
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: Knock API key as a Bearer token. Use a public key (pk_...) for client-side requests or a secret key (sk_...)
        for server-side.
  schemas:
    TriggerWorkflowResponse:
      description: The response from triggering a workflow.
      example:
        workflow_run_id: 123e4567-e89b-12d3-a456-426614174000
      properties:
        workflow_run_id:
          description: This value allows you to track individual messages associated with this trigger request.
          example: 123e4567-e89b-12d3-a456-426614174000
          format: uuid
          type: string
          x-struct: null
          x-validate: null
      required:
      - workflow_run_id
      title: TriggerWorkflowResponse
      type: object
      x-struct: Elixir.SwitchboardWeb.V1.Specs.TriggerWorkflowResponse
      x-validate: null
    CancelWorkflowRequest:
      description: When invoked using a specific workflow key and cancellation key, will cancel any queued workflow runs associated
        with that key/cancellation key pair. Can optionally provide one or more recipients to scope the request to.
      example:
        cancellation_key: cancel-workflow-123
        recipients:
        - jhammond
      properties:
        cancellation_key:
          description: An optional key that is used to reference a specific workflow trigger request when issuing a [workflow
            cancellation](/send-notifications/canceling-workflows) request. Must be provided while triggering a workflow in
            order to enable subsequent cancellation. Should be unique across trigger requests to avoid unintentional cancellations.
          type: string
          x-struct: null
          x-validate: null
        recipients:
          description: A list of recipients to cancel the notification for. If omitted, cancels for all recipients associated
            with the cancellation key.
          items:
            $ref: '#/components/schemas/RecipientReference'
          nullable: true
          type: array
          x-struct: null
          x-validate: null
      required:
      - cancellation_key
      title: CancelWorkflowRequest
      type: object
      x-struct: Elixir.SwitchboardWeb.V1.Specs.CancelWorkflowRequest
      x-validate: null
    RecipientReference:
      description: A reference to a recipient, either a user identifier (string) or an object reference (ID, collection).
      example: user_123
      oneOf:
      - description: The ID of the user which is used as the reference for the recipient.
        example: user_123
        nullable: false
        title: UserReference
        type: string
        x-struct: null
        x-validate: null
      - description: A reference to a recipient object.
        example:
          collection: projects
          id: project_123
        properties:
          collection:
            description: The collection the recipient object belongs to.
            example: projects
            nullable: false
            type: string
            x-struct: null
            x-validate: null
          id:
            description: An identifier for the recipient object.
            example: project_123
            nullable: false
            type: string
            x-struct: null
            x-validate: null
        title: ObjectReference
        type: object
        x-struct: null
        x-validate: null
      title: RecipientReference
      x-struct: Elixir.SwitchboardWeb.V1.Specs.RecipientReference
      x-validate: null
    TriggerWorkflowRequest:
      description: A request to trigger a notification workflow.
      example:
        actor: mr_dna
        cancellation_key: isla_nublar_incident_1993
        data:
          affected_areas:
          - visitor_center
          - raptor_pen
          - trex_paddock
          attraction_id: paddock_rex_01
          evacuation_protocol: active
          message: Life finds a way
          severity: critical
          system_status: fences_failing
        recipients:
        - dr_grant
        - dr_sattler
        - dr_malcolm
        tenant: ingen_isla_nublar
      properties:
        actor:
          anyOf:
          - $ref: '#/components/schemas/RecipientRequest'
          - nullable: true
            x-struct: null
            x-validate: null
          description: A map of properties describing a user or an object to identify in Knock and mark as who or what performed
            the action.
          x-struct: null
          x-validate: null
        cancellation_key:
          description: An optional key that is used to reference a specific workflow trigger request when issuing a [workflow
            cancellation](/send-notifications/canceling-workflows) request. Must be provided while triggering a workflow in
            order to enable subsequent cancellation. Should be unique across trigger requests to avoid unintentional cancellations.
          nullable: true
          type: string
          x-struct: null
          x-validate: null
        data:
          additionalProperties: true
          description: An optional map of data to pass into the workflow execution. There is a 10MB limit on the size of the
            full `data` payload. Any individual string value greater than 1024 bytes in length will be [truncated](/developer-tools/api-logs#log-truncation)
            in your logs.
          nullable: true
          type: object
          x-struct: null
          x-validate: null
        recipients:
          description: The recipients to trigger the workflow for. Can inline identify users, objects, or use a list of user
            IDs. Limited to 1,000 recipients.
          items:
            $ref: '#/components/schemas/RecipientRequest'
          type: array
          x-struct: null
          x-validate: null
        tenant:
          anyOf:
          - $ref: '#/components/schemas/InlineTenantRequest'
          - nullable: true
            x-struct: null
            x-validate: null
          description: The tenant to trigger the workflow for. Triggering with a tenant will use any tenant-level overrides
            associated with the tenant object, and all messages produced from workflow runs will be tagged with the tenant.
          x-struct: null
          x-validate: null
      required:
      - recipients
      title: TriggerWorkflowRequest
      type: object
      x-struct: Elixir.SwitchboardWeb.V1.Specs.TriggerWorkflowRequest
      x-validate: null
    InlineTenantRequest:
      description: An request to set a tenant inline.
      example:
        id: tenant_1
        name: Acme Corp, Inc.
      oneOf:
      - description: The unique identifier for the tenant.
        type: string
        x-struct: null
        x-validate: null
      - $ref: '#/components/schemas/TenantRequest'
      title: InlineTenantRequest
      x-struct: Elixir.SwitchboardWeb.V1.Specs.InlineTenantRequest
      x-validate: null
    TenantRequest:
      additionalProperties: true
      description: A tenant to be set in the system. You can supply any additional properties on the tenant object.
      example:
        id: tenant_123
        name: ACME Corp, Inc.
        settings:
          branding:
            icon_url: https://example.com/icon.png
            logo_url: https://example.com/logo.png
            primary_color: '#000000'
            primary_color_contrast: '#FFFFFF'
      properties:
        channel_data:
          description: The channel data for the tenant.
          oneOf:
          - nullable: true
            x-struct: null
            x-validate: null
          - $ref: '#/components/schemas/InlineChannelDataRequest'
          x-struct: null
          x-validate: null
        id:
          description: The unique identifier for the tenant.
          type: string
          x-struct: null
          x-validate: null
        name:
          description: An optional name for the tenant.
          nullable: true
          type: string
          x-struct: null
          x-validate: null
        preferences:
          description: The preferences for the tenant.
          oneOf:
          - nullable: true
            x-struct: null
            x-validate: null
          - $ref: '#/components/schemas/InlinePreferenceSetRequest'
          x-struct: null
          x-validate: null
        settings:
          description: The settings for the tenant. Includes branding and preference set.
          properties:
            branding:
              description: The branding for the tenant.
              properties:
                icon_url:
                  description: The icon URL for the tenant. Must point to a valid image with an image MIME type.
                  nullable: true
                  type: string
                  x-struct: null
                  x-validate: null
                logo_url:
                  description: The logo URL for the tenant. Must point to a valid image with an image MIME type.
                  nullable: true
                  type: string
                  x-struct: null
                  x-validate: null
                primary_color:
                  description: The primary color for the tenant, provided as a hex value.
                  nullable: true
                  type: string
                  x-struct: null
                  x-validate: null
                primary_color_contrast:
                  description: The primary color contrast for the tenant, provided as a hex value.
                  nullable: true
                  type: string
                  x-struct: null
                  x-validate: null
              type: object
              x-struct: null
              x-validate: null
            preference_set:
              description: The preference set for the tenant. Used to override the default preference set.
              oneOf:
              - nullable: true
                x-struct: null
                x-validate: null
              - $ref: '#/components/schemas/PreferenceSetRequest'
              x-struct: null
              x-validate: null
          type: object
          x-struct: null
          x-validate: null
      required:
      - id
      title: TenantRequest
      type: object
      x-struct: Elixir.SwitchboardWeb.V1.Specs.TenantRequest
      x-validate: null
    PreferenceSetRequest:
      description: A request to set a preference set for a recipient.
      example:
        __persistence_strategy__: merge
        categories:
          marketing: false
          transactional:
            channel_types:
              email: false
        channel_types:
          email: true
        channels:
          2f641633-95d3-4555-9222-9f1eb7888a80:
            conditions:
            - argument: US
              operator: equal_to
              variable: recipient.country_code
          aef6e715-df82-4ab6-b61e-b743e249f7b6: true
        commercial_subscribed: true
        workflows:
          dinosaurs-loose:
            channel_types:
              email: false
      properties:
        __persistence_strategy__:
          description: Controls how the preference set is persisted. 'replace' will completely replace the preference set,
            'merge' will merge with existing preferences.
          enum:
          - merge
          - replace
          type: string
          x-struct: null
          x-validate: null
        categories:
          anyOf:
          - additionalProperties:
              $ref: '#/components/schemas/PreferenceSetWorkflowCategorySetting'
            description: An object where the key is the category and the values are the preference settings for that category.
            example:
              marketing:
                channel_types:
                  email: false
              transactional: true
            title: PreferenceSetRequestCategories
            type: object
            x-struct: null
            x-validate: null
          - nullable: true
            x-struct: null
            x-validate: null
          description: An object where the key is the category and the values are the preference settings for that category.
          x-struct: null
          x-validate: null
        channel_types:
          anyOf:
          - $ref: '#/components/schemas/PreferenceSetChannelTypes'
          - nullable: true
            x-struct: null
            x-validate: null
          description: An object where the key is the channel type and the values are the preference settings for that channel
            type.
          x-struct: null
          x-validate: null
        channels:
          anyOf:
          - $ref: '#/components/schemas/PreferenceSetChannels'
          - nullable: true
            x-struct: null
            x-validate: null
          description: An object where the key is the channel ID and the values are the preference settings for that channel
            ID.
          x-struct: null
          x-validate: null
        commercial_subscribed:
          description: Whether the recipient is subscribed to commercial communications. When false, the recipient will not
            receive commercial workflow notifications.
          nullable: true
          type: boolean
          x-struct: null
          x-validate: null
        workflows:
          anyOf:
          - additionalProperties:
              $ref: '#/components/schemas/PreferenceSetWorkflowCategorySetting'
            description: An object where the key is the workflow key and the values are the preference settings for that workflow.
            example:
              dinosaurs-loose:
                channel_types:
                  email: false
                  sms: true
              welcome-sequence: true
            title: PreferenceSetRequestWorkflows
            type: object
            x-struct: null
            x-validate: null
          - nullable: true
            x-struct: null
            x-validate: null
          description: An object where the key is the workflow key and the values are the preference settings for that workflow.
          x-struct: null
          x-validate: null
      title: PreferenceSetRequest
      type: object
      x-struct: Elixir.SwitchboardWeb.V1.Specs.PreferenceSetRequest
      x-validate: null
    PreferenceSetWorkflowCategorySetting:
      description: Workflow or category preferences within a preference set
      example:
        channel_types:
          email: false
        channels:
          aef6e715-df82-4ab6-b61e-b743e249f7b6: true
      oneOf:
      - example: false
        type: boolean
        x-struct: null
        x-validate: null
      - description: The settings object for a workflow or category, where you can specify channel types or conditions.
        example:
          channel_types:
            email: false
          channels:
            aef6e715-df82-4ab6-b61e-b743e249f7b6: true
          conditions: null
        properties:
          channel_types:
            anyOf:
            - $ref: '#/components/schemas/PreferenceSetChannelTypes'
            - nullable: true
              x-struct: null
              x-validate: null
            description: An object where the key is the channel type and the values are the preference settings for that channel
              type.
            x-struct: null
            x-validate: null
          channels:
            anyOf:
            - $ref: '#/components/schemas/PreferenceSetChannels'
            - nullable: true
              x-struct: null
              x-validate: null
            description: An object where the key is the channel ID and the values are the preference settings for that channel
              ID.
            x-struct: null
            x-validate: null
          conditions:
            description: A list of conditions to apply to a channel type.
            items:
              $ref: '#/components/schemas/Condition'
            nullable: true
            type: array
            x-struct: null
            x-validate: null
        title: PreferenceSetWorkflowCategorySettingObject
        type: object
        x-struct: null
        x-validate: null
      title: PreferenceSetWorkflowCategorySetting
      type: object
      x-struct: Elixir.SwitchboardWeb.V1.Specs.PreferenceSetWorkflowCategorySetting
      x-validate: null
    Condition:
      description: A condition to be evaluated.
      example:
        argument: frog_genome
        operator: contains
        variable: specimen.dna_sequence
      properties:
        argument:
          description: The argument value to compare against in the condition.
          example: some_property
          nullable: true
          type: string
          x-struct: null
          x-validate: null
        operator:
          description: The operator to use in the condition evaluation.
          enum:
          - equal_to
          - not_equal_to
          - greater_than
          - less_than
          - greater_than_or_equal_to
          - less_than_or_equal_to
          - contains
          - not_contains
          - empty
          - not_empty
          - exists
          - not_exists
          - contains_all
          - is_timestamp
          - is_not_timestamp
          - is_timestamp_on_or_after
          - is_timestamp_before
          - is_timestamp_on_or_after_date
          - is_timestamp_before_date
          - is_timestamp_between
          - is_between
          - is_audience_member
          - is_not_audience_member
          example: equal_to
          type: string
          x-struct: null
          x-validate: null
        variable:
          description: The variable to be evaluated in the condition.
          example: recipient.property
          type: string
          x-struct: null
          x-validate: null
      required:
      - variable
      - operator
      - argument
      title: Condition
      type: object
      x-struct: Elixir.SwitchboardWeb.V1.Specs.Condition
      x-validate: null
    PreferenceSetChannels:
      additionalProperties:
        description: Whether the specific channel (by channel_id) is enabled for the preference set, or a settings object
          with conditions.
        oneOf:
        - type: boolean
          x-struct: null
          x-validate: null
        - $ref: '#/components/schemas/PreferenceSetChannelSetting'
        x-struct: null
        x-validate: null
      description: Channel preferences.
      example:
        2f641633-95d3-4555-9222-9f1eb7888a80:
          conditions:
          - argument: US
            operator: equal_to
            variable: recipient.country_code
        aef6e715-df82-4ab6-b61e-b743e249f7b6: true
      title: PreferenceSetChannels
      type: object
      x-struct: Elixir.SwitchboardWeb.V1.Specs.PreferenceSetChannels
      x-validate: null
    PreferenceSetChannelSetting:
      description: A set of settings for a specific channel. Currently, this can only be a list of conditions to apply.
      example:
        conditions:
        - argument: US
          operator: equal_to
          variable: recipient.country_code
      properties:
        conditions:
          description: A list of conditions to apply to a specific channel.
          items:
            $ref: '#/components/schemas/Condition'
          type: array
          x-struct: null
          x-validate: null
      required:
      - conditions
      title: PreferenceSetChannelSetting
      type: object
      x-struct: Elixir.SwitchboardWeb.V1.Specs.PreferenceSetChannels.PreferenceSetChannelSetting
      x-validate: null
    PreferenceSetChannelTypes:
      description: Channel type preferences.
      example:
        email: true
        sms:
          conditions:
          - argument: US
            operator: equal_to
            variable: recipient.country_code
      properties:
        chat:
          description: Whether the channel type is enabled for the preference set.
          oneOf:
          - type: boolean
            x-struct: null
            x-validate: null
          - $ref: '#/components/schemas/PreferenceSetChannelTypeSetting'
          x-struct: null
          x-validate: null
        email:
          description: Whether the channel type is enabled for the preference set.
          oneOf:
          - type: boolean
            x-struct: null
            x-validate: null
          - $ref: '#/components/schemas/PreferenceSetChannelTypeSetting'
          x-struct: null
          x-validate: null
        http:
          description: Whether the channel type is enabled for the preference set.
          oneOf:
          - type: boolean
            x-struct: null
            x-validate: null
          - $ref: '#/components/schemas/PreferenceSetChannelTypeSetting'
          x-struct: null
          x-validate: null
        in_app_feed:
          description: Whether the channel type is enabled for the preference set.
          oneOf:
          - type: boolean
            x-struct: null
            x-validate: null
          - $ref: '#/components/schemas/PreferenceSetChannelTypeSetting'
          x-struct: null
          x-validate: null
        push:
          description: Whether the channel type is enabled for the preference set.
          oneOf:
          - type: boolean
            x-struct: null
            x-validate: null
          - $ref: '#/components/schemas/PreferenceSetChannelTypeSetting'
          x-struct: null
          x-validate: null
        sms:
          description: Whether the channel type is enabled for the preference set.
          oneOf:
          - type: boolean
            x-struct: null
            x-validate: null
          - $ref: '#/components/schemas/PreferenceSetChannelTypeSetting'
          x-struct: null
          x-validate: null
      title: PreferenceSetChannelTypes
      type: object
      x-struct: Elixir.SwitchboardWeb.V1.Specs.PreferenceSetChannelTypes
      x-validate: null
    PreferenceSetChannelTypeSetting:
      description: A set of settings for a channel type. Currently, this can only be a list of conditions to apply.
      example:
        conditions:
        - argument: US
          operator: equal_to
          variable: recipient.country_code
      properties:
        conditions:
          description: A list of conditions to apply to a channel type.
          items:
            $ref: '#/components/schemas/Condition'
          type: array
          x-struct: null
          x-validate: null
      required:
      - conditions
      title: PreferenceSetChannelTypeSetting
      type: object
      x-struct: Elixir.SwitchboardWeb.V1.Specs.PreferenceSetChannelTypes.PreferenceSetChannelTypeSetting
      x-validate: null
    InlinePreferenceSetRequest:
      additionalProperties:
        $ref: '#/components/schemas/PreferenceSetRequest'
      description: Inline set preferences for a recipient, where the key is the preference set id. Preferences that are set
        inline will be merged into any existing preferences rather than replacing them.
      example:
        default:
          categories:
            transactional:
              channel_types:
                email: false
          channel_types:
            email: true
      title: InlinePreferenceSetRequest
      type: object
      x-struct: Elixir.SwitchboardWeb.V1.Specs.InlinePreferenceSetRequest
      x-validate: null
    InlineChannelDataRequest:
      additionalProperties:
        description: Channel data for a given channel type.
        nullable: false
        oneOf:
        - $ref: '#/components/schemas/PushChannelDataTokensOnly'
        - $ref: '#/components/schemas/PushChannelDataDevicesOnly'
        - $ref: '#/components/schemas/AWSSNSPushChannelDataTargetARNsOnly'
        - $ref: '#/components/schemas/AWSSNSPushChannelDataDevicesOnly'
        - $ref: '#/components/schemas/OneSignalChannelDataPlayerIdsOnly'
        - $ref: '#/components/schemas/SlackChannelData'
        - $ref: '#/components/schemas/MsTeamsChannelData'
        - $ref: '#/components/schemas/DiscordChannelData'
        x-struct: null
        x-validate: null
      description: A request to set channel data for a type of channel inline.
      example:
        97c5837d-c65c-4d54-aa39-080eeb81c69d:
          tokens:
          - push_token_xxx
      title: InlineChannelDataRequest
      type: object
      x-struct: Elixir.SwitchboardWeb.V1.Specs.InlineChannelDataRequest
      x-validate: null
    DiscordChannelData:
      description: Discord channel data.
      example:
        connections:
        - channel_id: '123456789012345678'
      properties:
        connections:
          description: List of Discord channel connections.
          items:
            description: Discord channel connection, either a channel connection or an incoming webhook connection.
            oneOf:
            - $ref: '#/components/schemas/DiscordChannelConnection'
            - $ref: '#/components/schemas/DiscordIncomingWebhookConnection'
            type: object
            x-st

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