Knock Tenants API

The Tenants API from Knock — 4 operation(s) for tenants.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

knock-app-tenants-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Knock Audiences Accounts Tenants API
  version: '1.0'
  description: Manage static Audiences and their members. Audiences power lifecycle messaging — when a user joins an audience, configured workflows fire automatically.
  contact:
    name: Knock
    url: https://knock.app
  license:
    name: Proprietary
servers:
- url: https://api.knock.app
  variables: {}
security:
- BearerAuth: []
tags:
- name: Tenants
paths:
  /v1/tenants/{id}:
    delete:
      callbacks: {}
      description: Delete a tenant and all associated data. This operation cannot be undone.
      operationId: deleteTenant
      parameters:
      - description: The unique identifier for the tenant.
        in: path
        name: id
        required: true
        schema:
          type: string
          x-struct: null
          x-validate: null
      responses:
        '204':
          description: No Content
      summary: Delete a tenant
      tags:
      - Tenants
      x-ratelimit-tier: 2
    get:
      callbacks: {}
      description: Get a tenant by ID.
      operationId: getTenant
      parameters:
      - description: The unique identifier for the tenant.
        in: path
        name: id
        required: true
        schema:
          type: string
          x-struct: null
          x-validate: null
      - description: When true, merges environment-level default preferences into the tenant's `settings.preference_set` field before returning the response. Defaults to false.
        in: query
        name: resolve_full_preference_settings
        required: false
        schema:
          type: boolean
          x-struct: null
          x-validate: null
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Tenant'
          description: OK
      summary: Get a tenant
      tags:
      - Tenants
      x-ratelimit-tier: 4
    put:
      callbacks: {}
      description: Sets a tenant within an environment, performing an upsert operation. Any existing properties will be merged with the incoming properties.
      operationId: setTenant
      parameters:
      - description: The unique identifier for the tenant.
        in: path
        name: id
        required: true
        schema:
          type: string
          x-struct: null
          x-validate: null
      - description: When true, merges environment-level default preferences into the tenant's `settings.preference_set` field before returning the response. Defaults to false.
        in: query
        name: resolve_full_preference_settings
        required: false
        schema:
          type: boolean
          x-struct: null
          x-validate: null
      requestBody:
        content:
          application/json:
            example:
              name: Jurassic Park
              settings:
                branding:
                  icon_url: https://example.com/trex_silhouette_icon.png
                  logo_url: https://example.com/amber_fossil_logo.png
                  primary_color: '#DF1A22'
                  primary_color_contrast: '#FFDE00'
            schema:
              $ref: '#/components/schemas/SetTenantRequest'
        description: Tenant
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SetTenantResponse'
          description: OK
      summary: Set a tenant
      tags:
      - Tenants
      x-ratelimit-tier: 3
  /v1/tenants:
    get:
      callbacks: {}
      description: List tenants for the current environment.
      operationId: listTenants
      parameters:
      - description: Filter tenants by ID.
        in: query
        name: tenant_id
        required: false
        schema:
          type: string
          x-struct: null
          x-validate: null
      - description: Filter tenants by name.
        in: query
        name: name
        required: false
        schema:
          type: string
          x-struct: null
          x-validate: null
      - 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
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListTenantsResponse'
          description: OK
      summary: List tenants
      tags:
      - Tenants
      x-ratelimit-tier: 4
  /v1/tenants/bulk/delete:
    post:
      callbacks: {}
      description: Delete up to 1,000 tenants at a time in a single operation. This operation cannot be undone.
      operationId: bulkDeleteTenants
      parameters:
      - description: The IDs of the tenants to delete.
        in: query
        name: tenant_ids[]
        required: true
        schema:
          items:
            type: string
            x-struct: null
            x-validate: null
          type: array
          x-struct: null
          x-validate: null
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkOperation'
          description: OK
      summary: Bulk delete tenants
      tags:
      - Tenants
      x-ratelimit-tier: 1
  /v1/tenants/bulk/set:
    post:
      callbacks: {}
      description: Set or update up to 1,000 tenants in a single operation.
      operationId: bulkSetTenants
      parameters: []
      requestBody:
        content:
          application/json:
            example:
              tenants:
              - id: tenant_1
                name: Acme Corp, Inc.
            schema:
              $ref: '#/components/schemas/BulkSetTenantsRequest'
        description: Params
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkOperation'
          description: OK
      summary: Bulk set tenants
      tags:
      - Tenants
      x-ratelimit-tier: 1
