openapi: 3.0.3 info: title: Knock Audiences Accounts Bulk operations 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: Bulk operations paths: /v1/bulk_operations/{id}: get: callbacks: {} description: Retrieves a bulk operation (if it exists) and displays the current state of it. operationId: getBulkOperation parameters: - description: The ID of the bulk operation to retrieve. in: path name: id required: true schema: format: uuid type: string x-struct: null x-validate: null responses: '200': content: application/json: schema: $ref: '#/components/schemas/BulkOperation' description: OK summary: Get bulk operation tags: - Bulk operations x-ratelimit-tier: 4 /v1/channels/{channel_id}/messages/bulk/{action}: post: callbacks: {} description: Bulk update the status of messages for a specific channel. The channel is specified by the `channel_id` parameter. The action to perform is specified by the `action` parameter, where the action is a status change action (e.g. `archive`, `unarchive`). operationId: bulkUpdateMessagesForChannel parameters: - description: The ID of the channel to update messages for. in: path name: channel_id required: true schema: format: uuid type: string x-struct: null x-validate: null - description: The target status to be applied to the messages. in: path name: action required: true schema: enum: - seen - unseen - read - unread - archived - unarchived - interacted - archive - unarchive - delete type: string x-struct: null x-validate: null requestBody: content: application/json: example: archived: include delivery_status: delivered engagement_status: seen has_tenant: true newer_than: '2024-01-01T00:00:00Z' older_than: '2024-01-01T00:00:00Z' recipient_ids: - recipient1 - recipient2 tenants: - tenant1 - tenant2 trigger_data: '{"key":"value"}' workflows: - workflow1 - workflow2 schema: $ref: '#/components/schemas/BulkUpdateMessagesForChannelRequest' description: Params required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/BulkOperation' description: OK summary: Bulk update message statuses for channel tags: - Bulk operations x-ratelimit-tier: 2 x-retention-policy: true /v1/objects/{collection}/bulk/delete: post: callbacks: {} description: Bulk deletes objects from the specified collection. operationId: bulkDeleteObjects parameters: - description: The collection this object belongs to. in: path name: collection required: true schema: type: string x-struct: null x-validate: null requestBody: content: application/json: example: object_ids: - obj_123 - obj_456 - obj_789 schema: $ref: '#/components/schemas/BulkDeleteObjectsRequest' description: Params required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/BulkOperation' description: OK summary: Bulk delete objects tags: - Bulk operations x-ratelimit-tier: 1 /v1/objects/{collection}/bulk/subscriptions/add: post: callbacks: {} description: Add subscriptions for all objects in a single collection. If a subscription for an object in the collection already exists, it will be updated. This endpoint also handles [inline identifications](/managing-recipients/identifying-recipients#inline-identifying-recipients) for the `recipient` field. operationId: bulkAddSubscriptions parameters: - description: The collection this object belongs to. example: projects in: path name: collection required: true schema: type: string x-struct: null x-validate: null requestBody: content: application/json: example: subscriptions: - id: project-1 properties: null recipients: - id: user_1 schema: $ref: '#/components/schemas/BulkUpsertSubscriptionsRequest' description: Params required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/BulkOperation' description: OK summary: Bulk add subscriptions tags: - Bulk operations x-ratelimit-tier: 1 /v1/objects/{collection}/bulk/subscriptions/delete: post: callbacks: {} description: Delete subscriptions for many objects in a single collection type. If a subscription for an object in the collection doesn't exist, it will be skipped. operationId: bulkDeleteSubscriptions parameters: - description: The collection this object belongs to. example: projects in: path name: collection required: true schema: type: string x-struct: null x-validate: null requestBody: content: application/json: example: subscriptions: - id: subscribed-to-object-1 recipients: - collection: projects id: subscriber-project-1 - subscriber-user-1 - id: subscribed-to-object-2 recipients: - subscriber-user-2 schema: $ref: '#/components/schemas/BulkDeleteSubscriptionsRequest' description: Params required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/BulkOperation' description: OK summary: Bulk delete subscriptions tags: - Bulk operations x-ratelimit-tier: 1 /v1/objects/{collection}/bulk/set: post: callbacks: {} description: Bulk sets up to 1,000 objects at a time in the specified collection. operationId: bulkSetObjects parameters: - description: The collection this object belongs to. in: path name: collection required: true schema: type: string x-struct: null x-validate: null requestBody: content: application/json: example: objects: - id: project_1 name: My project schema: $ref: '#/components/schemas/BulkSetObjectsRequest' description: Params required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/BulkOperation' description: OK summary: Bulk set objects tags: - Bulk operations x-ratelimit-tier: 1 /v1/schedules/bulk/create: post: callbacks: {} description: Bulk creates up to 1,000 schedules at a time. This endpoint also handles [inline identifications](/managing-recipients/identifying-recipients#inline-identifying-recipients) for the `actor`, `recipient`, and `tenant` fields. operationId: bulkCreateSchedules parameters: [] requestBody: content: application/json: example: schedules: - data: key: value ending_at: null recipient: dnedry repeats: - __typename: ScheduleRepeat day_of_month: null days: - mon - tue - wed - thu - fri - sat - sun frequency: daily hours: null interval: 1 minutes: null scheduled_at: null tenant: acme_corp workflow: comment-created - data: key: value ending_at: null recipient: esattler repeats: - __typename: ScheduleRepeat day_of_month: null days: - mon - tue - wed - thu - fri - sat - sun frequency: daily hours: null interval: 1 minutes: null scheduled_at: null tenant: acme_corp workflow: comment-created schema: $ref: '#/components/schemas/BulkCreateSchedulesRequest' description: Schedule bulk creation request required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/BulkOperation' description: OK summary: Create schedules in bulk tags: - Bulk operations x-ratelimit-tier: 1 /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: - Bulk operations 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: - Bulk operations x-ratelimit-tier: 1 /v1/users/bulk/preferences: post: callbacks: {} description: Bulk sets the preferences for up to 1,000 users at a time. The preference set `:id` can be either `default` or a `tenant.id`. Learn more about [per-tenant preferences](/preferences/tenant-preferences). Note that this is a destructive operation and will replace any existing users' preferences with the preferences sent. operationId: bulkSetUserPreferences parameters: [] requestBody: content: application/json: example: preferences: __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 user_ids: - user_1 - user_2 schema: $ref: '#/components/schemas/BulkSetUserPreferencesRequest' description: Params required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/BulkOperation' description: OK summary: Bulk set preferences tags: - Bulk operations x-ratelimit-tier: 1 /v1/users/bulk/identify: post: callbacks: {} description: Identifies multiple users in a single operation. Allows creating or updating up to 1,000 users in a single batch with various properties, preferences, and channel data. operationId: bulkIdentifyUsers parameters: [] requestBody: content: application/json: example: users: - email: jane@ingen.net id: user_1 name: Jane Doe timezone: America/New_York schema: $ref: '#/components/schemas/BulkIdentifyUsersRequest' description: Params required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/BulkOperation' description: OK summary: Bulk identify users tags: - Bulk operations x-ratelimit-tier: 1 /v1/users/bulk/delete: post: callbacks: {} description: Permanently deletes up to 1,000 users at a time. operationId: bulkDeleteUsers parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/BulkDeleteUsersRequest' description: Params required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/BulkOperation' description: OK summary: Bulk delete users tags: - Bulk operations 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 BulkUpsertSubscriptionsRequest: description: A request to upsert subscriptions for many groups of 1 subscribed-to object, N subscriber recipients. example: subscriptions: - id: project-1 properties: null recipients: - id: user_1 properties: subscriptions: description: A nested list of subscriptions. items: description: A list of subscriptions. 1 subscribed-to id, and N subscriber recipients. properties: id: description: Unique identifier for the object. nullable: false type: string x-struct: null x-validate: null properties: additionalProperties: true description: The custom properties associated with the subscription relationship. nullable: true type: object x-struct: null x-validate: null recipients: description: The recipients of the subscription. You can subscribe up to 100 recipients to an object at a time. items: $ref: '#/components/schemas/RecipientRequest' nullable: false type: array x-struct: null x-validate: null required: - id - recipients type: object x-struct: null x-validate: null type: array x-struct: null x-validate: null required: - subscriptions title: BulkUpsertSubscriptionsRequest type: object x-struct: Elixir.SwitchboardWeb.V1.Specs.BulkUpsertSubscriptionsRequest 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 BulkCreateSchedulesRequest: description: A request to bulk create schedules. Accepts a list of schedules to create. Each schedule must have a single recipient. The recipients do not have to be unique. example: schedules: - data: key: value ending_at: null recipient: dnedry repeats: - __typename: ScheduleRepeat day_of_month: null days: - mon - tue - wed - thu - fri - sat - sun frequency: daily hours: null interval: 1 minutes: null scheduled_at: null tenant: acme_corp workflow: comment-created - data: key: value ending_at: null recipient: esattler repeats: - __typename: ScheduleRepeat day_of_month: null days: - mon - tue - wed - thu - fri - sat - sun frequency: daily hours: null interval: 1 minutes: null scheduled_at: null tenant: acme_corp workflow: comment-created properties: schedules: description: A list of schedules. items: description: A schedule represents a recurring workflow execution. properties: actor: description: A map of properties describing a user or an object to identify in Knock and mark as who or what performed the action. oneOf: - $ref: '#/components/schemas/RecipientRequest' - nullable: true x-struct: null x-validate: null type: object 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 ending_at: description: The ending date and time for the schedule. format: date-time nullable: true type: string x-struct: null x-validate: null recipient: $ref: '#/components/schemas/RecipientRequest' repeats: description: The repeat rule for the schedule. items: $ref: '#/components/schemas/ScheduleRepeatRule' type: array x-struct: null x-validate: null scheduled_at: description: The starting date and time for the schedule. format: date-time nullable: true type: string 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 workflow: description: The key of the workflow. nullable: false type: string x-struct: null x-validate: null required: - workflow type: object x-struct: null x-validate: null type: array x-struct: null x-validate: null required: - schedules title: BulkCreateSchedulesRequest type: object x-struct: Elixir.SwitchboardWeb.V1.Specs.BulkCreateSchedulesRequest 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 BulkDeleteUsersRequest: description: A request to delete users in bulk. example: user_ids: - user_1 - user_2 properties: user_ids: description: A list of user IDs. items: description: The unique identifier of the user. type: string x-struct: null x-validate: null type: array x-struct: null x-validate: null required: - user_ids title: BulkDeleteUsersRequest type: object x-struct: Elixir.SwitchboardWeb.V1.Specs.BulkDeleteUsersRequest x-validate: null BulkDeleteSubscriptionsRequest: description: A request to delete subscriptions for many groups of 1 subscribed-to object, N subscriber recipients. example: subscriptions: - id: subscribed-to-object-1 recipients: - collection: projects id: subscriber-project-1 - subscriber-user-1 - id: subscribed-to-object-2 recipients: - subscriber-user-2 properties: subscriptions: description: A nested list of subscriptions. items: description: A list of subscriptions. 1 subscribed-to id, and N subscriber recipients. properties: id: description: Unique identifier for the object. nullable: false type: string x-struct: null x-validate: null recipients: description: The recipients of the subscription. You can subscribe up to 100 recipients to an object at a time. items: $ref: '#/components/schemas/RecipientReference' nullable: false type: array x-struct: null x-validate: null required: - id - recipients type: object x-struct: null x-validate: null type: array x-struct: null x-validate: null required: - subscriptions title: BulkDeleteSubscriptionsRequest type: object x-struct: Elixir.SwitchboardWeb.V1.Specs.BulkDeleteSubscriptionsRequest 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 InlineIdentifyObjectRequest: additionalProperties: true description: A custom [Object](/concepts/objects) entity which belongs to a collection. example: collection: projects id: project_1 name: My project properties: channel_data: description: An optional set of [channel data](/managing-recipients/setting-channel-data) for the object. This is a list of `ChannelData` objects. oneOf: - $ref: '#/components/schemas/InlineChannelDataRequest' - nullable: true x-struct: null x-validate: null x-struct: null x-validate: null collection: description: The collection this object belongs to. nullable: false type: string x-struct: null x-validate: null created_at: description: Timestamp when the resource was created. format: date-time nullable: true type: string x-struct: null x-validate: null id: description: Unique identifier for the object. nullable: false type: string x-struct: null x-validate: null name: description: An optional name for the object. nullable: true type: string x-struct: null x-validate: null preferences: description: An optional set of [preferences](/concepts/preferences) for the object. oneOf: - $ref: '#/components/schemas/InlinePreferenceSetRequest' - nullable: true x-struct: null x-validate: null x-struct: null x-validate: null required: - id - collection title: InlineIdentifyObjectRequest type: object x-struct: Elixir.SwitchboardWeb.V1.Specs.InlineIdentifyObjectRequest 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 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 BulkIdentifyUsersRequest: description: A request to identify a list of users. example: users: - email: jane@ingen.net id: user_1 name: Jane Doe timezone: America/New_York properties: users: description: A list of users. items: $ref: '#/components/schemas/InlineIdentifyUserRequest' type: array x-struct: null x-validate: null required: - users title: BulkIdentifyUsersRequest type: object x-struct: Elixir.SwitchboardWeb.V1.Specs.BulkIdentifyUsersRequest 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: 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 BulkSetUserPreferencesRequest: description: A request to set preferences for a set of users in bulk. example: preferences: __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 user_ids: - user_1 - user_2 properties: preferences: $ref: '#/components/schemas/PreferenceSetRequest' user_ids: description: A list of user IDs. items: description: The unique identifier of the user. type: string x-struct: null x-validate: null type: array x-struct: null x-validate: null required: - preferences - user_ids title: BulkSetUserPreferencesRequest type: object x-struct: Elixir.SwitchboardWeb.V1.Specs.BulkSetUserPreferencesRequest x-validate: null BulkDeleteObjectsRequest: description: Request body for bulk deleting objects. example: object_ids: - obj_123 - obj_456 - obj_789 properties: object_ids: description: List of object IDs to delete. items: type: string x-struct: null x-validate: null type: array x-struct: null x-validate: null required: - object_ids title: BulkDeleteObjectsRequest type: object x-struct: Elixir.SwitchboardWeb.V1.Specs.Objects.BulkDeleteObjectsRequest x-validate: null DiscordIncomingWebhookConnection: description: Discord incoming webhook connection. example: incoming_webhook: url: https://example.com/webhook properties: incoming_webhook: description: Discord incoming webhook object. properties: url: description: Incoming webhook URL. example: https://example.com/webhook type: string x-struct: null x-validate: null required: - url type: object x-struct: null x-validate: null required: - incoming_webhook title: DiscordIncomingWebhookConnection type: object x-struct: Elixir.SwitchboardWeb.V1.Specs.DiscordChannelData.IncomingWebhookConnection x-validate: null InlineIdentifyUserRequest: additionalProperties: true description: A set of parameters to inline-identify a user with. Inline identifying the user will ensure that the user is available before the request is executed in Knock. It will perform an upsert for the user you're supplying, replacing any properties specified. example: channel_data: 97c5837d-c65c-4d54-aa39-080eeb81c69d: tokens: - push_token_123 email: jane@ingen.net id: user_1 name: Jane Doe preferences: default: channel_types: email: true workflows: dinosaurs-loose: channel_types: email: true timezone: America/New_York properties: avatar: description: A URL for the avatar of the user. nullable: true type: string x-struct: null x-validate: null channel_data: allOf: - $ref: '#/components/schemas/InlineChannelDataRequest' description: Channel-specific information that's needed to deliver a notification to an end provider. nullable: true x-struct: null x-validate: null created_at: description: The creation date of the user from your system. format: date-time nullable: true type: string x-struct: null x-validate: null email: description: The primary email address for the user. nullable: true type: string x-struct: null x-validate: null id: description: The unique identifier of the user. nullable: false type: string x-struct: null x-validate: null locale: description: The locale of the user. Used for [message localization](/concepts/translations). nullable: true type: string x-struct: null x-validate: null name: description: Display name of the user. nullable: true type: string x-struct: null x-validate: null phone_number: description: The [E.164](https://www.twilio.com/docs/glossary/what-e164) phone number of the user (required for SMS channels). nullable: true type: string x-struct: null x-validate: null preferences: allOf: - $ref: '#/components/schemas/InlinePreferenceSetRequest' description: A set of preferences for the user. nullable: true x-struct: null x-validate: null timezone: description: The timezone of the user. 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 required: - id title: InlineIdentifyUserRequest type: object x-struct: Elixir.SwitchboardWeb.V1.Specs.InlineIdentifyUserRequest x-validate: null AWSSNSPushChannelDataDevicesOnly: description: AWS SNS push channel data. example: devices: - locale: en-US target_arn: arn:aws:sns:us-west-2:123456789012:endpoint/GCM/gcmpushapp/5e3e9847-3183-3f18-a7e8-671c3a57d4b3 timezone: America/Los_Angeles properties: devices: description: A list of devices. Each device contains a target_arn, 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 target_arn: 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). 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 required: - target_arn type: object x-struct: null x-validate: null nullable: false type: array x-struct: null x-validate: null required: - devices title: AWSSNSPushChannelDataDevicesOnly type: object x-struct: Elixir.SwitchboardWeb.V1.Specs.AWSSNSPushChannelDataDevicesOnly x-validate: null RecipientRequest: description: Specifies a recipient in a request. This can either be a user identifier (string), an inline user request (object), or an inline object request, which is determined by the presence of a `collection` property. example: id: user_1 nullable: false oneOf: - description: The ID of the user which is used as the reference for the recipient. example: user_123 title: UserRecipient type: string x-struct: null x-validate: null - $ref: '#/components/schemas/InlineIdentifyUserRequest' - $ref: '#/components/schemas/InlineIdentifyObjectRequest' title: RecipientRequest x-struct: Elixir.SwitchboardWeb.V1.Specs.RecipientRequest x-validate: null BulkUpdateMessagesForChannelRequest: description: Updates message statuses in a specified channel. Use the `channel_id` parameter to target the channel and the `status` parameter to define what the status should be changed to (e.g. `archive`, `unarchive`). Apply to all messages or use filters to target a subset. For in-app channels, messages can be updated indefinitely via this operation. For all other channel types, messages outside the account's retention window will not be updated as part of this operation. example: archived: include delivery_status: delivered engagement_status: seen has_tenant: true newer_than: '2024-01-01T00:00:00Z' older_than: '2024-01-01T00:00:00Z' recipient_ids: - recipient1 - recipient2 tenants: - tenant1 - tenant2 trigger_data: '{"key":"value"}' workflows: - workflow1 - workflow2 properties: archived: description: Limits the results to messages with the given archived status. enum: - exclude - include - only type: string x-struct: null x-validate: null delivery_status: description: Limits the results to messages with the given delivery status. enum: - queued - sent - delivered - delivery_attempted - undelivered - not_sent - bounced type: string x-struct: null x-validate: null engagement_status: description: Limits the results to messages with the given engagement status. enum: - seen - unseen - read - unread - archived - unarchived - link_clicked - interacted type: string x-struct: null x-validate: null has_tenant: description: Limits the results to messages that have a tenant or not. type: boolean x-struct: null x-validate: null newer_than: description: Limits the results to messages inserted after the given date. format: date-time type: string x-struct: null x-validate: null older_than: description: Limits the results to messages inserted before the given date. format: date-time type: string x-struct: null x-validate: null recipient_ids: description: Limits the results to messages with the given recipient IDs. items: type: string x-struct: null x-validate: null type: array x-struct: null x-validate: null tenants: description: Limits the results to messages with the given tenant IDs. items: type: string x-struct: null x-validate: null type: array x-struct: null x-validate: null trigger_data: description: Limits the results to only messages that were generated with the given data. See [trigger data filtering](/api-reference/overview/trigger-data-filtering) for more information. type: string x-struct: null x-validate: null workflows: description: Limits the results to messages with the given workflow keys. items: type: string x-struct: null x-validate: null type: array x-struct: null x-validate: null title: BulkUpdateMessagesForChannelRequest type: object x-struct: Elixir.SwitchboardWeb.V1.Specs.BulkUpdateMessagesForChannelRequest x-validate: null ScheduleRepeatRule: description: The repeat rule for the schedule. example: __typename: ScheduleRepeat day_of_month: null days: - mon - tue - wed - thu - fri - sat - sun frequency: daily hours: null interval: 1 minutes: null properties: __typename: description: The typename of the schema. example: ScheduleRepeat type: string x-struct: null x-validate: null day_of_month: description: The day of the month to repeat the schedule. example: 1 nullable: true type: integer x-struct: null x-validate: null days: description: The days of the week to repeat the schedule. example: - mon - tue - wed - thu - fri items: description: An identifier for a day of the week. enum: - mon - tue - wed - thu - fri - sat - sun type: string x-struct: null x-validate: null nullable: true type: array x-struct: null x-validate: null frequency: description: The frequency of the schedule. enum: - daily - weekly - monthly - hourly example: daily type: string x-struct: null x-validate: null hours: description: The hour of the day to repeat the schedule. example: 0 nullable: true type: integer x-struct: null x-validate: null interval: default: 1 description: The interval of the schedule. example: 1 type: integer x-struct: null x-validate: null minutes: description: The minute of the hour to repeat the schedule. example: 0 nullable: true type: integer x-struct: null x-validate: null required: - frequency title: ScheduleRepeatRule type: object x-struct: Elixir.SwitchboardWeb.V1.Specs.ScheduleRepeatRule x-validate: null OneSignalChannelDataPlayerIdsOnly: description: OneSignal channel data. example: player_ids: - 123e4567-e89b-12d3-a456-426614174000 properties: player_ids: description: A list of OneSignal player IDs. example: - 123e4567-e89b-12d3-a456-426614174000 items: description: OneSignal player ID. format: uuid nullable: false type: string x-struct: null x-validate: null nullable: false type: array x-struct: null x-validate: null required: - player_ids title: OneSignalChannelDataPlayerIdsOnly type: object x-struct: Elixir.SwitchboardWeb.V1.Specs.OneSignalChannelDataPlayerIdsOnly x-validate: null BulkSetObjectsRequest: description: A request to set objects in bulk. example: objects: - id: project_1 name: My project properties: objects: description: A list of objects. items: $ref: '#/components/schemas/BulkSetObjectRequest' type: array x-struct: null x-validate: null required: - objects title: BulkSetObjectsRequest type: object x-struct: Elixir.SwitchboardWeb.V1.Specs.BulkSetObjectsRequest x-validate: null DiscordChannelConnection: description: Discord channel connection. example: channel_id: '123456789012345678' properties: channel_id: description: Discord channel ID. example: '123456789012345678' type: string x-struct: null x-validate: null required: - channel_id title: DiscordChannelConnection type: object x-struct: Elixir.SwitchboardWeb.V1.Specs.DiscordChannelData.ChannelConnection 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 MsTeamsIncomingWebhookConnection: description: Microsoft Teams incoming webhook connection. example: incoming_webhook: url: https://example.com/webhook properties: incoming_webhook: description: Microsoft Teams incoming webhook. properties: url: description: Microsoft Teams incoming webhook URL. example: https://example.com/webhook type: string x-struct: null x-validate: null required: - url type: object x-struct: null x-validate: null required: - incoming_webhook title: MsTeamsIncomingWebhookConnection type: object x-struct: Elixir.SwitchboardWeb.V1.Specs.MsTeamsChannelData.IncomingWebhookConnection x-validate: null BulkOperation: description: A bulk operation entity. example: __typename: BulkOperation completed_at: null error_count: 0 error_items: [] estimated_total_rows: 1000 failed_at: null id: 123e4567-e89b-12d3-a456-426614174000 inserted_at: '2024-05-22T12:00:00Z' name: Bulk operation name processed_rows: 0 progress_path: https://api.switchboard.com/v1/bulk_operations/123e4567-e89b-12d3-a456-426614174000 started_at: null status: processing success_count: 0 updated_at: '2024-05-22T12:00:00Z' properties: __typename: description: The typename of the schema. example: BulkOperation type: string x-struct: null x-validate: null completed_at: description: Timestamp when the bulk operation was completed. format: date-time nullable: true type: string x-struct: null x-validate: null error_count: description: The number of failed operations. example: 0 type: integer x-struct: null x-validate: null error_items: description: A list of items that failed to be processed. items: properties: collection: description: The collection this object belongs to. nullable: true type: string x-struct: null x-validate: null id: description: Unique identifier for the object. type: string x-struct: null x-validate: null required: - id type: object x-struct: null x-validate: null type: array x-struct: null x-validate: null estimated_total_rows: description: The estimated total number of rows to process. example: 1000 type: integer x-struct: null x-validate: null failed_at: description: Timestamp when the bulk operation failed. format: date-time nullable: true type: string x-struct: null x-validate: null id: description: Unique identifier for the bulk operation. format: uuid type: string x-struct: null x-validate: null inserted_at: description: Timestamp when the resource was created. format: date-time type: string x-struct: null x-validate: null name: description: The name of the bulk operation. example: Bulk operation name type: string x-struct: null x-validate: null processed_rows: description: The number of rows processed so far. example: 0 type: integer x-struct: null x-validate: null progress_path: description: The URI to the bulk operation's progress. format: uri type: string x-struct: null x-validate: null started_at: description: Timestamp when the bulk operation was started. format: date-time nullable: true type: string x-struct: null x-validate: null status: description: The status of the bulk operation. enum: - queued - processing - completed - failed example: queued nullable: false type: string x-struct: null x-validate: null success_count: description: The number of successful operations. example: 0 type: integer x-struct: null x-validate: null updated_at: description: The timestamp when the resource was last updated. format: date-time type: string x-struct: null x-validate: null required: - __typename - id - name - status - estimated_total_rows - processed_rows - success_count - updated_at - inserted_at title: BulkOperation type: object x-struct: Elixir.SwitchboardWeb.V1.Specs.BulkOperation x-validate: null BulkSetObjectRequest: additionalProperties: true description: A custom [Object](/concepts/objects) entity which belongs to a collection. example: id: project_1 name: My project properties: channel_data: description: An optional set of [channel data](/managing-recipients/setting-channel-data) for the object. This is a list of `ChannelData` objects. oneOf: - $ref: '#/components/schemas/InlineChannelDataRequest' - nullable: true x-struct: null x-validate: null x-struct: null x-validate: null created_at: description: Timestamp when the resource was created. format: date-time nullable: true type: string x-struct: null x-validate: null id: description: Unique identifier for the object. nullable: false type: string x-struct: null x-validate: null name: description: An optional name for the object. nullable: true type: string x-struct: null x-validate: null preferences: description: An optional set of [preferences](/concepts/preferences) for the object. oneOf: - $ref: '#/components/schemas/InlinePreferenceSetRequest' - nullable: true x-struct: null x-validate: null x-struct: null x-validate: null required: - id title: BulkSetObjectRequest type: object x-struct: Elixir.SwitchboardWeb.V1.Specs.BulkSetObjectRequest 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 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 MsTeamsTokenConnection: description: Microsoft Teams token connection. example: 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 properties: ms_teams_channel_id: description: Microsoft Teams channel ID. format: uuid nullable: true type: string x-struct: null x-validate: null ms_teams_team_id: description: Microsoft Teams team ID. format: uuid nullable: true type: string x-struct: null x-validate: null ms_teams_tenant_id: description: Microsoft Teams tenant ID. format: uuid nullable: true type: string x-struct: null x-validate: null ms_teams_user_id: description: Microsoft Teams user ID. format: uuid nullable: true type: string x-struct: null x-validate: null title: MsTeamsTokenConnection type: object x-struct: Elixir.SwitchboardWeb.V1.Specs.MsTeamsChannelData.TokenConnection 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 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.