components:
  schemas:
    SlackTokenConnection:
      description: A Slack connection token.
      example:
        access_token: xoxb-1234567890
        channel_id: C01234567890
        user_id: U01234567890
      properties:
        access_token:
          description: A Slack access token.
          example: xoxb-1234567890
          nullable: true
          type: string
          x-struct: null
          x-validate: null
        channel_id:
          description: A Slack channel ID from the Slack provider.
          example: C01234567890
          nullable: true
          type: string
          x-struct: null
          x-validate: null
        user_id:
          description: A Slack user ID from the Slack provider.
          example: U01234567890
          nullable: true
          type: string
          x-struct: null
          x-validate: null
      title: SlackTokenConnection
      type: object
      x-struct: Elixir.SwitchboardWeb.V1.Specs.SlackChannelData.TokenConnection
      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
    PushChannelDataTokensOnly:
      description: Push channel data.
      example:
        tokens:
        - push_token_1
        - push_token_2
      properties:
        tokens:
          description: A list of push channel tokens.
          items:
            description: The device token to send the push notification to.
            nullable: false
            type: string
            x-struct: null
            x-validate: null
          nullable: false
          type: array
          x-struct: null
          x-validate: null
      required:
      - tokens
      title: PushChannelDataTokensOnly
      type: object
      x-struct: Elixir.SwitchboardWeb.V1.Specs.PushChannelDataTokensOnly
      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
    ListTenantsResponse:
      description: A response containing a list of tenants.
      example:
        entries:
        - __typename: Tenant
          id: tenant_jp123
          name: Jurassic Park
          settings:
            branding:
              icon_url: https://example.com/trex_silhouette_icon.png
              logo_url: https://example.com/amber_fossil_logo.png
              primary_color: '#DF1A22'
              primary_color_contrast: '#FFDE00'
            preference_set:
              categories:
                safety:
                  channel_types:
                    email: true
                    push: true
              channel_types:
                email: true
                in_app_feed: true
                push: true
              id: default
              workflows:
                park_alert:
                  channel_types:
                    email: true
                    push: true
        page_info:
          __typename: PageInfo
          after: null
          before: null
          page_size: 25
      properties:
        entries:
          description: A list of tenants.
          items:
            $ref: '#/components/schemas/Tenant'
          type: array
          x-struct: null
          x-validate: null
        page_info:
          $ref: '#/components/schemas/PageInfo'
      required:
      - entries
      - page_info
      title: ListTenantsResponse
      type: object
      x-struct: Elixir.SwitchboardWeb.V1.Specs.ListTenantsResponse
      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
    SlackIncomingWebhookConnection:
      description: A Slack connection incoming webhook.
      example:
        url: https://hooks.slack.com/services/T01234567890/B01234567890/1234567890
      properties:
        url:
          description: The URL of the incoming webhook for a Slack connection.
          example: https://hooks.slack.com/services/T01234567890/B01234567890/1234567890
          nullable: false
          type: string
          x-struct: null
          x-validate: null
      required:
      - url
      title: SlackIncomingWebhookConnection
      type: object
      x-struct: Elixir.SwitchboardWeb.V1.Specs.SlackChannelData.IncomingWebhookConnection
      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
    SetTenantRequest:
      additionalProperties: true
      description: A tenant to be set in the system. You can supply any additional properties on the tenant object.
      example:
        name: Jurassic Park
        settings:
          branding:
            icon_url: https://example.com/trex_silhouette_icon.png
            logo_url: https://example.com/amber_fossil_logo.png
            primary_color: '#DF1A22'
            primary_color_contrast: '#FFDE00'
      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
        name:
          description: An optional name for the tenant.
          nullable: true
          type: string
          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
      title: SetTenantRequest
      type: object
      x-struct: Elixir.SwitchboardWeb.V1.Specs.SetTenantRequest
      x-validate: null
    PushChannelDataDevicesOnly:
      description: Push channel data.
      example:
        devices:
        - locale: en-US
          timezone: America/Los_Angeles
          token: push_token_1
      properties:
        devices:
          description: A list of devices. Each device contains a token, and optionally a locale and timezone.
          items:
            properties:
              locale:
                description: The locale of the object. Used for [message localization](/concepts/translations).
                nullable: true
                type: string
                x-struct: null
                x-validate: null
              timezone:
                description: The timezone of the object. Must be a valid [tz database time zone string](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). Used for [recurring schedules](/concepts/schedules#scheduling-workflows-with-recurring-schedules-for-recipients).
                nullable: true
                type: string
                x-struct: null
                x-validate: null
              token:
                description: The device token to send the push notification to.
                type: string
                x-struct: null
                x-validate: null
            required:
            - token
            type: object
            x-struct: null
            x-validate: null
          nullable: false
          type: array
          x-struct: null
          x-validate: null
      required:
      - devices
      title: PushChannelDataDevicesOnly
      type: object
      x-struct: Elixir.SwitchboardWeb.V1.Specs.PushChannelDataDevicesOnly
      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-struct: null
            x-validate: null
          nullable: false
          type: array
          x-struct: null
          x-validate: null
      required:
      - connections
      title: DiscordChannelData
      type: object
      x-struct: Elixir.SwitchboardWeb.V1.Specs.DiscordChannelData
      x-validate: null
    MsTeamsChannelData:
      description: Microsoft Teams channel data.
      example:
        connections:
        - ms_teams_channel_id: 123e4567-e89b-12d3-a456-426614174000
          ms_teams_team_id: 123e4567-e89b-12d3-a456-426614174000
          ms_teams_tenant_id: null
          ms_teams_user_id: null
        ms_teams_tenant_id: null
      properties:
        connections:
          description: List of Microsoft Teams connections.
          items:
            oneOf:
            - $ref: '#/components/schemas/MsTeamsTokenConnection'
            - $ref: '#/components/schemas/MsTeamsIncomingWebhookConnection'
            type: object
            x-struct: null
            x-validate: null
          nullable: false
          type: array
          x-struct: null
          x-validate: null
        ms_teams_tenant_id:
          description: Microsoft Teams tenant ID.
          example: 123e4567-e89b-12d3-a456-426614174000
          format: uuid
          nullable: true
          type: string
          x-struct: null
          x-validate: null
      required:
      - connections
      title: MsTeamsChannelData
      type: object
      x-struct: Elixir.SwitchboardWeb.V1.Specs.MsTeamsChannelData
      x-validate: null
    BulkSetTenantsRequest:
      description: A request to set tenants in bulk.
      example:
        tenants:
        - id: tenant_1
          name: Acme Corp, Inc.
      properties:
        tenants:
          description: The tenants to be upserted.
          items:
            $ref: '#/components/schemas/InlineTenantRequest'
          type: array
          x-struct: null
          x-validate: null
      required:
      - tenants
      title: BulkSetTenantsRequest
      type: object
      x-struct: Elixir.SwitchboardWeb.V1.Specs.BulkSetTenantsRequest
      x-validate: null
    SlackChannelData:
      description: Slack channel data.
      example:
        connections:
        - access_token: xoxb-1234567890
          channel_id: C01234567890
          user_id: U01234567890
        token:
          access_token: xoxb-1234567890
      properties:
        connections:
          description: List of Slack channel connections.
          items:
            description: A Slack connection, either an access token or an incoming webhook
            nullable: false
            oneOf:
            - $ref: '#/components/schemas/SlackTokenConnection'
            - $ref: '#/components/schemas/SlackIncomingWebhookConnection'
            type: object
            x-struct: null
            x-validate: null
          nullable: false
          type: array
          x-struct: null
          x-validate: null
        token:
          description: A Slack connection token.
          example:
            access_token: xoxb-1234567890
          nullable: true
          properties:
            access_token:
              description: A Slack access token.
              example: xoxb-1234567890
              nullable: true
              type: string
              x-struct: null
              x-validate: null
          required:
          - access_token
          title: SlackChannelDataTokenObject
          type: object
          x-struct: null
          x-validate: null
      required:
      - connections
      title: SlackChannelData
      type: object
      x-struct: Elixir.SwitchboardWeb.V1.Specs.SlackChannelData
      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
    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
    PageInfo:
      description: Pagination information for a list of resources.
      example:
        __typename: PageInfo
        after: null
        before: null
        page_size: 25
      properties:
        __typename:
          description: The typename of the schema.
          example: PageInfo
          type: string
          x-struct: null
          x-validate: null
        after:
          description: The cursor to fetch entries after.
          nullable: true
          type: string
          x-struct: null
          x-validate: null
        before:
          description: The cursor to fetch entries before.
          nullable: true
          type: string
          x-struct: null
          x-validate: null
        page_size:
          description: The number of items per page (defaults to 50).
          type: integer
          x-struct: null
          x-validate: null
      required:
      - __typename
      - page_size
      title: PageInfo
      type: object
      x-struct: Elixir.SwitchboardWeb.V1.Specs.PageInfo
      x-validate: null
    AWSSNSPushChannelDataTargetARNsOnly:
      description: AWS SNS push channel data.
      example:
        target_arns:
        - arn:aws:sns:us-west-2:123456789012:endpoint/GCM/gcmpushapp/5e3e9847-3183-3f18-a7e8-671c3a57d4b3
      properties:
        target_arns:
          description: A list of platform endpoint ARNs. See [Setting up an Amazon SNS platform endpoint for mobile notifications](https://docs.aws.amazon.com/sns/latest/dg/mobile-platform-endpoint.html).
          example:
          - arn:aws:sns:us-west-2:123456789012:endpoint/GCM/gcmpushapp/5e3e9847-3183-3f18-a7e8-671c3a57d4b3
          items:
            description: The ARN of a platform endpoint associated with a platform application and a device token. See [Setting up an Amazon SNS platform endpoint for mobile notifications](https://docs.aws.amazon.com/sns/latest/dg/mobile-platform-endpoint.html).
            nullable: false
            type: string
            x-struct: null
            x-validate: null
          nullable: false
          type: array
          x-struct: null
          x-validate: null
      required:
      - target_arns
      title: AWSSNSPushChannelDataTargetARNsOnly
      type: object
      x-struct: Elixir.SwitchboardWeb.V1.Specs.AWSSNSPushChannelDataTargetARNsOnly
      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
    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: equa

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