API Specifications


API Specifications

Exploring the layers of API specifications in use across the space.

Begin the Walk Through

OpenAPI

This is the OpenAPI for the Slack web API, definiing the surface area of the web API, making each of the available API paths available in a machine readable format, leveraging a common specification to define a single instance of a request and response API.

            openapi: 3.0.0
            info:
              title: Slack Web API
              description: One way to interact with the Slack platform is its HTTP RPC-based Web API, a collection of methods requiring OAuth 2.0-based user, bot, or workspace tokens blessed with related OAuth scopes.
              contact:
                name: Slack developer relations
                url: https://api.slack.com/support
              version: '1.5.0'
            servers:
            - url: https://slack.com/api
              variables: {}
            - url: https://slack.com/oauth
              variables: {}
            paths:
              /conversations.archive:
                post:
                  tags:
                  - conversations
                  summary: conversations_archive
                  description: Archives a conversation.
                  externalDocs:
                    description: API method documentation
                    url: https://api.slack.com/methods/conversations.archive
                  operationId: conversations_archive
                  parameters:
                  - name: token
                    in: header
                    description: 'Authentication token. Requires scope: `conversations:write`'
                    style: simple
                    schema:
                      type: string
                  requestBody:
                    content:
                      application/x-www-form-urlencoded:
                        encoding: {}
                        schema:
                          type: object
                          properties:
                            channel:
                              type: string
                              description: ID of conversation to archive
                    required: false
                  responses:
                    200:
                      description: Typical success response
                      headers: {}
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.archivesuccessschema'
                          example:
                            ok: true
                    default:
                      description: Typical error response
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.archiveerrorschema'
                          example:
                            error: channel_not_found
                            ok: false
                  deprecated: false
                  security:
                  - oauth2:
                    - channels:write
                    - groups:write
                    - im:write
                    - mpim:write
              /conversations.close:
                post:
                  tags:
                  - conversations
                  summary: conversations_close
                  description: Closes a direct message or multi-person direct message.
                  externalDocs:
                    description: API method documentation
                    url: https://api.slack.com/methods/conversations.close
                  operationId: conversations_close
                  parameters:
                  - name: token
                    in: header
                    description: 'Authentication token. Requires scope: `conversations:write`'
                    style: simple
                    schema:
                      type: string
                  requestBody:
                    content:
                      application/x-www-form-urlencoded:
                        encoding: {}
                        schema:
                          type: object
                          properties:
                            channel:
                              type: string
                              description: Conversation to close.
                    required: false
                  responses:
                    200:
                      description: Typical success response
                      headers: {}
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.closesuccessschema'
                          example:
                            ok: true
                    default:
                      description: Typical error response
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.closeerrorschema'
                          example:
                            error: channel_not_found
                            ok: false
                  deprecated: false
                  security:
                  - oauth2:
                    - channels:write
                    - groups:write
                    - im:write
                    - mpim:write
              /conversations.create:
                post:
                  tags:
                  - conversations
                  summary: conversations_create
                  description: Initiates a public or private channel-based conversation
                  externalDocs:
                    description: API method documentation
                    url: https://api.slack.com/methods/conversations.create
                  operationId: conversations_create
                  parameters:
                  - name: token
                    in: header
                    description: 'Authentication token. Requires scope: `conversations:write`'
                    style: simple
                    schema:
                      type: string
                  requestBody:
                    content:
                      application/x-www-form-urlencoded:
                        encoding: {}
                        schema:
                          type: object
                          properties:
                            name:
                              type: string
                              description: Name of the public or private channel to create
                            user_ids:
                              type: string
                              description: '**Required** for workspace apps. A list of between 1 and 30 human users that will be added to the newly-created conversation. This argument has no effect when used by classic Slack apps.'
                            is_private:
                              type: boolean
                              description: Create a private channel instead of a public one
                    required: false
                  responses:
                    200:
                      description: If successful, the command returns a rather stark [conversation object](/types/conversation)
                      headers: {}
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.createsuccessschema'
                    default:
                      description: Typical error response when name already in use
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.createerrorschema'
                          example:
                            error: name_taken
                            ok: false
                  deprecated: false
                  security:
                  - oauth2:
                    - channels:write
                    - groups:write
                    - im:write
                    - mpim:write
              /conversations.history:
                get:
                  tags:
                  - conversations
                  summary: conversations_history
                  description: Fetches a conversation's history of messages and events.
                  externalDocs:
                    description: API method documentation
                    url: https://api.slack.com/methods/conversations.history
                  operationId: conversations_history
                  parameters:
                  - name: inclusive
                    in: query
                    description: Include messages with latest or oldest timestamp in results only when either timestamp is specified.
                    style: form
                    explode: true
                    schema:
                      type: boolean
                  - name: cursor
                    in: query
                    description: Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Default value fetches the first "page" of the collection. See [pagination](/docs/pagination) for more detail.
                    style: form
                    explode: true
                    schema:
                      type: string
                  - name: token
                    in: query
                    description: 'Authentication token. Requires scope: `conversations:history`'
                    style: form
                    explode: true
                    schema:
                      type: string
                  - name: limit
                    in: query
                    description: The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the users list hasn't been reached.
                    style: form
                    explode: true
                    schema:
                      type: integer
                      format: int32
                  - name: oldest
                    in: query
                    description: Start of time range of messages to include in results.
                    style: form
                    explode: true
                    schema:
                      type: number
                      format: double
                  - name: channel
                    in: query
                    description: Conversation ID to fetch history for.
                    style: form
                    explode: true
                    schema:
                      type: string
                  - name: latest
                    in: query
                    description: End of time range of messages to include in results.
                    style: form
                    explode: true
                    schema:
                      type: number
                      format: double
                  responses:
                    200:
                      description: Typical success response containing a channel's messages
                      headers: {}
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.historysuccessschema'
                    default:
                      description: Typical error response
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.historyerrorschema'
                          example:
                            error: channel_not_found
                            ok: false
                  deprecated: false
                  security:
                  - oauth2:
                    - channels:history
                    - groups:history
                    - im:history
                    - mpim:history
              /conversations.info:
                get:
                  tags:
                  - conversations
                  summary: conversations_info
                  description: Retrieve information about a conversation.
                  externalDocs:
                    description: API method documentation
                    url: https://api.slack.com/methods/conversations.info
                  operationId: conversations_info
                  parameters:
                  - name: include_num_members
                    in: query
                    description: Set to `true` to include the member count for the specified conversation. Defaults to `false`
                    style: form
                    explode: true
                    schema:
                      type: boolean
                  - name: token
                    in: query
                    description: 'Authentication token. Requires scope: `conversations:read`'
                    style: form
                    explode: true
                    schema:
                      type: string
                  - name: channel
                    in: query
                    description: Conversation ID to learn more about
                    style: form
                    explode: true
                    schema:
                      type: string
                  - name: include_locale
                    in: query
                    description: Set this to `true` to receive the locale for this conversation. Defaults to `false`
                    style: form
                    explode: true
                    schema:
                      type: boolean
                  responses:
                    200:
                      description: Typical success response for a public channel. (Also, a response from a private channel and a multi-party IM is very similar to this example.)
                      headers: {}
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.infosuccessschema'
                    default:
                      description: Typical error response when a channel cannot be found
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.infoerrorschema'
                          example:
                            error: channel_not_found
                            ok: false
                  deprecated: false
                  security:
                  - oauth2:
                    - channels:read
                    - groups:read
                    - im:read
                    - mpim:read
              /conversations.invite:
                post:
                  tags:
                  - conversations
                  summary: conversations_invite
                  description: Invites users to a channel.
                  externalDocs:
                    description: API method documentation
                    url: https://api.slack.com/methods/conversations.invite
                  operationId: conversations_invite
                  parameters:
                  - name: token
                    in: header
                    description: 'Authentication token. Requires scope: `conversations:write`'
                    style: simple
                    schema:
                      type: string
                  requestBody:
                    content:
                      application/x-www-form-urlencoded:
                        encoding: {}
                        schema:
                          type: object
                          properties:
                            users:
                              type: string
                              description: A comma separated list of user IDs. Up to 1000 users may be listed.
                            channel:
                              type: string
                              description: The ID of the public or private channel to invite user(s) to.
                    required: false
                  responses:
                    200:
                      description: Typical success response when an invitation is extended
                      headers: {}
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.inviteerrorschema'
                    default:
                      description: Typical error response when an invite is attempted on a conversation type that does not support it
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.inviteerrorschema1'
                          example:
                            error: method_not_supported_for_channel_type
                            ok: false
                  deprecated: false
                  security:
                  - oauth2:
                    - channels:write
                    - groups:write
                    - im:write
                    - mpim:write
              /conversations.join:
                post:
                  tags:
                  - conversations
                  summary: conversations_join
                  description: Joins an existing conversation.
                  externalDocs:
                    description: API method documentation
                    url: https://api.slack.com/methods/conversations.join
                  operationId: conversations_join
                  parameters:
                  - name: token
                    in: header
                    description: 'Authentication token. Requires scope: `channels:write`'
                    style: simple
                    schema:
                      type: string
                  requestBody:
                    content:
                      application/x-www-form-urlencoded:
                        encoding: {}
                        schema:
                          type: object
                          properties:
                            channel:
                              type: string
                              description: ID of conversation to join
                    required: false
                  responses:
                    200:
                      description: Typical success response
                      headers: {}
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.joinsuccessschema'
                    default:
                      description: Typical error response if the conversation is archived and cannot be joined
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.joinerrorschema'
                          example:
                            error: is_archived
                            ok: false
                  deprecated: false
                  security:
                  - oauth2:
                    - channels:write
              /conversations.kick:
                post:
                  tags:
                  - conversations
                  summary: conversations_kick
                  description: Removes a user from a conversation.
                  externalDocs:
                    description: API method documentation
                    url: https://api.slack.com/methods/conversations.kick
                  operationId: conversations_kick
                  parameters:
                  - name: token
                    in: header
                    description: 'Authentication token. Requires scope: `conversations:write`'
                    style: simple
                    schema:
                      type: string
                  requestBody:
                    content:
                      application/x-www-form-urlencoded:
                        encoding: {}
                        schema:
                          type: object
                          properties:
                            user:
                              type: string
                              description: User ID to be removed.
                            channel:
                              type: string
                              description: ID of conversation to remove user from.
                    required: false
                  responses:
                    200:
                      description: Typical success response
                      headers: {}
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.kicksuccessschema'
                          example:
                            ok: true
                    default:
                      description: Typical error response when you attempt to kick yourself from a channel
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.kickerrorschema'
                          example:
                            error: cant_kick_self
                            ok: false
                  deprecated: false
                  security:
                  - oauth2:
                    - channels:write
                    - groups:write
                    - im:write
                    - mpim:write
              /conversations.leave:
                post:
                  tags:
                  - conversations
                  summary: conversations_leave
                  description: Leaves a conversation.
                  externalDocs:
                    description: API method documentation
                    url: https://api.slack.com/methods/conversations.leave
                  operationId: conversations_leave
                  parameters:
                  - name: token
                    in: header
                    description: 'Authentication token. Requires scope: `conversations:write`'
                    style: simple
                    schema:
                      type: string
                  requestBody:
                    content:
                      application/x-www-form-urlencoded:
                        encoding: {}
                        schema:
                          type: object
                          properties:
                            channel:
                              type: string
                              description: Conversation to leave
                    required: false
                  responses:
                    200:
                      description: Typical success response
                      headers: {}
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.leavesuccessschema'
                          example:
                            ok: true
                    default:
                      description: Typical error response when attempting to leave a workspace's "general" channel
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.leaveerrorschema'
                          example:
                            error: cant_leave_general
                            ok: false
                  deprecated: false
                  security:
                  - oauth2:
                    - channels:write
                    - groups:write
                    - im:write
                    - mpim:write
              /conversations.list:
                get:
                  tags:
                  - conversations
                  summary: conversations_list
                  description: Lists all channels in a Slack team.
                  externalDocs:
                    description: API method documentation
                    url: https://api.slack.com/methods/conversations.list
                  operationId: conversations_list
                  parameters:
                  - name: cursor
                    in: query
                    description: Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Default value fetches the first "page" of the collection. See [pagination](/docs/pagination) for more detail.
                    style: form
                    explode: true
                    schema:
                      type: string
                  - name: token
                    in: query
                    description: 'Authentication token. Requires scope: `conversations:read`'
                    style: form
                    explode: true
                    schema:
                      type: string
                  - name: limit
                    in: query
                    description: The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the list hasn't been reached. Must be an integer no larger than 1000.
                    style: form
                    explode: true
                    schema:
                      type: integer
                      format: int32
                  - name: exclude_archived
                    in: query
                    description: Set to `true` to exclude archived channels from the list
                    style: form
                    explode: true
                    schema:
                      type: boolean
                  - name: types
                    in: query
                    description: Mix and match channel types by providing a comma-separated list of any combination of `public_channel`, `private_channel`, `mpim`, `im`
                    style: form
                    explode: true
                    schema:
                      type: string
                  responses:
                    200:
                      description: Typical success response with only public channels
                      headers: {}
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.listsuccessschema'
                    default:
                      description: Typical error response
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.listerrorschema'
                          example:
                            error: invalid_auth
                            ok: false
                  deprecated: false
                  security:
                  - oauth2:
                    - channels:read
                    - groups:read
                    - im:read
                    - mpim:read
              /conversations.members:
                get:
                  tags:
                  - conversations
                  summary: conversations_members
                  description: Retrieve members of a conversation.
                  externalDocs:
                    description: API method documentation
                    url: https://api.slack.com/methods/conversations.members
                  operationId: conversations_members
                  parameters:
                  - name: cursor
                    in: query
                    description: Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Default value fetches the first "page" of the collection. See [pagination](/docs/pagination) for more detail.
                    style: form
                    explode: true
                    schema:
                      type: string
                  - name: token
                    in: query
                    description: 'Authentication token. Requires scope: `conversations:read`'
                    style: form
                    explode: true
                    schema:
                      type: string
                  - name: limit
                    in: query
                    description: The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the users list hasn't been reached.
                    style: form
                    explode: true
                    schema:
                      type: integer
                      format: int32
                  - name: channel
                    in: query
                    description: ID of the conversation to retrieve members for
                    style: form
                    explode: true
                    schema:
                      type: string
                  responses:
                    200:
                      description: Typical paginated success response
                      headers: {}
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.memberssuccessschema'
                          example:
                            members:
                            - U023BECGF
                            - U061F7AUR
                            - W012A3CDE
                            ok: true
                            response_metadata:
                              next_cursor: e3VzZXJfaWQ6IFcxMjM0NTY3fQ==
                    default:
                      description: Typical error response when an invalid cursor is provided
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.memberserrorschema'
                          example:
                            error: invalid_cursor
                            ok: false
                  deprecated: false
                  security:
                  - oauth2:
                    - channels:read
                    - groups:read
                    - im:read
                    - mpim:read
              /conversations.open:
                post:
                  tags:
                  - conversations
                  summary: conversations_open
                  description: Opens or resumes a direct message or multi-person direct message.
                  externalDocs:
                    description: API method documentation
                    url: https://api.slack.com/methods/conversations.open
                  operationId: conversations_open
                  parameters:
                  - name: token
                    in: header
                    description: 'Authentication token. Requires scope: `conversations:write`'
                    style: simple
                    schema:
                      type: string
                  requestBody:
                    content:
                      application/x-www-form-urlencoded:
                        encoding: {}
                        schema:
                          type: object
                          properties:
                            return_im:
                              type: boolean
                              description: Boolean, indicates you want the full IM channel definition in the response.
                            users:
                              type: string
                              description: Comma separated lists of users. If only one user is included, this creates a 1:1 DM.  The ordering of the users is preserved whenever a multi-person direct message is returned. Supply a `channel` when not supplying `users`.
                            channel:
                              type: string
                              description: Resume a conversation by supplying an `im` or `mpim`'s ID. Or provide the `users` field instead.
                    required: false
                  responses:
                    200:
                      description: Typical success response
                      headers: {}
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.opensuccessschema'
                    default:
                      description: Typical error response
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.openerrorschema'
                          example:
                            error: channel_not_found
                            ok: false
                  deprecated: false
                  security:
                  - oauth2:
                    - channels:write
                    - groups:write
                    - im:write
                    - mpim:write
              /conversations.rename:
                post:
                  tags:
                  - conversations
                  summary: conversations_rename
                  description: Renames a conversation.
                  externalDocs:
                    description: API method documentation
                    url: https://api.slack.com/methods/conversations.rename
                  operationId: conversations_rename
                  parameters:
                  - name: token
                    in: header
                    description: 'Authentication token. Requires scope: `conversations:write`'
                    style: simple
                    schema:
                      type: string
                  requestBody:
                    content:
                      application/x-www-form-urlencoded:
                        encoding: {}
                        schema:
                          type: object
                          properties:
                            name:
                              type: string
                              description: New name for conversation.
                            channel:
                              type: string
                              description: ID of conversation to rename
                    required: false
                  responses:
                    200:
                      description: Typical success response
                      headers: {}
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.renamesuccessschema'
                    default:
                      description: Typical error response when the calling user is not a member of the conversation
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.renameerrorschema'
                          example:
                            error: not_in_channel
                            ok: false
                  deprecated: false
                  security:
                  - oauth2:
                    - channels:write
                    - groups:write
                    - im:write
                    - mpim:write
              /conversations.replies:
                get:
                  tags:
                  - conversations
                  summary: conversations_replies
                  description: Retrieve a thread of messages posted to a conversation
                  externalDocs:
                    description: API method documentation
                    url: https://api.slack.com/methods/conversations.replies
                  operationId: conversations_replies
                  parameters:
                  - name: inclusive
                    in: query
                    description: Include messages with latest or oldest timestamp in results only when either timestamp is specified.
                    style: form
                    explode: true
                    schema:
                      type: boolean
                  - name: ts
                    in: query
                    description: Unique identifier of a thread's parent message.
                    style: form
                    explode: true
                    schema:
                      type: number
                      format: double
                  - name: cursor
                    in: query
                    description: Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Default value fetches the first "page" of the collection. See [pagination](/docs/pagination) for more detail.
                    style: form
                    explode: true
                    schema:
                      type: string
                  - name: token
                    in: query
                    description: 'Authentication token. Requires scope: `conversations:history`'
                    style: form
                    explode: true
                    schema:
                      type: string
                  - name: limit
                    in: query
                    description: The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the users list hasn't been reached.
                    style: form
                    explode: true
                    schema:
                      type: integer
                      format: int32
                  - name: oldest
                    in: query
                    description: Start of time range of messages to include in results.
                    style: form
                    explode: true
                    schema:
                      type: number
                      format: double
                  - name: channel
                    in: query
                    description: Conversation ID to fetch thread from.
                    style: form
                    explode: true
                    schema:
                      type: string
                  - name: latest
                    in: query
                    description: End of time range of messages to include in results.
                    style: form
                    explode: true
                    schema:
                      type: number
                      format: double
                  responses:
                    200:
                      description: Typical success response
                      headers: {}
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.repliessuccessschema'
                    default:
                      description: Typical error response
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.replieserrorschema'
                          example:
                            error: thread_not_found
                            ok: false
                  deprecated: false
                  security:
                  - oauth2:
                    - channels:history
                    - groups:history
                    - im:history
                    - mpim:history
              /conversations.setPurpose:
                post:
                  tags:
                  - conversations
                  summary: conversations_setPurpose
                  description: Sets the purpose for a conversation.
                  externalDocs:
                    description: API method documentation
                    url: https://api.slack.com/methods/conversations.setPurpose
                  operationId: conversations_setPurpose
                  parameters:
                  - name: token
                    in: header
                    description: 'Authentication token. Requires scope: `conversations:write`'
                    style: simple
                    schema:
                      type: string
                  requestBody:
                    content:
                      application/x-www-form-urlencoded:
                        encoding: {}
                        schema:
                          type: object
                          properties:
                            purpose:
                              type: string
                              description: A new, specialer purpose
                            channel:
                              type: string
                              description: Conversation to set the purpose of
                    required: false
                  responses:
                    200:
                      description: Typical success response
                      headers: {}
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.setPurposesuccessschema'
                    default:
                      description: Typical error response
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.setPurposeerrorschema'
                          example:
                            error: invalid_auth
                            ok: false
                  deprecated: false
                  security:
                  - oauth2:
                    - channels:write
                    - groups:write
                    - im:write
                    - mpim:write
              /conversations.setTopic:
                post:
                  tags:
                  - conversations
                  summary: conversations_setTopic
                  description: Sets the topic for a conversation.
                  externalDocs:
                    description: API method documentation
                    url: https://api.slack.com/methods/conversations.setTopic
                  operationId: conversations_setTopic
                  parameters:
                  - name: token
                    in: header
                    description: 'Authentication token. Requires scope: `conversations:write`'
                    style: simple
                    schema:
                      type: string
                  requestBody:
                    content:
                      application/x-www-form-urlencoded:
                        encoding: {}
                        schema:
                          type: object
                          properties:
                            topic:
                              type: string
                              description: The new topic string. Does not support formatting or linkification.
                            channel:
                              type: string
                              description: Conversation to set the topic of
                    required: false
                  responses:
                    200:
                      description: Typical success response
                      headers: {}
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.setTopicsuccessschema'
                    default:
                      description: Typical error response
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.setTopicerrorschema'
                          example:
                            error: invalid_auth
                            ok: false
                  deprecated: false
                  security:
                  - oauth2:
                    - channels:write
                    - groups:write
                    - im:write
                    - mpim:write
              /conversations.unarchive:
                post:
                  tags:
                  - conversations
                  summary: conversations_unarchive
                  description: Reverses conversation archival.
                  externalDocs:
                    description: API method documentation
                    url: https://api.slack.com/methods/conversations.unarchive
                  operationId: conversations_unarchive
                  parameters:
                  - name: token
                    in: header
                    description: 'Authentication token. Requires scope: `conversations:write`'
                    style: simple
                    schema:
                      type: string
                  requestBody:
                    content:
                      application/x-www-form-urlencoded:
                        encoding: {}
                        schema:
                          type: object
                          properties:
                            channel:
                              type: string
                              description: ID of conversation to unarchive
                    required: false
                  responses:
                    200:
                      description: Typical success response
                      headers: {}
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.unarchivesuccessschema'
                          example:
                            ok: true
                    default:
                      description: Typical error response
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/conversations.unarchiveerrorschema'
                          example:
                            error: channel_not_found
                            ok: false
                  deprecated: false
                  security:
                  - oauth2:
                    - channels:write
                    - groups:write
                    - im:write
                    - mpim:write
            components:
              schemas:
                BotProfileObject:
                  title: BotProfileObject
                  required:
                  - app_id
                  - deleted
                  - icons
                  - id
                  - name
                  - team_id
                  - updated
                  type: object
                  properties:
                    app_id:
                      pattern: ^A[A-Z0-9]{1,}$
                      type: string
                    deleted:
                      type: boolean
                    icons:
                      $ref: '#/components/schemas/Icons'
                    id:
                      pattern: ^B[A-Z0-9]{8,}$
                      type: string
                    name:
                      type: string
                    team_id:
                      pattern: ^[T][A-Z0-9]{2,}$
                      type: string
                    updated:
                      type: integer
                      format: int32
                ChannelObject:
                  title: ChannelObject
                  required:
                  - created
                  - creator
                  - id
                  - is_channel
                  - is_mpim
                  - is_org_shared
                  - is_private
                  - is_shared
                  - members
                  - name
                  - name_normalized
                  - purpose
                  - topic
                  type: object
                  properties:
                    accepted_user:
                      pattern: ^[UW][A-Z0-9]{2,}$
                      type: string
                    created:
                      type: integer
                      format: int32
                    creator:
                      pattern: ^[UW][A-Z0-9]{2,}$
                      type: string
                    id:
                      pattern: ^[C][A-Z0-9]{2,}$
                      type: string
                    is_archived:
                      type: boolean
                    is_channel:
                      type: boolean
                    is_frozen:
                      type: boolean
                    is_general:
                      type: boolean
                    is_member:
                      type: boolean
                    is_moved:
                      type: integer
                      format: int32
                    is_mpim:
                      type: boolean
                    is_non_threadable:
                      type: boolean
                    is_org_shared:
                      type: boolean
                    is_pending_ext_shared:
                      type: boolean
                    is_private:
                      type: boolean
                    is_read_only:
                      type: boolean
                    is_shared:
                      type: boolean
                    is_thread_only:
                      type: boolean
                    last_read:
                      pattern: ^\d{10}\.\d{6}$
                      type: string
                    latest:
                      type: array
                      items:
                        $ref: '#/components/schemas/Messageobject'
                      description: ''
                    members:
                      minItems: 0
                      uniqueItems: true
                      type: array
                      items:
                        pattern: ^[UW][A-Z0-9]{2,}$
                        type: string
                      description: ''
                    name:
                      type: string
                    name_normalized:
                      type: string
                    num_members:
                      type: integer
                      format: int32
                    pending_shared:
                      minItems: 0
                      uniqueItems: true
                      type: array
                      items:
                        pattern: ^[T][A-Z0-9]{2,}$
                        type: string
                      description: ''
                    previous_names:
                      minItems: 0
                      uniqueItems: true
                      type: array
                      items:
                        type: string
                      description: ''
                    priority:
                      type: number
                    purpose:
                      $ref: '#/components/schemas/Purpose'
                    topic:
                      $ref: '#/components/schemas/Topic'
                    unlinked:
                      type: integer
                      format: int32
                    unread_count:
                      type: integer
                      format: int32
                    unread_count_display:
                      type: integer
                      format: int32
                FileCommentObject:
                  title: FileCommentObject
                  required:
                  - comment
                  - created
                  - id
                  - is_intro
                  - timestamp
                  - user
                  type: object
                  properties:
                    comment:
                      type: string
                    created:
                      type: integer
                      format: int32
                    id:
                      pattern: ^Fc[A-Z0-9]{8,}$
                      type: string
                    is_intro:
                      type: boolean
                    is_starred:
                      type: boolean
                    num_stars:
                      type: integer
                      format: int32
                    pinned_info:
                      type: object
                    pinned_to:
                      type: array
                      items:
                        pattern: ^[CGD][A-Z0-9]{8,}$
                        type: string
                      description: ''
                    reactions:
                      type: array
                      items:
                        $ref: '#/components/schemas/Reactionobject'
                      description: ''
                    timestamp:
                      type: integer
                      format: int32
                    user:
                      pattern: ^[UW][A-Z0-9]{2,}$
                      type: string
                objs_enterprise_user:
                  title: objs_enterprise_user
                  required:
                  - enterprise_id
                  - enterprise_name
                  - id
                  - is_admin
                  - is_owner
                  - teams
                  type: object
                  properties:
                    enterprise_id:
                      pattern: ^[E][A-Z0-9]{8,}$
                      type: string
                    enterprise_name:
                      type: string
                    id:
                      pattern: ^[W][A-Z0-9]{8,}$
                      type: string
                    is_admin:
                      type: boolean
                    is_owner:
                      type: boolean
                    teams:
                      minItems: 1
                      uniqueItems: true
                      type: array
                      items:
                        pattern: ^[T][A-Z0-9]{2,}$
                        type: string
                      description: ''
                fileobject:
                  title: fileobject
                  type: object
                  properties:
                    channels:
                      uniqueItems: true
                      type: array
                      items:
                        pattern: ^[C][A-Z0-9]{2,}$
                        type: string
                      description: ''
                    comments_count:
                      type: integer
                      format: int32
                    created:
                      type: integer
                      format: int32
                    date_delete:
                      type: integer
                      format: int32
                    display_as_bot:
                      type: boolean
                    editable:
                      type: boolean
                    editor:
                      pattern: ^[UW][A-Z0-9]{2,}$
                      type: string
                    external_id:
                      type: string
                    external_type:
                      type: string
                    external_url:
                      type: string
                    filetype:
                      type: string
                    groups:
                      uniqueItems: true
                      type: array
                      items:
                        pattern: ^[G][A-Z0-9]{8,}$
                        type: string
                      description: ''
                    has_rich_preview:
                      type: boolean
                    id:
                      pattern: ^[F][A-Z0-9]{8,}$
                      type: string
                    image_exif_rotation:
                      type: integer
                      format: int32
                    ims:
                      uniqueItems: true
                      type: array
                      items:
                        pattern: ^[D][A-Z0-9]{8,}$
                        type: string
                      description: ''
                    is_external:
                      type: boolean
                    is_public:
                      type: boolean
                    is_starred:
                      type: boolean
                    is_tombstoned:
                      type: boolean
                    last_editor:
                      pattern: ^[UW][A-Z0-9]{2,}$
                      type: string
                    mimetype:
                      type: string
                    mode:
                      type: string
                    name:
                      type: string
                    non_owner_editable:
                      type: boolean
                    num_stars:
                      type: integer
                      format: int32
                    original_h:
                      type: integer
                      format: int32
                    original_w:
                      type: integer
                      format: int32
                    permalink:
                      type: string
                    permalink_public:
                      type: string
                    pinned_info:
                      type: object
                    pinned_to:
                      type: array
                      items:
                        pattern: ^[CGD][A-Z0-9]{8,}$
                        type: string
                      description: ''
                    pretty_type:
                      type: string
                    preview:
                      type: string
                    public_url_shared:
                      type: boolean
                    reactions:
                      type: array
                      items:
                        $ref: '#/components/schemas/Reactionobject'
                      description: ''
                    shares:
                      $ref: '#/components/schemas/Shares'
                    size:
                      type: integer
                      format: int32
                    source_team:
                      pattern: ^[T][A-Z0-9]{2,}$
                      type: string
                    state:
                      type: string
                    thumb_1024:
                      type: string
                    thumb_1024_h:
                      type: integer
                      format: int32
                    thumb_1024_w:
                      type: integer
                      format: int32
                    thumb_160:
                      type: string
                    thumb_360:
                      type: string
                    thumb_360_h:
                      type: integer
                      format: int32
                    thumb_360_w:
                      type: integer
                      format: int32
                    thumb_480:
                      type: string
                    thumb_480_h:
                      type: integer
                      format: int32
                    thumb_480_w:
                      type: integer
                      format: int32
                    thumb_64:
                      type: string
                    thumb_720:
                      type: string
                    thumb_720_h:
                      type: integer
                      format: int32
                    thumb_720_w:
                      type: integer
                      format: int32
                    thumb_80:
                      type: string
                    thumb_800:
                      type: string
                    thumb_800_h:
                      type: integer
                      format: int32
                    thumb_800_w:
                      type: integer
                      format: int32
                    thumb_960:
                      type: string
                    thumb_960_h:
                      type: integer
                      format: int32
                    thumb_960_w:
                      type: integer
                      format: int32
                    thumb_tiny:
                      type: string
                    timestamp:
                      type: integer
                      format: int32
                    title:
                      type: string
                    updated:
                      type: integer
                      format: int32
                    url_private:
                      type: string
                    url_private_download:
                      type: string
                    user:
                      type: string
                    user_team:
                      pattern: ^[T][A-Z0-9]{2,}$
                      type: string
                    username:
                      type: string
                Groupobject:
                  title: Groupobject
                  required:
                  - created
                  - creator
                  - id
                  - is_group
                  - name
                  - name_normalized
                  - purpose
                  - topic
                  type: object
                  properties:
                    created:
                      type: integer
                      format: int32
                    creator:
                      pattern: ^[UW][A-Z0-9]{2,}$
                      type: string
                    id:
                      pattern: ^[G][A-Z0-9]{8,}$
                      type: string
                    is_archived:
                      type: boolean
                    is_deleted:
                      type: boolean
                    is_group:
                      type: boolean
                    is_moved:
                      type: integer
                      format: int32
                    is_mpim:
                      type: boolean
                    is_open:
                      type: boolean
                    is_pending_ext_shared:
                      type: boolean
                    is_read_only:
                      type: boolean
                    is_thread_only:
                      type: boolean
                    last_read:
                      pattern: ^\d{10}\.\d{6}$
                      type: string
                    latest:
                      type: array
                      items:
                        $ref: '#/components/schemas/Messageobject'
                      description: ''
                    members:
                      minItems: 1
                      uniqueItems: true
                      type: array
                      items:
                        pattern: ^[UW][A-Z0-9]{2,}$
                        type: string
                      description: ''
                    name:
                      type: string
                    name_normalized:
                      type: string
                    num_members:
                      type: integer
                      format: int32
                    parent_group:
                      pattern: ^[G][A-Z0-9]{8,}$
                      type: string
                    priority:
                      type: number
                    purpose:
                      $ref: '#/components/schemas/Purpose'
                    topic:
                      $ref: '#/components/schemas/Topic'
                    unread_count:
                      type: integer
                      format: int32
                    unread_count_display:
                      type: integer
                      format: int32
                objs_icon:
                  title: objs_icon
                  type: object
                  properties:
                    image_102:
                      type: string
                    image_132:
                      type: string
                    image_230:
                      type: string
                    image_34:
                      type: string
                    image_44:
                      type: string
                    image_68:
                      type: string
                    image_88:
                      type: string
                    image_default:
                      type: boolean
                IMObject:
                  title: IMObject
                  required:
                  - created
                  - id
                  - is_im
                  - is_org_shared
                  - is_user_deleted
                  - user
                  type: object
                  properties:
                    created:
                      type: integer
                      format: int32
                    id:
                      pattern: ^[D][A-Z0-9]{8,}$
                      type: string
                    is_app_home:
                      type: boolean
                    is_archived:
                      type: boolean
                    is_ext_shared:
                      type: boolean
                    is_frozen:
                      type: boolean
                    is_im:
                      type: boolean
                    is_org_shared:
                      type: boolean
                    is_shared:
                      type: boolean
                    is_user_deleted:
                      type: boolean
                    priority:
                      type: number
                    user:
                      pattern: ^[UW][A-Z0-9]{2,}$
                      type: string
                Messageobject:
                  title: Messageobject
                  required:
                  - text
                  - ts
                  - type
                  type: object
                  properties:
                    attachments:
                      minItems: 1
                      uniqueItems: true
                      type: array
                      items:
                        $ref: '#/components/schemas/Attachment'
                      description: ''
                    blocks:
                      type: array
                      items:
                        $ref: '#/components/schemas/BlockKitblock'
                      description: This is a very loose definition, in the future, we'll populate this with deeper schema in this definition namespace.
                    bot_id:
                      type: array
                      items:
                        pattern: ^B[A-Z0-9]{8,}$
                        type: string
                      description: ''
                    bot_profile:
                      $ref: '#/components/schemas/BotProfileObject'
                    client_msg_id:
                      type: string
                    comment:
                      $ref: '#/components/schemas/FileCommentObject'
                    display_as_bot:
                      type: boolean
                    file:
                      $ref: '#/components/schemas/fileobject'
                    files:
                      minItems: 1
                      uniqueItems: true
                      type: array
                      items:
                        $ref: '#/components/schemas/fileobject'
                      description: ''
                    icons:
                      $ref: '#/components/schemas/Icons1'
                    inviter:
                      pattern: ^[UW][A-Z0-9]{2,}$
                      type: string
                    is_delayed_message:
                      type: boolean
                    is_intro:
                      type: boolean
                    is_starred:
                      type: boolean
                    last_read:
                      pattern: ^\d{10}\.\d{6}$
                      type: string
                    latest_reply:
                      pattern: ^\d{10}\.\d{6}$
                      type: string
                    name:
                      type: string
                    old_name:
                      type: string
                    parent_user_id:
                      pattern: ^[UW][A-Z0-9]{2,}$
                      type: string
                    permalink:
                      type: string
                    pinned_to:
                      type: array
                      items:
                        pattern: ^[CGD][A-Z0-9]{8,}$
                        type: string
                      description: ''
                    purpose:
                      type: string
                    reactions:
                      type: array
                      items:
                        $ref: '#/components/schemas/Reactionobject'
                      description: ''
                    replies:
                      type: array
                      items:
                        $ref: '#/components/schemas/Reply'
                      description: ''
                    reply_count:
                      type: integer
                      format: int32
                    reply_users:
                      minItems: 1
                      uniqueItems: true
                      type: array
                      items:
                        pattern: ^[UW][A-Z0-9]{2,}$
                        type: string
                      description: ''
                    reply_users_count:
                      type: integer
                      format: int32
                    source_team:
                      pattern: ^[TE][A-Z0-9]{8,}$
                      type: string
                    subscribed:
                      type: boolean
                    subtype:
                      type: string
                    team:
                      pattern: ^[TE][A-Z0-9]{8,}$
                      type: string
                    text:
                      type: string
                    thread_ts:
                      pattern: ^\d{10}\.\d{6}$
                      type: string
                    topic:
                      type: string
                    ts:
                      pattern: ^\d{10}\.\d{6}$
                      type: string
                    type:
                      type: string
                    unread_count:
                      type: integer
                      format: int32
                    upload:
                      type: boolean
                    user:
                      pattern: ^[UW][A-Z0-9]{2,}$
                      type: string
                    user_profile:
                      $ref: '#/components/schemas/objs_user_profile_short'
                    user_team:
                      pattern: ^[TE][A-Z0-9]{8,}$
                      type: string
                    username:
                      type: string
                pagingobject:
                  title: pagingobject
                  required:
                  - page
                  - total
                  type: object
                  properties:
                    count:
                      type: integer
                      format: int32
                    page:
                      type: integer
                      format: int32
                    pages:
                      type: integer
                      format: int32
                    per_page:
                      type: integer
                      format: int32
                    spill:
                      type: integer
                      format: int32
                    total:
                      type: integer
                      format: int32
                Reactionobject:
                  title: Reactionobject
                  required:
                  - count
                  - name
                  - users
                  type: object
                  properties:
                    count:
                      type: integer
                      format: int32
                    name:
                      type: string
                    users:
                      type: array
                      items:
                        pattern: ^[UW][A-Z0-9]{2,}$
                        type: string
                      description: ''
                objs_reminder:
                  title: objs_reminder
                  required:
                  - creator
                  - id
                  - recurring
                  - text
                  - user
                  type: object
                  properties:
                    complete_ts:
                      type: integer
                      format: int32
                    creator:
                      pattern: ^[UW][A-Z0-9]{2,}$
                      type: string
                    id:
                      pattern: ^Rm[A-Z0-9]{8,}$
                      type: string
                    recurring:
                      type: boolean
                    text:
                      type: string
                    time:
                      type: integer
                      format: int32
                    user:
                      pattern: ^[UW][A-Z0-9]{2,}$
                      type: string
                resourcesininfofromapps.permissions.info:
                  title: resourcesininfofromapps.permissions.info
                  required:
                  - ids
                  type: object
                  properties:
                    excluded_ids:
                      type: array
                      items:
                        type: array
                        items:
                          pattern: ^[CGD][A-Z0-9]{8,}$
                          type: string
                    ids:
                      type: array
                      items:
                        type: array
                        items:
                          pattern: ^[CGD][A-Z0-9]{8,}$
                          type: string
                    wildcard:
                      type: boolean
                newpagingstyle:
                  title: newpagingstyle
                  required:
                  - next_cursor
                  type: object
                  properties:
                    next_cursor:
                      type: string
                Subteam/UsergroupObject:
                  title: Subteam/UsergroupObject
                  required:
                  - auto_provision
                  - auto_type
                  - created_by
                  - date_create
                  - date_delete
                  - date_update
                  - deleted_by
                  - description
                  - enterprise_subteam_id
                  - handle
                  - id
                  - is_external
                  - is_subteam
                  - is_usergroup
                  - name
                  - prefs
                  - team_id
                  - updated_by
                  type: object
                  properties:
                    auto_provision:
                      type: boolean
                    auto_type:
                      type: array
                      items:
                        type: string
                      description: ''
                      nullable: true
                    created_by:
                      pattern: ^[UW][A-Z0-9]{2,}$
                      type: string
                    date_create:
                      type: integer
                      format: int32
                    date_delete:
                      type: integer
                      format: int32
                    date_update:
                      type: integer
                      format: int32
                    deleted_by:
                      type: array
                      items:
                        type: string
                      description: ''
                      nullable: true
                    description:
                      type: string
                    enterprise_subteam_id:
                      type: string
                    handle:
                      type: string
                    id:
                      pattern: ^S[A-Z0-9]{2,}$
                      type: string
                    is_external:
                      type: boolean
                    is_subteam:
                      type: boolean
                    is_usergroup:
                      type: boolean
                    name:
                      type: string
                    prefs:
                      $ref: '#/components/schemas/Prefs'
                    team_id:
                      pattern: ^[T][A-Z0-9]{2,}$
                      type: string
                    updated_by:
                      pattern: ^[UW][A-Z0-9]{2,}$
                      type: string
                    user_count:
                      type: integer
                      format: int32
                    users:
                      type: array
                      items:
                        pattern: ^[UW][A-Z0-9]{2,}$
                        type: string
                      description: ''
                TeamObject:
                  title: TeamObject
                  required:
                  - domain
                  - email_domain
                  - icon
                  - id
                  - name
                  type: object
                  properties:
                    archived:
                      type: boolean
                    avatar_base_url:
                      type: string
                    created:
                      type: integer
                      format: int32
                    date_create:
                      type: integer
                      format: int32
                    deleted:
                      type: boolean
                    description:
                      type: string
                    discoverable:
                      type: string
                    domain:
                      type: string
                    email_domain:
                      type: string
                    enterprise_id:
                      pattern: ^[E][A-Z0-9]{8,}$
                      type: string
                    enterprise_name:
                      type: string
                    has_compliance_export:
                      type: boolean
                    icon:
                      $ref: '#/components/schemas/objs_icon'
                    id:
                      pattern: ^[T][A-Z0-9]{2,}$
                      type: string
                    is_assigned:
                      type: boolean
                    is_enterprise:
                      type: integer
                      format: int32
                    limit_ts:
                      type: integer
                      format: int32
                    messages_count:
                      type: integer
                      format: int32
                    msg_edit_window_mins:
                      type: integer
                      format: int32
                    name:
                      type: string
                    over_integrations_limit:
                      type: boolean
                    over_storage_limit:
                      type: boolean
                    plan:
                      $ref: '#/components/schemas/Plan'
                objs_team_profile_field:
                  title: objs_team_profile_field
                  required:
                  - hint
                  - id
                  - label
                  - options
                  - ordering
                  - type
                  type: object
                  properties:
                    field_name:
                      type: string
                    hint:
                      type: string
                    id:
                      pattern: ^X[a-zA-Z0-9]{9,}$
                      type: string
                    is_hidden:
                      type: boolean
                    label:
                      type: string
                    options:
                      type: array
                      items:
                        type: string
                      description: ''
                    ordering:
                      type: number
                    possible_values:
                      type: array
                      items:
                        type: string
                      description: ''
                    type:
                      $ref: '#/components/schemas/Type'
                Userprofileobject:
                  title: Userprofileobject
                  required:
                  - avatar_hash
                  - display_name
                  - display_name_normalized
                  - real_name
                  - real_name_normalized
                  type: object
                  properties:
                    always_active:
                      type: boolean
                    api_app_id:
                      pattern: ^A[A-Z0-9]{1,}$
                      type: string
                    avatar_hash:
                      type: string
                    bot_id:
                      pattern: ^B[A-Z0-9]{8,}$
                      type: string
                    display_name:
                      type: string
                    display_name_normalized:
                      type: string
                    email:
                      type: string
                    fields:
                      type: array
                      items:
                        type: object
                      description: ''
                      nullable: true
                    first_name:
                      type: string
                    guest_expiration_ts:
                      type: integer
                      format: int32
                    guest_invited_by:
                      type: string
                    image_1024:
                      type: string
                    image_192:
                      type: string
                    image_24:
                      type: string
                    image_32:
                      type: string
                    image_48:
                      type: string
                    image_512:
                      type: string
                    image_72:
                      type: string
                    image_original:
                      type: string
                    is_custom_image:
                      type: boolean
                    last_name:
                      type: string
                    phone:
                      type: string
                    real_name:
                      type: string
                    real_name_normalized:
                      type: string
                    skype:
                      type: string
                    status_emoji:
                      type: string
                    status_expiration:
                      type: integer
                      format: int32
                    status_text:
                      type: string
                    status_text_canonical:
                      type: string
                    team:
                      pattern: ^[TE][A-Z0-9]{8,}$
                      type: string
                    teams:
                      pattern: ^[TE][A-Z0-9]{8,}$
                      type: string
                    title:
                      type: string
                objs_user_profile_short:
                  title: objs_user_profile_short
                  required:
                  - avatar_hash
                  - display_name
                  - first_name
                  - image_72
                  - is_restricted
                  - is_ultra_restricted
                  - name
                  - real_name
                  - team
                  type: object
                  properties:
                    avatar_hash:
                      type: string
                    display_name:
                      type: string
                    display_name_normalized:
                      type: string
                    first_name:
                      type: string
                    image_72:
                      type: string
                    is_restricted:
                      type: boolean
                    is_ultra_restricted:
                      type: boolean
                    name:
                      type: string
                    real_name:
                      type: string
                    real_name_normalized:
                      type: string
                    team:
                      pattern: ^[TE][A-Z0-9]{8,}$
                      type: string
                Attachment:
                  title: Attachment
                  required:
                  - id
                  type: object
                  properties:
                    fallback:
                      type: string
                    id:
                      type: integer
                      format: int32
                    image_bytes:
                      type: integer
                      format: int32
                    image_height:
                      type: integer
                      format: int32
                    image_url:
                      type: string
                    image_width:
                      type: integer
                      format: int32
                BlockKitblock:
                  title: BlockKitblock
                  required:
                  - type
                  type: object
                  properties:
                    type:
                      type: string
                Conversationobject:
                  title: Conversationobject
                  required:
                  - created
                  - creator
                  - id
                  - is_archived
                  - is_channel
                  - is_general
                  - is_group
                  - is_im
                  - is_mpim
                  - is_org_shared
                  - is_private
                  - is_shared
                  - name
                  - name_normalized
                  - purpose
                  - topic
                  type: object
                  properties:
                    accepted_user:
                      pattern: ^[UW][A-Z0-9]{2,}$
                      type: string
                    connected_team_ids:
                      minItems: 0
                      uniqueItems: true
                      type: array
                      items:
                        pattern: ^[TE][A-Z0-9]{8,}$
                        type: string
                      description: ''
                    conversation_host_id:
                      pattern: ^[TE][A-Z0-9]{8,}$
                      type: string
                    created:
                      type: integer
                      format: int32
                    creator:
                      pattern: ^[UW][A-Z0-9]{2,}$
                      type: string
                    display_counts:
                      $ref: '#/components/schemas/DisplayCounts'
                    enterprise_id:
                      pattern: ^[E][A-Z0-9]{8,}$
                      type: string
                    external_connections:
                      type: object
                    has_pins:
                      type: boolean
                    id:
                      pattern: ^[CGD][A-Z0-9]{8,}$
                      type: string
                    internal_team_ids:
                      minItems: 0
                      uniqueItems: true
                      type: array
                      items:
                        pattern: ^[T][A-Z0-9]{2,}$
                        type: string
                      description: ''
                    is_archived:
                      type: boolean
                    is_channel:
                      type: boolean
                    is_ext_shared:
                      type: boolean
                    is_frozen:
                      type: boolean
                    is_general:
                      type: boolean
                    is_global_shared:
                      type: boolean
                    is_group:
                      type: boolean
                    is_im:
                      type: boolean
                    is_member:
                      type: boolean
                    is_moved:
                      type: integer
                      format: int32
                    is_mpim:
                      type: string
                      example: False
                    is_non_threadable:
                      type: boolean
                    is_open:
                      type: boolean
                    is_org_default:
                      type: boolean
                    is_org_mandatory:
                      type: boolean
                    is_org_shared:
                      type: boolean
                    is_pending_ext_shared:
                      type: boolean
                    is_private:
                      type: boolean
                    is_read_only:
                      type: boolean
                    is_shared:
                      type: boolean
                    is_starred:
                      type: boolean
                    is_thread_only:
                      type: boolean
                    last_read:
                      pattern: ^\d{10}\.\d{6}$
                      type: string
                    latest:
                      type: array
                      items:
                        $ref: '#/components/schemas/Messageobject'
                      description: ''
                    members:
                      minItems: 0
                      uniqueItems: true
                      type: array
                      items:
                        pattern: ^[UW][A-Z0-9]{2,}$
                        type: string
                      description: ''
                    name:
                      type: string
                    name_normalized:
                      type: string
                    num_members:
                      type: integer
                      format: int32
                    parent_conversation:
                      type: array
                      items:
                        pattern: ^[CGD][A-Z0-9]{8,}$
                        type: string
                      description: ''
                    pending_connected_team_ids:
                      minItems: 0
                      uniqueItems: true
                      type: array
                      items:
                        pattern: ^[T][A-Z0-9]{2,}$
                        type: string
                      description: ''
                    pending_shared:
                      minItems: 0
                      uniqueItems: true
                      type: array
                      items:
                        pattern: ^[T][A-Z0-9]{2,}$
                        type: string
                      description: ''
                    pin_count:
                      type: integer
                      format: int32
                    previous_names:
                      minItems: 0
                      uniqueItems: true
                      type: array
                      items:
                        type: string
                      description: ''
                    priority:
                      type: number
                    purpose:
                      $ref: '#/components/schemas/Purpose'
                    shared_team_ids:
                      minItems: 0
                      uniqueItems: true
                      type: array
                      items:
                        pattern: ^[T][A-Z0-9]{2,}$
                        type: string
                      description: ''
                    shares:
                      minItems: 0
                      uniqueItems: true
                      type: array
                      items:
                        $ref: '#/components/schemas/Shares1'
                      description: ''
                    timezone_count:
                      type: integer
                      format: int32
                    topic:
                      $ref: '#/components/schemas/Topic'
                    unlinked:
                      type: integer
                      format: int32
                    unread_count:
                      type: integer
                      format: int32
                    unread_count_display:
                      type: integer
                      format: int32
                    user:
                      pattern: ^[UW][A-Z0-9]{2,}$
                      type: string
                    version:
                      type: integer
                      format: int32
                conversations.archiveerrorschema:
                  title: conversations.archiveerrorschema
                  required:
                  - error
                  - ok
                  type: object
                  properties:
                    error:
                      $ref: '#/components/schemas/Error'
                    needed:
                      type: string
                    ok:
                      type: string
                      example: False
                    provided:
                      type: string
                  description: Schema for error response from conversations.archive method
                conversations.archivesuccessschema:
                  title: conversations.archivesuccessschema
                  required:
                  - ok
                  type: object
                  properties:
                    ok:
                      type: string
                      example: True
                  description: Schema for successful response conversations.archive method
                conversations.closeerrorschema:
                  title: conversations.closeerrorschema
                  required:
                  - error
                  - ok
                  type: object
                  properties:
                    error:
                      $ref: '#/components/schemas/Error1'
                    needed:
                      type: string
                    ok:
                      type: string
                      example: False
                    provided:
                      type: string
                  description: Schema for error response from conversations.close method
                conversations.closesuccessschema:
                  title: conversations.closesuccessschema
                  required:
                  - ok
                  type: object
                  properties:
                    already_closed:
                      type: boolean
                    no_op:
                      type: boolean
                    ok:
                      type: string
                      example: True
                  description: Schema for successful response conversations.close method
                conversations.createerrorschema:
                  title: conversations.createerrorschema
                  required:
                  - error
                  - ok
                  type: object
                  properties:
                    detail:
                      type: string
                    error:
                      $ref: '#/components/schemas/Error2'
                    needed:
                      type: string
                    ok:
                      type: string
                      example: False
                    provided:
                      type: string
                  description: Schema for error response from conversations.create method
                conversations.createsuccessschema:
                  title: conversations.createsuccessschema
                  required:
                  - channel
                  - ok
                  type: object
                  properties:
                    channel:
                      type: array
                      items:
                        $ref: '#/components/schemas/Conversationobject'
                      description: ''
                    ok:
                      type: string
                      example: True
                  description: Schema for successful response conversations.create method
                conversations.historyerrorschema:
                  title: conversations.historyerrorschema
                  required:
                  - error
                  - ok
                  type: object
                  properties:
                    error:
                      $ref: '#/components/schemas/Error3'
                    needed:
                      type: string
                    ok:
                      type: string
                      example: False
                    provided:
                      type: string
                  description: Schema for error response from conversations.history method
                conversations.historysuccessschema:
                  title: conversations.historysuccessschema
                  required:
                  - channel_actions_count
                  - channel_actions_ts
                  - has_more
                  - messages
                  - ok
                  - pin_count
                  type: object
                  properties:
                    channel_actions_count:
                      type: integer
                      format: int32
                    channel_actions_ts:
                      type: array
                      items:
                        type: integer
                        format: int32
                      description: ''
                    has_more:
                      type: boolean
                    messages:
                      minItems: 1
                      uniqueItems: true
                      type: array
                      items:
                        $ref: '#/components/schemas/Messageobject'
                      description: ''
                    ok:
                      type: string
                      example: True
                    pin_count:
                      type: integer
                      format: int32
                  description: Schema for successful response from conversations.history method
                conversations.infoerrorschema:
                  title: conversations.infoerrorschema
                  required:
                  - error
                  - ok
                  type: object
                  properties:
                    error:
                      $ref: '#/components/schemas/Error4'
                    needed:
                      type: string
                    ok:
                      type: string
                      example: False
                    provided:
                      type: string
                  description: Schema for error response from conversations.info method
                conversations.infosuccessschema:
                  title: conversations.infosuccessschema
                  required:
                  - channel
                  - ok
                  type: object
                  properties:
                    channel:
                      type: array
                      items:
                        $ref: '#/components/schemas/Conversationobject'
                      description: ''
                    ok:
                      type: string
                      example: True
                  description: Schema for successful response conversations.info
                conversations.inviteerrorschema:
                  title: conversations.inviteerrorschema
                  required:
                  - channel
                  - ok
                  type: object
                  properties:
                    channel:
                      type: array
                      items:
                        $ref: '#/components/schemas/Conversationobject'
                      description: ''
                    ok:
                      type: string
                      example: True
                  description: Schema for successful response from conversations.invite method
                conversations.inviteerrorschema1:
                  title: conversations.inviteerrorschema1
                  required:
                  - ok
                  type: object
                  properties:
                    error:
                      $ref: '#/components/schemas/Error5'
                    errors:
                      minItems: 1
                      uniqueItems: true
                      type: array
                      items:
                        $ref: '#/components/schemas/errorsisreturnedwhenanerrorassociatesanuser'
                      description: ''
                    needed:
                      type: string
                    ok:
                      type: string
                      example: False
                    provided:
                      type: string
                  description: Schema for error response from conversations.invite method
                conversations.joinerrorschema:
                  title: conversations.joinerrorschema
                  required:
                  - error
                  - ok
                  type: object
                  properties:
                    error:
                      $ref: '#/components/schemas/Error7'
                    needed:
                      type: string
                    ok:
                      type: string
                      example: False
                    provided:
                      type: string
                  description: Schema for error response from conversations.join method
                conversations.joinsuccessschema:
                  title: conversations.joinsuccessschema
                  required:
                  - channel
                  - ok
                  type: object
                  properties:
                    channel:
                      type: array
                      items:
                        $ref: '#/components/schemas/Conversationobject'
                      description: ''
                    ok:
                      type: string
                      example: True
                    response_metadata:
                      $ref: '#/components/schemas/Responsemetadata'
                    warning:
                      type: string
                  description: Schema for successful response from conversations.join method
                conversations.kickerrorschema:
                  title: conversations.kickerrorschema
                  required:
                  - error
                  - ok
                  type: object
                  properties:
                    error:
                      $ref: '#/components/schemas/Error8'
                    needed:
                      type: string
                    ok:
                      type: string
                      example: False
                    provided:
                      type: string
                  description: Schema for error response conversations.kick method
                conversations.kicksuccessschema:
                  title: conversations.kicksuccessschema
                  required:
                  - ok
                  type: object
                  properties:
                    ok:
                      type: string
                      example: True
                  description: Schema for successful response conversations.kick method
                conversations.leaveerrorschema:
                  title: conversations.leaveerrorschema
                  required:
                  - error
                  - ok
                  type: object
                  properties:
                    error:
                      $ref: '#/components/schemas/Error9'
                    needed:
                      type: string
                    ok:
                      type: string
                      example: False
                    provided:
                      type: string
                  description: Schema for error response from conversations.leave method
                conversations.leavesuccessschema:
                  title: conversations.leavesuccessschema
                  required:
                  - ok
                  type: object
                  properties:
                    not_in_channel:
                      type: boolean
                    ok:
                      type: string
                      example: True
                  description: Schema for successful response from conversations.leave method
                conversations.listerrorschema:
                  title: conversations.listerrorschema
                  required:
                  - error
                  - ok
                  type: object
                  properties:
                    error:
                      $ref: '#/components/schemas/Error10'
                    needed:
                      type: string
                    ok:
                      type: string
                      example: False
                    provided:
                      type: string
                  description: Schema for error response from conversations.list method
                conversations.listsuccessschema:
                  title: conversations.listsuccessschema
                  required:
                  - channels
                  - ok
                  type: object
                  properties:
                    channels:
                      uniqueItems: true
                      type: array
                      items:
                        type: array
                        items:
                          $ref: '#/components/schemas/Conversationobject'
                    ok:
                      type: string
                      example: True
                    response_metadata:
                      $ref: '#/components/schemas/newpagingstyle'
                  description: Schema for successful response from conversations.list method
                conversations.memberserrorschema:
                  title: conversations.memberserrorschema
                  required:
                  - error
                  - ok
                  type: object
                  properties:
                    error:
                      $ref: '#/components/schemas/Error11'
                    ok:
                      type: string
                      example: False
                  description: Schema for error response conversations.members method
                conversations.memberssuccessschema:
                  title: conversations.memberssuccessschema
                  required:
                  - members
                  - ok
                  - response_metadata
                  type: object
                  properties:
                    members:
                      minItems: 1
                      uniqueItems: true
                      type: array
                      items:
                        pattern: ^[UW][A-Z0-9]{2,}$
                        type: string
                      description: ''
                    ok:
                      type: string
                      example: True
                    response_metadata:
                      $ref: '#/components/schemas/newpagingstyle'
                  description: Schema for successful response conversations.members method
                conversations.openerrorschema:
                  title: conversations.openerrorschema
                  required:
                  - error
                  - ok
                  type: object
                  properties:
                    error:
                      $ref: '#/components/schemas/Error12'
                    ok:
                      type: string
                      example: False
                  description: Schema for error response from conversations.open method
                conversations.opensuccessschema:
                  title: conversations.opensuccessschema
                  required:
                  - channel
                  - ok
                  type: object
                  properties:
                    already_open:
                      type: boolean
                    channel:
                      type: array
                      items:
                        type: array
                        items:
                          $ref: '#/components/schemas/Conversationobject'
                    no_op:
                      type: boolean
                    ok:
                      type: string
                      example: True
                  description: Schema for successful response from conversations.open method when opening channels, ims, mpims
                conversations.renameerrorschema:
                  title: conversations.renameerrorschema
                  required:
                  - error
                  - ok
                  type: object
                  properties:
                    error:
                      $ref: '#/components/schemas/Error13'
                    needed:
                      type: string
                    ok:
                      type: string
                      example: False
                    provided:
                      type: string
                  description: Schema for error response from conversations.rename method
                conversations.renamesuccessschema:
                  title: conversations.renamesuccessschema
                  required:
                  - channel
                  - ok
                  type: object
                  properties:
                    channel:
                      type: array
                      items:
                        $ref: '#/components/schemas/Conversationobject'
                      description: ''
                    ok:
                      type: string
                      example: True
                  description: Schema for successful response from conversations.rename method
                conversations.replieserrorschema:
                  title: conversations.replieserrorschema
                  required:
                  - error
                  - ok
                  type: object
                  properties:
                    error:
                      $ref: '#/components/schemas/Error14'
                    needed:
                      type: string
                    ok:
                      type: string
                      example: False
                    provided:
                      type: string
                  description: Schema for error response from conversations.replies method
                conversations.repliessuccessschema:
                  title: conversations.repliessuccessschema
                  required:
                  - messages
                  - ok
                  type: object
                  properties:
                    has_more:
                      type: boolean
                    messages:
                      type: array
                      items:
                        type: array
                        items:
                          $ref: '#/components/schemas/Message'
                    ok:
                      type: string
                      example: True
                  description: Schema for successful response from conversations.replies method
                conversations.setPurposeerrorschema:
                  title: conversations.setPurposeerrorschema
                  required:
                  - error
                  - ok
                  type: object
                  properties:
                    error:
                      $ref: '#/components/schemas/Error15'
                    needed:
                      type: string
                    ok:
                      type: string
                      example: False
                    provided:
                      type: string
                  description: Schema for error response from conversations.setPurpose method
                conversations.setPurposesuccessschema:
                  title: conversations.setPurposesuccessschema
                  required:
                  - channel
                  - ok
                  type: object
                  properties:
                    channel:
                      type: array
                      items:
                        $ref: '#/components/schemas/Conversationobject'
                      description: ''
                    ok:
                      type: string
                      example: True
                  description: Schema for successful response from conversations.setPurpose method
                conversations.setTopicerrorschema:
                  title: conversations.setTopicerrorschema
                  required:
                  - error
                  - ok
                  type: object
                  properties:
                    error:
                      $ref: '#/components/schemas/Error15'
                    needed:
                      type: string
                    ok:
                      type: string
                      example: False
                    provided:
                      type: string
                  description: Schema for error response from conversations.setTopic method
                conversations.setTopicsuccessschema:
                  title: conversations.setTopicsuccessschema
                  required:
                  - channel
                  - ok
                  type: object
                  properties:
                    channel:
                      type: array
                      items:
                        $ref: '#/components/schemas/Conversationobject'
                      description: ''
                    ok:
                      type: string
                      example: True
                  description: Schema for successful response from conversations.setTopic method
                conversations.unarchiveerrorschema:
                  title: conversations.unarchiveerrorschema
                  required:
                  - error
                  - ok
                  type: object
                  properties:
                    error:
                      $ref: '#/components/schemas/Error17'
                    needed:
                      type: string
                    ok:
                      type: string
                      example: False
                    provided:
                      type: string
                  description: Schema for error response from conversations.unarchive method
                conversations.unarchivesuccessschema:
                  title: conversations.unarchivesuccessschema
                  required:
                  - ok
                  type: object
                  properties:
                    ok:
                      type: string
                      example: True
                  description: Schema for successful response from conversations.unarchive method
                DisplayCounts:
                  title: DisplayCounts
                  required:
                  - display_counts
                  - guest_counts
                  type: object
                  properties:
                    display_counts:
                      type: integer
                      format: int32
                    guest_counts:
                      type: integer
                      format: int32
                Error:
                  title: Error
                  enum:
                  - method_not_supported_for_channel_type
                  - missing_scope
                  - not_supported
                  - channel_not_found
                  - already_archived
                  - cant_archive_general
                  - restricted_action
                  - not_authed
                  - invalid_auth
                  - account_inactive
                  - user_is_bot
                  - user_is_restricted
                  - user_is_ultra_restricted
                  - invalid_arg_name
                  - invalid_array_arg
                  - invalid_charset
                  - invalid_form_data
                  - invalid_post_type
                  - missing_post_type
                  - invalid_json
                  - json_not_object
                  - request_timeout
                  - upgrade_required
                  - team_added_to_org
                  - missing_charset
                  - superfluous_charset
                  type: string
                Error1:
                  title: Error1
                  enum:
                  - method_not_supported_for_channel_type
                  - channel_not_found
                  - user_does_not_own_channel
                  - missing_scope
                  - not_authed
                  - invalid_auth
                  - account_inactive
                  - invalid_arg_name
                  - invalid_array_arg
                  - invalid_charset
                  - invalid_form_data
                  - invalid_post_type
                  - missing_post_type
                  - team_added_to_org
                  - invalid_json
                  - json_not_object
                  - request_timeout
                  - upgrade_required
                  type: string
                Error2:
                  title: Error2
                  enum:
                  - method_not_supported_for_channel_type
                  - missing_scope
                  - name_taken
                  - restricted_action
                  - no_channel
                  - invalid_name_required
                  - invalid_name_punctuation
                  - invalid_name_maxlength
                  - invalid_name_specials
                  - invalid_name
                  - not_authed
                  - invalid_auth
                  - account_inactive
                  - user_is_bot
                  - user_is_restricted
                  - invalid_arg_name
                  - invalid_array_arg
                  - invalid_charset
                  - invalid_form_data
                  - invalid_post_type
                  - missing_post_type
                  - team_added_to_org
                  - invalid_json
                  - json_not_object
                  - request_timeout
                  - upgrade_required
                  type: string
                Error3:
                  title: Error3
                  enum:
                  - missing_scope
                  - channel_not_found
                  - invalid_ts_latest
                  - invalid_ts_oldest
                  - not_authed
                  - invalid_auth
                  - account_inactive
                  - invalid_arg_name
                  - invalid_array_arg
                  - invalid_charset
                  - invalid_form_data
                  - invalid_post_type
                  - missing_post_type
                  - invalid_json
                  - json_not_object
                  - request_timeout
                  - upgrade_required
                  type: string
                Error4:
                  title: Error4
                  enum:
                  - missing_scope
                  - channel_not_found
                  - team_added_to_org
                  - not_authed
                  - invalid_auth
                  - account_inactive
                  - invalid_arg_name
                  - invalid_array_arg
                  - invalid_charset
                  - invalid_form_data
                  - invalid_post_type
                  - missing_post_type
                  - invalid_json
                  - json_not_object
                  - request_timeout
                  - upgrade_required
                  type: string
                Error5:
                  title: Error5
                  enum:
                  - method_not_supported_for_channel_type
                  - missing_scope
                  - channel_not_found
                  - user_not_found
                  - no_user
                  - cant_invite_self
                  - not_in_channel
                  - already_in_channel
                  - is_archived
                  - cant_invite
                  - too_many_users
                  - ura_max_channels
                  - not_authed
                  - invalid_auth
                  - account_inactive
                  - user_is_bot
                  - user_is_restricted
                  - user_is_ultra_restricted
                  - invalid_arg_name
                  - invalid_array_arg
                  - invalid_charset
                  - invalid_form_data
                  - invalid_post_type
                  - missing_post_type
                  - invalid_json
                  - json_not_object
                  - request_timeout
                  - upgrade_required
                  - team_added_to_org
                  - missing_charset
                  - superfluous_charset
                  type: string
                Error7:
                  title: Error7
                  enum:
                  - method_not_supported_for_channel_type
                  - missing_scope
                  - channel_not_found
                  - is_archived
                  - not_authed
                  - invalid_auth
                  - account_inactive
                  - user_is_bot
                  - user_is_restricted
                  - user_is_ultra_restricted
                  - invalid_arg_name
                  - invalid_array_arg
                  - invalid_charset
                  - invalid_form_data
                  - invalid_post_type
                  - missing_post_type
                  - invalid_json
                  - json_not_object
                  - request_timeout
                  - upgrade_required
                  - team_added_to_org
                  - missing_charset
                  - superfluous_charset
                  type: string
                Error8:
                  title: Error8
                  enum:
                  - method_not_supported_for_channel_type
                  - missing_scope
                  - channel_not_found
                  - user_not_found
                  - cant_kick_self
                  - not_in_channel
                  - cant_kick_from_general
                  - restricted_action
                  - not_authed
                  - invalid_auth
                  - account_inactive
                  - user_is_bot
                  - user_is_restricted
                  - invalid_arg_name
                  - invalid_array_arg
                  - invalid_charset
                  - invalid_form_data
                  - invalid_post_type
                  - missing_post_type
                  - invalid_json
                  - json_not_object
                  - request_timeout
                  - upgrade_required
                  type: string
                Error9:
                  title: Error9
                  enum:
                  - method_not_supported_for_channel_type
                  - last_member
                  - missing_scope
                  - channel_not_found
                  - is_archived
                  - cant_leave_general
                  - not_authed
                  - invalid_auth
                  - account_inactive
                  - user_is_bot
                  - user_is_restricted
                  - user_is_ultra_restricted
                  - invalid_arg_name
                  - invalid_array_arg
                  - invalid_charset
                  - invalid_form_data
                  - invalid_post_type
                  - missing_post_type
                  - invalid_json
                  - json_not_object
                  - request_timeout
                  - upgrade_required
                  - team_added_to_org
                  - missing_charset
                  - superfluous_charset
                  type: string
                Error10:
                  title: Error10
                  enum:
                  - missing_scope
                  - not_authed
                  - invalid_auth
                  - account_inactive
                  - invalid_arg_name
                  - invalid_array_arg
                  - invalid_charset
                  - invalid_form_data
                  - invalid_post_type
                  - missing_post_type
                  - invalid_json
                  - json_not_object
                  - request_timeout
                  - upgrade_required
                  type: string
                Error11:
                  title: Error11
                  enum:
                  - channel_not_found
                  - invalid_limit
                  - invalid_cursor
                  - fetch_members_failed
                  - not_authed
                  - invalid_auth
                  - account_inactive
                  - invalid_arg_name
                  - invalid_array_arg
                  - invalid_charset
                  - invalid_form_data
                  - invalid_post_type
                  - missing_post_type
                  - team_added_to_org
                  - invalid_json
                  - json_not_object
                  - request_timeout
                  - upgrade_required
                  type: string
                Error12:
                  title: Error12
                  enum:
                  - method_not_supported_for_channel_type
                  - user_not_found
                  - user_not_visible
                  - user_disabled
                  - users_list_not_supplied
                  - not_enough_users
                  - too_many_users
                  - not_authed
                  - invalid_auth
                  - account_inactive
                  - invalid_arg_name
                  - invalid_array_arg
                  - invalid_charset
                  - invalid_form_data
                  - invalid_post_type
                  - missing_post_type
                  - team_added_to_org
                  - invalid_json
                  - json_not_object
                  - request_timeout
                  - upgrade_required
                  - channel_not_found
                  type: string
                Error13:
                  title: Error13
                  enum:
                  - user_is_restricted
                  - method_not_supported_for_channel_type
                  - missing_scope
                  - channel_not_found
                  - not_in_channel
                  - not_authorized
                  - invalid_name
                  - name_taken
                  - invalid_name_required
                  - invalid_name_punctuation
                  - invalid_name_maxlength
                  - invalid_name_specials
                  - not_authed
                  - invalid_auth
                  - account_inactive
                  - invalid_arg_name
                  - invalid_array_arg
                  - invalid_charset
                  - invalid_form_data
                  - invalid_post_type
                  - missing_post_type
                  - invalid_json
                  - json_not_object
                  - request_timeout
                  - upgrade_required
                  type: string
                Error14:
                  title: Error14
                  enum:
                  - missing_scope
                  - channel_not_found
                  - thread_not_found
                  - not_authed
                  - invalid_auth
                  - account_inactive
                  - invalid_arg_name
                  - invalid_array_arg
                  - invalid_charset
                  - invalid_form_data
                  - invalid_post_type
                  - missing_post_type
                  - team_added_to_org
                  - invalid_json
                  - json_not_object
                  - request_timeout
                  - upgrade_required
                  type: string
                Error15:
                  title: Error15
                  enum:
                  - method_not_supported_for_channel_type
                  - missing_scope
                  - channel_not_found
                  - not_in_channel
                  - is_archived
                  - too_long
                  - user_is_restricted
                  - not_authed
                  - invalid_auth
                  - account_inactive
                  - invalid_arg_name
                  - invalid_array_arg
                  - invalid_charset
                  - invalid_form_data
                  - invalid_post_type
                  - missing_post_type
                  - team_added_to_org
                  - invalid_json
                  - json_not_object
                  - request_timeout
                  - upgrade_required
                  type: string
                Error17:
                  title: Error17
                  enum:
                  - method_not_supported_for_channel_type
                  - missing_scope
                  - channel_not_found
                  - not_archived
                  - not_authed
                  - invalid_auth
                  - account_inactive
                  - user_is_bot
                  - user_is_restricted
                  - user_is_ultra_restricted
                  - invalid_arg_name
                  - invalid_array_arg
                  - invalid_charset
                  - invalid_form_data
                  - invalid_post_type
                  - missing_post_type
                  - invalid_json
                  - json_not_object
                  - request_timeout
                  - upgrade_required
                  - team_added_to_org
                  - missing_charset
                  - superfluous_charset
                  type: string
                errorsisreturnedwhenanerrorassociatesanuser:
                  title: errorsisreturnedwhenanerrorassociatesanuser
                  required:
                  - error
                  - ok
                  type: object
                  properties:
                    error:
                      $ref: '#/components/schemas/Error5'
                    ok:
                      type: string
                      example: False
                    user:
                      pattern: ^[UW][A-Z0-9]{2,}$
                      type: string
                Icons:
                  title: Icons
                  required:
                  - image_36
                  - image_48
                  - image_72
                  type: object
                  properties:
                    image_36:
                      type: string
                    image_48:
                      type: string
                    image_72:
                      type: string
                Icons1:
                  title: Icons1
                  type: object
                  properties:
                    emoji:
                      type: string
                Message:
                  title: Message
                  required:
                  - replies
                  - reply_count
                  - subscribed
                  - text
                  - thread_ts
                  - ts
                  - type
                  - user
                  type: object
                  properties:
                    last_read:
                      pattern: ^\d{10}\.\d{6}$
                      type: string
                    latest_reply:
                      pattern: ^\d{10}\.\d{6}$
                      type: string
                    replies:
                      type: array
                      items:
                        $ref: '#/components/schemas/Reply'
                      description: ''
                    reply_count:
                      type: integer
                      format: int32
                    reply_users:
                      uniqueItems: true
                      type: array
                      items:
                        pattern: ^[UW][A-Z0-9]{2,}$
                        type: string
                      description: ''
                    reply_users_count:
                      type: integer
                      format: int32
                    source_team:
                      pattern: ^[T][A-Z0-9]{2,}$
                      type: string
                    subscribed:
                      type: boolean
                    team:
                      pattern: ^[T][A-Z0-9]{2,}$
                      type: string
                    text:
                      type: string
                    thread_ts:
                      pattern: ^\d{10}\.\d{6}$
                      type: string
                    ts:
                      pattern: ^\d{10}\.\d{6}$
                      type: string
                    type:
                      type: string
                    unread_count:
                      type: integer
                      format: int32
                    user:
                      pattern: ^[UW][A-Z0-9]{2,}$
                      type: string
                    user_profile:
                      $ref: '#/components/schemas/objs_user_profile_short'
                    user_team:
                      pattern: ^[T][A-Z0-9]{2,}$
                      type: string
                Plan:
                  title: Plan
                  enum:
                  - std
                  - plus
                  - compliance
                  - enterprise
                  type: string
                Prefs:
                  title: Prefs
                  required:
                  - channels
                  - groups
                  type: object
                  properties:
                    channels:
                      type: array
                      items:
                        pattern: ^[C][A-Z0-9]{2,}$
                        type: string
                      description: ''
                    groups:
                      type: array
                      items:
                        pattern: ^[G][A-Z0-9]{8,}$
                        type: string
                      description: ''
                Purpose:
                  title: Purpose
                  required:
                  - creator
                  - last_set
                  - value
                  type: object
                  properties:
                    creator:
                      pattern: ^[UW][A-Z0-9]{8,}$|^$
                      type: string
                    last_set:
                      type: integer
                      format: int32
                    value:
                      type: string
                Reply:
                  title: Reply
                  required:
                  - ts
                  - user
                  type: object
                  properties:
                    ts:
                      pattern: ^\d{10}\.\d{6}$
                      type: string
                    user:
                      pattern: ^[UW][A-Z0-9]{2,}$
                      type: string
                Responsemetadata:
                  title: Responsemetadata
                  type: object
                  properties:
                    warnings:
                      minItems: 1
                      uniqueItems: true
                      type: array
                      items:
                        type: string
                      description: ''
                Shares:
                  title: Shares
                  type: object
                  properties:
                    private:
                      type: object
                    public:
                      type: object
                Shares1:
                  title: Shares1
                  required:
                  - is_active
                  - team
                  - user
                  type: object
                  properties:
                    accepted_user:
                      pattern: ^[UW][A-Z0-9]{2,}$
                      type: string
                    is_active:
                      type: boolean
                    team:
                      $ref: '#/components/schemas/TeamObject'
                    user:
                      pattern: ^[UW][A-Z0-9]{2,}$
                      type: string
                TeamProfile:
                  title: TeamProfile
                  required:
                  - fields
                  type: object
                  properties:
                    fields:
                      minItems: 1
                      uniqueItems: true
                      type: array
                      items:
                        $ref: '#/components/schemas/objs_team_profile_field'
                      description: ''
                Topic:
                  title: Topic
                  required:
                  - creator
                  - last_set
                  - value
                  type: object
                  properties:
                    creator:
                      pattern: ^[UW][A-Z0-9]{8,}$|^$
                      type: string
                    last_set:
                      type: integer
                      format: int32
                    value:
                      type: string
                Type:
                  title: Type
                  enum:
                  - text
                  - date
                  - link
                  - mailto
                  - options_list
                  - user
                  type: string
              securitySchemes:
                oauth2:
                  type: oauth2
                  flows:
                    authorizationCode:
                      authorizationUrl: https://slack.com/oauth/authorize
                      tokenUrl: https://slack.com/api/oauth.access
                      scopes:
                        admin: admin
                        admin.apps:read: admin.apps:read
                        admin.apps:write: admin.apps:write
                        admin.conversations:write: admin.conversations:write
                        admin.invites:read: admin.invites:read
                        admin.invites:write: admin.invites:write
                        admin.teams:read: admin.teams:read
                        admin.teams:write: admin.teams:write
                        admin.users:read: admin.users:read
                        admin.users:write: admin.users:write
                        bot: Bot user scope
                        channels:history: channels:history
                        channels:read: channels:read
                        channels:write: channels:write
                        chat:write: chat:write
                        chat:write:bot: Author messages as a bot
                        chat:write:user: chat:write:user
                        conversations:history: conversations:history
                        conversations:read: conversations:read
                        conversations:write: conversations:write
                        dnd:read: dnd:read
                        dnd:write: dnd:write
                        emoji:read: emoji:read
                        files:read: files:read
                        files:write:user: files:write:user
                        groups:history: groups:history
                        groups:read: groups:read
                        groups:write: groups:write
                        identity.basic: identity.basic
                        im:history: im:history
                        im:read: im:read
                        im:write: im:write
                        links:write: links:write
                        mpim:history: mpim:history
                        mpim:read: mpim:read
                        mpim:write: mpim:write
                        none: No scope required
                        pins:read: pins:read
                        pins:write: pins:write
                        reactions:read: reactions:read
                        reactions:write: reactions:write
                        reminders:read: reminders:read
                        reminders:write: reminders:write
                        remote_files:read: remote_files:read
                        remote_files:share: remote_files:share
                        remote_files:write: remote_files:write
                        rtm:stream: rtm:stream
                        search:read: search:read
                        stars:read: stars:read
                        stars:write: stars:write
                        team:read: team:read
                        tokens.basic: tokens.basic
                        usergroups:read: usergroups:read
                        usergroups:write: usergroups:write
                        users.profile:read: users.profile:read
                        users.profile:write: users.profile:write
                        users:read: users:read
                        users:read.email: users:read.email
                        users:write: users:write
            security:
            - oauth2: []
            tags:
            - name: conversations
              description: ''
            externalDocs:
              description: Learn more about the Slack Web API
              url: https://api.slack.com/web
          

Documentation & More

The OpenAPI can then be used at other stops along the API life cycle, helping publish documenation, mock servers, power tests, and service other needs for API providers.


AsyncAPI

The AsyncAPI for the Slack Slack Events API, describing the details of the Slack Events API, and letting consumers what real time subscriptions are available via the API.

            asyncapi: 2.0.0
            info:
              contact:
                email: [email protected]
                name: Slack Platform Support
                url: 'https://api.slack.com/support'
              description: A webhook-based events bus using a subscription model for Slack apps
              termsOfService: 'https://slack.com/terms-of-service/api'
              title: Slack Events API
              version: 1.0.0
            servers:
              default:
                description: >-
                  A pre-registered Request URL on servers you control where subscriptions
                  will be delivered.
                url: '{request_url}'
                variables:
                  request_url:
                    description: Your chosen request URL where events will be delivered.
                protocol: https
              server1:
                description: >-
                  Your Slack app management console's event subscription configurator. Visit
                  in a web browser and sign in to your workspace.
                url: 'https://api.slack.com/apps/{slack_app_id}/event-subscriptions'
                variables:
                  slack_app_id:
                    description: >-
                      Your Slack app's unique identifier, found in the URL when editing your
                      app on api.slack.com.
                protocol: https
            tags:
              - description: Events less about a workspace and more about your app
                name: app_event
              - description: Part of workspace app's Permissions API
                name: permissions_api
              - description: User token based apps can subscribe to this event
                name: allows_user_tokens
              - description: Workspace token apps can subscribe to this event
                name: allows_workspace_tokens
            channels:
              slack/events/app/mention:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for app_mention
                      url: 'https://api.slack.com/events/app_mention'
                    summary: Subscribe to only the message events that mention your app or bot
                    tags:
                      - name: allows_user_tokens
                      - name: app_event
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    x-scopes-required: []
                    x-tokens-allowed:
                      - user
              slack/events/app/rate/limited:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for app_rate_limited
                      url: 'https://api.slack.com/events/app_rate_limited'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: Indicates your app's event subscriptions are being rate limited
                    tags:
                      - name: allows_user_tokens
                      - name: app_event
                      - name: allows_workspace_tokens
                    x-scopes-required: []
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/app/uninstalled:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for app_uninstalled
                      url: 'https://api.slack.com/events/app_uninstalled'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: Your Slack app was uninstalled.
                    tags:
                      - name: allows_user_tokens
                      - name: app_event
                      - name: allows_workspace_tokens
                    x-scopes-required: []
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/channel/archive:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for channel_archive
                      url: 'https://api.slack.com/events/channel_archive'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A channel was archived
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'channels:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/channel/created:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for channel_created
                      url: 'https://api.slack.com/events/channel_created'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A channel was created
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'channels:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/channel/deleted:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for channel_deleted
                      url: 'https://api.slack.com/events/channel_deleted'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A channel was deleted
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'channels:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/channel/history/changed:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for channel_history_changed
                      url: 'https://api.slack.com/events/channel_history_changed'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: Bulk updates were made to a channel's history
                    tags:
                      - name: allows_user_tokens
                    x-scopes-required:
                      - 'channels:history'
                      - 'groups:history'
                      - 'mpim:history'
                    x-tokens-allowed:
                      - user
              slack/events/channel/left:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for channel_left
                      url: 'https://api.slack.com/events/channel_left'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: You left a channel
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'channels:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/channel/rename:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for channel_rename
                      url: 'https://api.slack.com/events/channel_rename'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A channel was renamed
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'channels:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/channel/unarchive:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for channel_unarchive
                      url: 'https://api.slack.com/events/channel_unarchive'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A channel was unarchived
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'channels:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/dnd/updated:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for dnd_updated
                      url: 'https://api.slack.com/events/dnd_updated'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: Do not Disturb settings changed for the current user
                    tags:
                      - name: allows_user_tokens
                    x-scopes-required:
                      - 'dnd:read'
                    x-tokens-allowed:
                      - user
              slack/events/dnd/updated/user:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for dnd_updated_user
                      url: 'https://api.slack.com/events/dnd_updated_user'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: Do not Disturb settings changed for a member
                    tags:
                      - name: allows_user_tokens
                    x-scopes-required:
                      - 'dnd:read'
                    x-tokens-allowed:
                      - user
              slack/events/email/domain/changed:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for email_domain_changed
                      url: 'https://api.slack.com/events/email_domain_changed'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: The workspace email domain has changed
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'team:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/emoji/changed:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for emoji_changed
                      url: 'https://api.slack.com/events/emoji_changed'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A custom emoji has been added or changed
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'emoji:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/file/change:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for file_change
                      url: 'https://api.slack.com/events/file_change'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A file was changed
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'files:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/file/comment/added:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for file_comment_added
                      url: 'https://api.slack.com/events/file_comment_added'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A file comment was added
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'files:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/file/comment/deleted:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for file_comment_deleted
                      url: 'https://api.slack.com/events/file_comment_deleted'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A file comment was deleted
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'files:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/file/comment/edited:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for file_comment_edited
                      url: 'https://api.slack.com/events/file_comment_edited'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A file comment was edited
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'files:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/file/created:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for file_created
                      url: 'https://api.slack.com/events/file_created'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A file was created
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'files:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/file/deleted:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for file_deleted
                      url: 'https://api.slack.com/events/file_deleted'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A file was deleted
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'files:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/file/public:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for file_public
                      url: 'https://api.slack.com/events/file_public'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A file was made public
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'files:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/file/shared:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for file_shared
                      url: 'https://api.slack.com/events/file_shared'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A file was shared
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'files:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/file/unshared:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for file_unshared
                      url: 'https://api.slack.com/events/file_unshared'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A file was unshared
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'files:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/grid/migration/finished:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for grid_migration_finished
                      url: 'https://api.slack.com/events/grid_migration_finished'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: An enterprise grid migration has finished on this workspace.
                    tags:
                      - name: allows_user_tokens
                      - name: app_event
                      - name: allows_workspace_tokens
                    x-scopes-required: []
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/grid/migration/started:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for grid_migration_started
                      url: 'https://api.slack.com/events/grid_migration_started'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: An enterprise grid migration has started on this workspace.
                    tags:
                      - name: allows_user_tokens
                      - name: app_event
                      - name: allows_workspace_tokens
                    x-scopes-required: []
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/group/archive:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for group_archive
                      url: 'https://api.slack.com/events/group_archive'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A private channel was archived
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'groups:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/group/close:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for group_close
                      url: 'https://api.slack.com/events/group_close'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: You closed a private channel
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'groups:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/group/history/changed:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for group_history_changed
                      url: 'https://api.slack.com/events/group_history_changed'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: Bulk updates were made to a private channel's history
                    tags:
                      - name: allows_user_tokens
                    x-scopes-required:
                      - 'groups:history'
                    x-tokens-allowed:
                      - user
              slack/events/group/left:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for group_left
                      url: 'https://api.slack.com/events/group_left'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: You left a private channel
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'groups:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/group/open:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for group_open
                      url: 'https://api.slack.com/events/group_open'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: You created a group DM
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'groups:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/group/rename:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for group_rename
                      url: 'https://api.slack.com/events/group_rename'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A private channel was renamed
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'groups:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/group/unarchive:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for group_unarchive
                      url: 'https://api.slack.com/events/group_unarchive'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A private channel was unarchived
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'groups:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/im/close:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for im_close
                      url: 'https://api.slack.com/events/im_close'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: You closed a DM
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'im:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/im/created:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for im_created
                      url: 'https://api.slack.com/events/im_created'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A DM was created
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'im:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/im/history/changed:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for im_history_changed
                      url: 'https://api.slack.com/events/im_history_changed'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: Bulk updates were made to a DM's history
                    tags:
                      - name: allows_user_tokens
                    x-scopes-required:
                      - 'im:history'
                    x-tokens-allowed:
                      - user
              slack/events/im/open:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for im_open
                      url: 'https://api.slack.com/events/im_open'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: You opened a DM
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'im:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/link/shared:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for link_shared
                      url: 'https://api.slack.com/events/link_shared'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: >-
                      A message was posted containing one or more links relevant to your
                      application
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'links:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/member/joined/channel:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for member_joined_channel
                      url: 'https://api.slack.com/events/member_joined_channel'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A user joined a public or private channel
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'channels:read'
                      - 'groups:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/member/left/channel:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for member_left_channel
                      url: 'https://api.slack.com/events/member_left_channel'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A user left a public or private channel
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'channels:read'
                      - 'groups:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/message:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for message
                      url: 'https://api.slack.com/events/message'
                    payload:
                      additionalProperties: true
                      description: >-
                        Generated from events/events-1512674163.json with shasum
                        b83372d878e1276a26d9e4df3d4a2563a60440a6
                      properties:
                        api_app_id:
                          title: Your Slack app's unique ID
                          type: string
                        authed_users:
                          items:
                            type: string
                          minItems: 1
                          type: array
                          uniqueItems: true
                        event:
                          additionalProperties: true
                          properties:
                            channel:
                              type: string
                            deleted_ts:
                              type: string
                            event_ts:
                              type: string
                            hidden:
                              type: boolean
                            previous_message:
                              additionalProperties: true
                              properties:
                                comment: {}
                                file:
                                  additionalProperties: true
                                  properties:
                                    channels:
                                      items:
                                        type: string
                                      minItems: 1
                                      type: array
                                      uniqueItems: true
                                    comments_count:
                                      type: integer
                                    created:
                                      type: integer
                                    display_as_bot:
                                      type: boolean
                                    editable:
                                      type: boolean
                                    editor:
                                      type: string
                                    external_type:
                                      type: string
                                    filetype:
                                      type: string
                                    groups:
                                      items: {}
                                      minItems: 0
                                      type: array
                                      uniqueItems: true
                                    id:
                                      type: string
                                    ims:
                                      items: {}
                                      minItems: 0
                                      type: array
                                      uniqueItems: true
                                    is_external:
                                      type: boolean
                                    is_public:
                                      type: boolean
                                    last_editor:
                                      type: string
                                    mimetype:
                                      type: string
                                    mode:
                                      type: string
                                    name:
                                      type: string
                                    permalink:
                                      type: string
                                    permalink_public:
                                      type: string
                                    pretty_type:
                                      type: string
                                    preview: {}
                                    public_url_shared:
                                      type: boolean
                                    size:
                                      type: integer
                                    state:
                                      type: string
                                    timestamp:
                                      type: integer
                                    title:
                                      type: string
                                    updated:
                                      type: integer
                                    url_private:
                                      type: string
                                    url_private_download:
                                      type: string
                                    user:
                                      type: string
                                    username:
                                      type: string
                                  required:
                                    - id
                                    - created
                                    - timestamp
                                    - name
                                    - title
                                    - mimetype
                                    - filetype
                                    - pretty_type
                                    - user
                                    - editable
                                    - size
                                    - mode
                                    - is_external
                                    - external_type
                                    - is_public
                                    - public_url_shared
                                    - display_as_bot
                                    - username
                                    - url_private
                                    - url_private_download
                                    - permalink
                                    - permalink_public
                                    - preview
                                    - updated
                                    - editor
                                    - last_editor
                                    - state
                                    - channels
                                    - groups
                                    - ims
                                    - comments_count
                                  type: object
                                subtype:
                                  type: string
                                text:
                                  type: string
                                ts:
                                  type: string
                                type:
                                  type: string
                              required:
                                - type
                                - subtype
                                - text
                                - file
                                - comment
                                - ts
                              type: object
                            subtype:
                              type: string
                            ts:
                              type: string
                            type:
                              type: string
                          required:
                            - type
                            - deleted_ts
                            - subtype
                            - hidden
                            - channel
                            - previous_message
                            - event_ts
                            - ts
                          type: object
                        event_id:
                          type: string
                        event_time:
                          type: integer
                        team_id:
                          title: >-
                            The unique identifier of the team/workspace where the event
                            happened
                          type: string
                        token:
                          title: Verification token used to validate the origin of the event
                          type: string
                        type:
                          type: string
                      required:
                        - token
                        - team_id
                        - api_app_id
                        - event
                        - type
                        - event_id
                        - event_time
                        - authed_users
                      title: 'API method: events/events-1512674163.json'
                      type: object
                    summary: A message was sent to a channel
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'channels:history'
                      - 'groups:history'
                      - 'im:history'
                      - 'mpim:history'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/message/app/home:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for message.app_home
                      url: 'https://api.slack.com/events/message.app_home'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A user sent a message to your Slack app
                    tags:
                      - name: allows_workspace_tokens
                    x-scopes-required: []
                    x-tokens-allowed:
                      - workspace
              slack/events/message/channels:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for message.channels
                      url: 'https://api.slack.com/events/message.channels'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A message was posted to a channel
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'channels:history'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/message/groups:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for message.groups
                      url: 'https://api.slack.com/events/message.groups'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A message was posted to a private channel
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'groups:history'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/message/im:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for message.im
                      url: 'https://api.slack.com/events/message.im'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A message was posted in a direct message channel
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'im:history'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/message/mpim:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for message.mpim
                      url: 'https://api.slack.com/events/message.mpim'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A message was posted in a multiparty direct message channel
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'mpim:history'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/pin/added:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for pin_added
                      url: 'https://api.slack.com/events/pin_added'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A pin was added to a channel
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'pins:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/pin/removed:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for pin_removed
                      url: 'https://api.slack.com/events/pin_removed'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A pin was removed from a channel
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'pins:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/reaction/added:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for reaction_added
                      url: 'https://api.slack.com/events/reaction_added'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A member has added an emoji reaction to an item
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'reactions:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/reaction/removed:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for reaction_removed
                      url: 'https://api.slack.com/events/reaction_removed'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A member removed an emoji reaction
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'reactions:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/resources/added:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for resources_added
                      url: 'https://api.slack.com/events/resources_added'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: Access to a set of resources was granted for your app
                    tags:
                      - name: allows_workspace_tokens
                    x-scopes-required: []
                    x-tokens-allowed:
                      - workspace
              slack/events/resources/removed:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for resources_removed
                      url: 'https://api.slack.com/events/resources_removed'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: Access to a set of resources was removed for your app
                    tags:
                      - name: allows_workspace_tokens
                    x-scopes-required: []
                    x-tokens-allowed:
                      - workspace
              slack/events/scope/denied:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for scope_denied
                      url: 'https://api.slack.com/events/scope_denied'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: OAuth scopes were denied to your app
                    tags:
                      - name: allows_workspace_tokens
                    x-scopes-required: []
                    x-tokens-allowed:
                      - workspace
              slack/events/scope/granted:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for scope_granted
                      url: 'https://api.slack.com/events/scope_granted'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: OAuth scopes were granted to your app
                    tags:
                      - name: allows_workspace_tokens
                    x-scopes-required: []
                    x-tokens-allowed:
                      - workspace
              slack/events/star/added:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for star_added
                      url: 'https://api.slack.com/events/star_added'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A member has starred an item
                    tags:
                      - name: allows_user_tokens
                    x-scopes-required:
                      - 'stars:read'
                    x-tokens-allowed:
                      - user
              slack/events/star/removed:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for star_removed
                      url: 'https://api.slack.com/events/star_removed'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A member removed a star
                    tags:
                      - name: allows_user_tokens
                    x-scopes-required:
                      - 'stars:read'
                    x-tokens-allowed:
                      - user
              slack/events/subteam/created:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for subteam_created
                      url: 'https://api.slack.com/events/subteam_created'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A User Group has been added to the workspace
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'usergroups:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/subteam/members/changed:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for subteam_members_changed
                      url: 'https://api.slack.com/events/subteam_members_changed'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: The membership of an existing User Group has changed
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'usergroups:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/subteam/self/added:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for subteam_self_added
                      url: 'https://api.slack.com/events/subteam_self_added'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: You have been added to a User Group
                    tags:
                      - name: allows_user_tokens
                    x-scopes-required:
                      - 'usergroups:read'
                    x-tokens-allowed:
                      - user
              slack/events/subteam/self/removed:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for subteam_self_removed
                      url: 'https://api.slack.com/events/subteam_self_removed'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: You have been removed from a User Group
                    tags:
                      - name: allows_user_tokens
                    x-scopes-required:
                      - 'usergroups:read'
                    x-tokens-allowed:
                      - user
              slack/events/subteam/updated:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for subteam_updated
                      url: 'https://api.slack.com/events/subteam_updated'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: An existing User Group has been updated or its members changed
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'usergroups:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/team/domain/change:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for team_domain_change
                      url: 'https://api.slack.com/events/team_domain_change'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: The workspace domain has changed
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'team:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/team/join:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for team_join
                      url: 'https://api.slack.com/events/team_join'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A new member has joined
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'users:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/team/rename:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for team_rename
                      url: 'https://api.slack.com/events/team_rename'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: The workspace name has changed
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'team:read'
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/tokens/revoked:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for tokens_revoked
                      url: 'https://api.slack.com/events/tokens_revoked'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: API tokens for your app were revoked.
                    tags:
                      - name: allows_user_tokens
                      - name: app_event
                      - name: allows_workspace_tokens
                    x-scopes-required: []
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/url/verification:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for url_verification
                      url: 'https://api.slack.com/events/url_verification'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: Verifies ownership of an Events API Request URL
                    tags:
                      - name: allows_user_tokens
                      - name: app_event
                      - name: allows_workspace_tokens
                    x-scopes-required: []
                    x-tokens-allowed:
                      - user
                      - workspace
              slack/events/user/change:
                subscribe:
                  message:
                    externalDocs:
                      description: Event documentation for user_change
                      url: 'https://api.slack.com/events/user_change'
                    payload:
                      $ref: '#/components/schemas/GenericEventWrapper'
                    summary: A member's data has changed
                    tags:
                      - name: allows_user_tokens
                      - name: allows_workspace_tokens
                    x-scopes-required:
                      - 'users:read'
                    x-tokens-allowed:
                      - user
                      - workspace
            components:
              schemas:
                GenericEventWrapper:
                  additionalProperties: true
                  description: Adapted from auto-generated content
                  properties:
                    api_app_id:
                      description: ' Use this to distinguish which app the event belongs to if you use multiple apps with the same Request URL.'
                      title: The unique identifier your installed Slack application.
                      type: string
                      x-examples:
                        - A2H9RFS1A
                    authed_users:
                      items:
                        type: string
                      minItems: 1
                      title: >-
                        An array of string-based User IDs. Each member of the collection
                        represents a user that has installed your application/bot and
                        indicates the described event would be visible to those users.
                      type: array
                      uniqueItems: true
                    event:
                      additionalProperties: true
                      properties:
                        event_ts:
                          title: When the event was dispatched
                          type: string
                        type:
                          title: The specific name of the event
                          type: string
                      required:
                        - type
                        - event_ts
                      title: 'The actual event, an object, that happened'
                      type: object
                      x-examples:
                        - channel: D0PNCRP9N
                          channel_type: app_home
                          event_ts: '1525215129.000001'
                          text: How many cats did we herd yesterday?
                          ts: '1525215129.000001'
                          type: message
                          user: U061F7AUR
                    event_id:
                      title: >-
                        A unique identifier for this specific event, globally unique across
                        all workspaces.
                      type: string
                      x-examples:
                        - Ev0PV52K25
                    event_time:
                      title: >-
                        The epoch timestamp in seconds indicating when this event was
                        dispatched.
                      type: integer
                      x-examples:
                        - 1525215129
                    team_id:
                      title: The unique identifier of the workspace where the event occurred
                      type: string
                      x-examples:
                        - T1H9RESGL
                    token:
                      title: A verification token to validate the event originated from Slack
                      type: string
                    type:
                      title: >-
                        Indicates which kind of event dispatch this is, usually
                        `event_callback`
                      type: string
                      x-examples:
                        - event_callback
                  required:
                    - token
                    - team_id
                    - api_app_id
                    - event
                    - type
                    - event_id
                    - event_time
                    - authed_users
                  title: Standard event wrapper for the Events API
                  type: object
                  x-examples:
                    - api_app_id: AXXXXXXXXX
                      authed_teams: []
                      event:
                        resources:
                          - resource:
                              grant:
                                resource_id: DXXXXXXXX
                                type: specific
                              type: im
                            scopes:
                              - 'chat:write:user'
                              - 'im:read'
                              - 'im:history'
                              - commands
                        type: resources_added
                      event_id: EvXXXXXXXX
                      event_time: 1234567890
                      team_id: TXXXXXXXX
                      token: XXYYZZ
                      type: event_callback
                    - api_app_id: AXXXXXXXXX
                      authed_teams: []
                      event:
                        event_ts: '1360782804.083113'
                        item:
                          channel: C0G9QF9GZ
                          ts: '1360782400.498405'
                          type: message
                        item_user: U0G9QF9C6
                        reaction: thumbsup
                        type: reaction_added
                        user: U024BE7LH
                      event_id: EvXXXXXXXX
                      event_time: 1234567890
                      team_id: TXXXXXXXX
                      token: XXYYZZ
                      type: event_callback
          

Documentation

The AsyncAPI can then be used at other stops along theAPI life cycle, helping publish documenation, mock servers, power tests, and service other needs for API providers.


JSON Schema for Slack Events API

This is a JSON Schema from the AsyncAPI above, definiting the schema for the message payload of the Slack Events API. It can be used independently of the AsyncAPI to validate objects being passed back and forth as part of the Slack Events API real time activity.

            "$id": https://example.com/person.schema.json
            "$schema": http://json-schema.org/draft-07/schema#
            title: GenericEventWrapper
            type: object
            additionalProperties: true
            description: Adapted from auto-generated content
            properties:
              api_app_id:
                description: ' Use this to distinguish which app the event belongs to if you use multiple apps with the same Request URL.'
                title: The unique identifier your installed Slack application.
                type: string
                x-examples:
                  - A2H9RFS1A
              authed_users:
                items:
                  type: string
                minItems: 1
                title: >-
                  An array of string-based User IDs. Each member of the collection
                  represents a user that has installed your application/bot and
                  indicates the described event would be visible to those users.
                type: array
                uniqueItems: true
              event:
                additionalProperties: true
                properties:
                  event_ts:
                    title: When the event was dispatched
                    type: string
                  type:
                    title: The specific name of the event
                    type: string
                required:
                  - type
                  - event_ts
                title: 'The actual event, an object, that happened'
                type: object
                x-examples:
                  - channel: D0PNCRP9N
                    channel_type: app_home
                    event_ts: '1525215129.000001'
                    text: How many cats did we herd yesterday?
                    ts: '1525215129.000001'
                    type: message
                    user: U061F7AUR
              event_id:
                title: >-
                  A unique identifier for this specific event, globally unique across
                  all workspaces.
                type: string
                x-examples:
                  - Ev0PV52K25
              event_time:
                title: >-
                  The epoch timestamp in seconds indicating when this event was
                  dispatched.
                type: integer
                x-examples:
                  - 1525215129
              team_id:
                title: The unique identifier of the workspace where the event occurred
                type: string
                x-examples:
                  - T1H9RESGL
              token:
                title: A verification token to validate the event originated from Slack
                type: string
              type:
                title: >-
                  Indicates which kind of event dispatch this is, usually
                  `event_callback`
                type: string
                x-examples:
                  - event_callback
            required:
              - token
              - team_id
              - api_app_id
              - event
              - type
              - event_id
              - event_time
              - authed_users
            title: Standard event wrapper for the Events API
            type: object
            x-examples:
              - api_app_id: AXXXXXXXXX
                authed_teams: []
                event:
                  resources:
                    - resource:
                        grant:
                          resource_id: DXXXXXXXX
                          type: specific
                        type: im
                      scopes:
                        - 'chat:write:user'
                        - 'im:read'
                        - 'im:history'
                        - commands
                  type: resources_added
                event_id: EvXXXXXXXX
                event_time: 1234567890
                team_id: TXXXXXXXX
                token: XXYYZZ
                type: event_callback
              - api_app_id: AXXXXXXXXX
                authed_teams: []
                event:
                  event_ts: '1360782804.083113'
                  item:
                    channel: C0G9QF9GZ
                    ts: '1360782400.498405'
                    type: message
                  item_user: U0G9QF9C6
                  reaction: thumbsup
                  type: reaction_added
                  user: U024BE7LH
                event_id: EvXXXXXXXX
                event_time: 1234567890
                team_id: TXXXXXXXX
                token: XXYYZZ
                type: event_callback
          

JSON Schema for Slack Web API

This is a JSON Schema from the OpenAPI above, definiting the schema for the message payload of the Slack Web API. It can be used independently of the OpenAPI to validate objects being passed back and forth as part of the Slack Web API request and response activity.

            "$id": https://example.com/person.schema.json
            "$schema": http://json-schema.org/draft-07/schema#
            title: Message
            type: object
            required:
            - replies
            - reply_count
            - subscribed
            - text
            - thread_ts
            - ts
            - type
            - user
            type: object
            properties:
              last_read:
                pattern: ^\d{10}\.\d{6}$
                type: string
              latest_reply:
                pattern: ^\d{10}\.\d{6}$
                type: string
              replies:
                type: array
                items:
                  $ref: '#/components/schemas/Reply'
                description: ''
              reply_count:
                type: integer
                format: int32
              reply_users:
                uniqueItems: true
                type: array
                items:
                  pattern: ^[UW][A-Z0-9]{2,}$
                  type: string
                description: ''
              reply_users_count:
                type: integer
                format: int32
              source_team:
                pattern: ^[T][A-Z0-9]{2,}$
                type: string
              subscribed:
                type: boolean
              team:
                pattern: ^[T][A-Z0-9]{2,}$
                type: string
              text:
                type: string
              thread_ts:
                pattern: ^\d{10}\.\d{6}$
                type: string
              ts:
                pattern: ^\d{10}\.\d{6}$
                type: string
              type:
                type: string
              unread_count:
                type: integer
                format: int32
              user:
                pattern: ^[UW][A-Z0-9]{2,}$
                type: string
              user_profile:
                $ref: '#/components/schemas/objs_user_profile_short'
              user_team:
                pattern: ^[T][A-Z0-9]{2,}$
                type: string
          

Schema Validation

The two JSON Schema for the Slack Web and Events API above can be used to validate JSON as part of the the operation and integration with the Slack API.



Database Schema

JSON Schema can be used for validation, but also to generate database schema, and drive other tools across the life cycle of API, helping define the request, response, and payload of APIs.

            CREATE TABLE generic (
              id TEXT,
              replies INT,
              reply_count INT,
              subscribed BOOLEAN,
              text TEXT,
              thread_ts TEXT,
              ts TEXT,
              type TEXT,
              user TEXT,
              last_read TEXT,
              latest_reply TEXT,
              reply_users_count INT,
              source_team TEXT,
              team TEXT,
              unread_count INT,
              user_team TEXT,
              PRIMARY KEY (id)
            );
          

JSON Schema for OpenAPI

To further go down the rabbit hole, here is the JSON Schema for OpenAPI, which can be used to validate that the Slack Web API OpenAPI is a valid OpenAPI, definining what is a valid definition of an API including its schema.

          id: https://spec.openapis.org/oas/3.0/schema/2019-04-02
          $schema: http://json-schema.org/draft-04/schema#
          description: Validation schema for OpenAPI Specification 3.0.X.
          type: object
          required:
            - openapi
            - info
            - paths
          properties:
            openapi:
              type: string
              pattern: ^3\.0\.\d(-.+)?$
            info:
              $ref: '#/definitions/Info'
            externalDocs:
              $ref: '#/definitions/ExternalDocumentation'
            servers:
              type: array
              items:
                $ref: '#/definitions/Server'
            security:
              type: array
              items:
                $ref: '#/definitions/SecurityRequirement'
            tags:
              type: array
              items:
                $ref: '#/definitions/Tag'
              uniqueItems: true
            paths:
              $ref: '#/definitions/Paths'
            components:
              $ref: '#/definitions/Components'
          patternProperties:
            '^x-': {}
          additionalProperties: false
          definitions:
            Reference:
              type: object
              required:
                - $ref
              patternProperties:
                '^\$ref$':
                  type: string
                  format: uri-reference
            Info:
              type: object
              required:
                - title
                - version
              properties:
                title:
                  type: string
                description:
                  type: string
                termsOfService:
                  type: string
                  format: uri-reference
                contact:
                  $ref: '#/definitions/Contact'
                license:
                  $ref: '#/definitions/License'
                version:
                  type: string
              patternProperties:
                '^x-': {}
              additionalProperties: false


            Contact:
              type: object
              properties:
                name:
                  type: string
                url:
                  type: string
                  format: uri-reference
                email:
                  type: string
                  format: email
              patternProperties:
                '^x-': {}
              additionalProperties: false

            License:
              type: object
              required:
                - name
              properties:
                name:
                  type: string
                url:
                  type: string
                  format: uri-reference
              patternProperties:
                '^x-': {}
              additionalProperties: false

            Server:
              type: object
              required:
                - url
              properties:
                url:
                  type: string
                description:
                  type: string
                variables:
                  type: object
                  additionalProperties:
                    $ref: '#/definitions/ServerVariable'
              patternProperties:
                '^x-': {}
              additionalProperties: false

            ServerVariable:
              type: object
              required:
                - default
              properties:
                enum:
                  type: array
                  items:
                    type: string
                default:
                  type: string
                description:
                  type: string
              patternProperties:
                '^x-': {}
              additionalProperties: false
            Components:
              type: object
              properties:
                schemas:
                  type: object
                  patternProperties:
                    '^[a-zA-Z0-9\.\-_]+$':
                      oneOf:
                        - $ref: '#/definitions/Schema'
                        - $ref: '#/definitions/Reference'
                responses:
                  type: object
                  patternProperties:
                    '^[a-zA-Z0-9\.\-_]+$':
                      oneOf:
                        - $ref: '#/definitions/Reference'
                        - $ref: '#/definitions/Response'
                parameters:
                  type: object
                  patternProperties:
                    '^[a-zA-Z0-9\.\-_]+$':
                      oneOf:
                        - $ref: '#/definitions/Reference'
                        - $ref: '#/definitions/Parameter'
                examples:
                  type: object
                  patternProperties:
                    '^[a-zA-Z0-9\.\-_]+$':
                      oneOf:
                        - $ref: '#/definitions/Reference'
                        - $ref: '#/definitions/Example'
                requestBodies:
                  type: object
                  patternProperties:
                    '^[a-zA-Z0-9\.\-_]+$':
                      oneOf:
                        - $ref: '#/definitions/Reference'
                        - $ref: '#/definitions/RequestBody'
                headers:
                  type: object
                  patternProperties:
                    '^[a-zA-Z0-9\.\-_]+$':
                      oneOf:
                        - $ref: '#/definitions/Reference'
                        - $ref: '#/definitions/Header'
                securitySchemes:
                  type: object
                  patternProperties:
                    '^[a-zA-Z0-9\.\-_]+$':
                      oneOf:
                        - $ref: '#/definitions/Reference'
                        - $ref: '#/definitions/SecurityScheme'
                links:
                  type: object
                  patternProperties:
                    '^[a-zA-Z0-9\.\-_]+$':
                      oneOf:
                        - $ref: '#/definitions/Reference'
                        - $ref: '#/definitions/Link'
                callbacks:
                  type: object
                  patternProperties:
                    '^[a-zA-Z0-9\.\-_]+$':
                      oneOf:
                        - $ref: '#/definitions/Reference'
                        - $ref: '#/definitions/Callback'
              patternProperties:
                '^x-': {}
              additionalProperties: false

            Schema:
              type: object
              properties:
                title:
                  type: string
                multipleOf:
                  type: number
                  minimum: 0
                  exclusiveMinimum: true
                maximum:
                  type: number
                exclusiveMaximum:
                  type: boolean
                  default: false
                minimum:
                  type: number
                exclusiveMinimum:
                  type: boolean
                  default: false
                maxLength:
                  type: integer
                  minimum: 0
                minLength:
                  type: integer
                  minimum: 0
                  default: 0
                pattern:
                  type: string
                  format: regex
                maxItems:
                  type: integer
                  minimum: 0
                minItems:
                  type: integer
                  minimum: 0
                  default: 0
                uniqueItems:
                  type: boolean
                  default: false
                maxProperties:
                  type: integer
                  minimum: 0
                minProperties:
                  type: integer
                  minimum: 0
                  default: 0
                required:
                  type: array
                  items:
                    type: string
                  minItems: 1
                  uniqueItems: true
                enum:
                  type: array
                  items: {}
                  minItems: 1
                  uniqueItems: false
                type:
                  type: string
                  enum:
                    - array
                    - boolean
                    - integer
                    - number
                    - object
                    - string
                not:
                  oneOf:
                    - $ref: '#/definitions/Schema'
                    - $ref: '#/definitions/Reference'
                allOf:
                  type: array
                  items:
                    oneOf:
                      - $ref: '#/definitions/Schema'
                      - $ref: '#/definitions/Reference'
                oneOf:
                  type: array
                  items:
                    oneOf:
                      - $ref: '#/definitions/Schema'
                      - $ref: '#/definitions/Reference'
                anyOf:
                  type: array
                  items:
                    oneOf:
                      - $ref: '#/definitions/Schema'
                      - $ref: '#/definitions/Reference'
                items:
                  oneOf:
                    - $ref: '#/definitions/Schema'
                    - $ref: '#/definitions/Reference'
                properties:
                  type: object
                  additionalProperties:
                    oneOf:
                      - $ref: '#/definitions/Schema'
                      - $ref: '#/definitions/Reference'
                additionalProperties:
                  oneOf:
                    - $ref: '#/definitions/Schema'
                    - $ref: '#/definitions/Reference'
                    - type: boolean
                  default: true
                description:
                  type: string
                format:
                  type: string
                default: {}
                nullable:
                  type: boolean
                  default: false
                discriminator:
                  $ref: '#/definitions/Discriminator'
                readOnly:
                  type: boolean
                  default: false
                writeOnly:
                  type: boolean
                  default: false
                example: {}
                externalDocs:
                  $ref: '#/definitions/ExternalDocumentation'
                deprecated:
                  type: boolean
                  default: false
                xml:
                  $ref: '#/definitions/XML'
              patternProperties:
                '^x-': {}
              additionalProperties: false

            Discriminator:
              type: object
              required:
                - propertyName
              properties:
                propertyName:
                  type: string
                mapping:
                  type: object
                  additionalProperties:
                    type: string

            XML:
              type: object
              properties:
                name:
                  type: string
                namespace:
                  type: string
                  format: uri
                prefix:
                  type: string
                attribute:
                  type: boolean
                  default: false
                wrapped:
                  type: boolean
                  default: false
              patternProperties:
                '^x-': {}
              additionalProperties: false

            Response:
              type: object
              required:
                - description
              properties:
                description:
                  type: string
                headers:
                  type: object
                  additionalProperties:
                    oneOf:
                      - $ref: '#/definitions/Header'
                      - $ref: '#/definitions/Reference'
                content:
                  type: object
                  additionalProperties:
                    $ref: '#/definitions/MediaType'
                links:
                  type: object
                  additionalProperties:
                    oneOf:
                      - $ref: '#/definitions/Link'
                      - $ref: '#/definitions/Reference'
              patternProperties:
                '^x-': {}
              additionalProperties: false

            MediaType:
              type: object
              properties:
                schema:
                  oneOf:
                    - $ref: '#/definitions/Schema'
                    - $ref: '#/definitions/Reference'
                example: {}
                examples:
                  type: object
                  additionalProperties:
                    oneOf:
                      - $ref: '#/definitions/Example'
                      - $ref: '#/definitions/Reference'
                encoding:
                  type: object
                  additionalProperties:
                    $ref: '#/definitions/Encoding'
              patternProperties:
                '^x-': {}
              additionalProperties: false
              allOf:
                - $ref: '#/definitions/ExampleXORExamples'

            Example:
              type: object
              properties:
                summary:
                  type: string
                description:
                  type: string
                value: {}
                externalValue:
                  type: string
                  format: uri-reference
              patternProperties:
                '^x-': {}
              additionalProperties: false

            Header:
              type: object
              properties:
                description:
                  type: string
                required:
                  type: boolean
                  default: false
                deprecated:
                  type: boolean
                  default: false
                allowEmptyValue:
                  type: boolean
                  default: false
                style:
                  type: string
                  enum:
                    - simple
                  default: simple
                explode:
                  type: boolean
                allowReserved:
                  type: boolean
                  default: false
                schema:
                  oneOf:
                    - $ref: '#/definitions/Schema'
                    - $ref: '#/definitions/Reference'
                content:
                  type: object
                  additionalProperties:
                    $ref: '#/definitions/MediaType'
                  minProperties: 1
                  maxProperties: 1
                example: {}
                examples:
                  type: object
                  additionalProperties:
                    oneOf:
                      - $ref: '#/definitions/Example'
                      - $ref: '#/definitions/Reference'
              patternProperties:
                '^x-': {}
              additionalProperties: false
              allOf:
                - $ref: '#/definitions/ExampleXORExamples'
                - $ref: '#/definitions/SchemaXORContent'

            Paths:
              type: object
              patternProperties:
                '^\/':
                  $ref: '#/definitions/PathItem'
                '^x-': {}
              additionalProperties: false

            PathItem:
              type: object
              properties:
                $ref:
                  type: string
                summary:
                  type: string
                description:
                  type: string
                servers:
                  type: array
                  items:
                    $ref: '#/definitions/Server'
                parameters:
                  type: array
                  items:
                    oneOf:
                      - $ref: '#/definitions/Parameter'
                      - $ref: '#/definitions/Reference'
                  uniqueItems: true
              patternProperties:
                '^(get|put|post|delete|options|head|patch|trace)$':
                  $ref: '#/definitions/Operation'
                '^x-': {}
              additionalProperties: false

            Operation:
              type: object
              required:
                - responses
              properties:
                tags:
                  type: array
                  items:
                    type: string
                summary:
                  type: string
                description:
                  type: string
                externalDocs:
                  $ref: '#/definitions/ExternalDocumentation'
                operationId:
                  type: string
                parameters:
                  type: array
                  items:
                    oneOf:
                      - $ref: '#/definitions/Parameter'
                      - $ref: '#/definitions/Reference'
                  uniqueItems: true
                requestBody:
                  oneOf:
                    - $ref: '#/definitions/RequestBody'
                    - $ref: '#/definitions/Reference'
                responses:
                  $ref: '#/definitions/Responses'
                callbacks:
                  type: object
                  additionalProperties:
                    oneOf:
                      - $ref: '#/definitions/Callback'
                      - $ref: '#/definitions/Reference'
                deprecated:
                  type: boolean
                  default: false
                security:
                  type: array
                  items:
                    $ref: '#/definitions/SecurityRequirement'
                servers:
                  type: array
                  items:
                    $ref: '#/definitions/Server'
              patternProperties:
                '^x-': {}
              additionalProperties: false

            Responses:
              type: object
              properties:
                default:
                  oneOf:
                    - $ref: '#/definitions/Response'
                    - $ref: '#/definitions/Reference'
              patternProperties:
                '^[1-5](?:\d{2}|XX)$':
                  oneOf:
                    - $ref: '#/definitions/Response'
                    - $ref: '#/definitions/Reference'
                '^x-': {}
              minProperties: 1
              additionalProperties: false


            SecurityRequirement:
              type: object
              additionalProperties:
                type: array
                items:
                  type: string

            Tag:
              type: object
              required:
                - name
              properties:
                name:
                  type: string
                description:
                  type: string
                externalDocs:
                  $ref: '#/definitions/ExternalDocumentation'
              patternProperties:
                '^x-': {}
              additionalProperties: false

            ExternalDocumentation:
              type: object
              required:
                - url
              properties:
                description:
                  type: string
                url:
                  type: string
                  format: uri-reference
              patternProperties:
                '^x-': {}
              additionalProperties: false

            ExampleXORExamples:
              description: Example and examples are mutually exclusive
              not:
                required: [example, examples]

            SchemaXORContent:
              description: Schema and content are mutually exclusive, at least one is required
              not:
                required: [schema, content]
              oneOf:
                - required: [schema]
                - required: [content]
                  description: Some properties are not allowed if content is present
                  allOf:
                    - not:
                        required: [style]
                    - not:
                        required: [explode]
                    - not:
                        required: [allowReserved]
                    - not:
                        required: [example]
                    - not:
                        required: [examples]

            Parameter:
              type: object
              properties:
                name:
                  type: string
                in:
                  type: string
                description:
                  type: string
                required:
                  type: boolean
                  default: false
                deprecated:
                  type: boolean
                  default: false
                allowEmptyValue:
                  type: boolean
                  default: false
                style:
                  type: string
                explode:
                  type: boolean
                allowReserved:
                  type: boolean
                  default: false
                schema:
                  oneOf:
                    - $ref: '#/definitions/Schema'
                    - $ref: '#/definitions/Reference'
                content:
                  type: object
                  additionalProperties:
                    $ref: '#/definitions/MediaType'
                  minProperties: 1
                  maxProperties: 1
                example: {}
                examples:
                  type: object
                  additionalProperties:
                    oneOf:
                      - $ref: '#/definitions/Example'
                      - $ref: '#/definitions/Reference'
              patternProperties:
                '^x-': {}
              additionalProperties: false
              required:
                - name
                - in
              allOf:
                - $ref: '#/definitions/ExampleXORExamples'
                - $ref: '#/definitions/SchemaXORContent'
                - $ref: '#/definitions/ParameterLocation'

            ParameterLocation:
              description: Parameter location
              oneOf:
                - description: Parameter in path
                  required:
                    - required
                  properties:
                    in:
                      enum: [path]
                    style:
                      enum: [matrix, label, simple]
                      default: simple
                    required:
                      enum: [true]

                - description: Parameter in query
                  properties:
                    in:
                      enum: [query]
                    style:
                      enum: [form, spaceDelimited, pipeDelimited, deepObject]
                      default: form

                - description: Parameter in header
                  properties:
                    in:
                      enum: [header]
                    style:
                      enum: [simple]
                      default: simple

                - description: Parameter in cookie
                  properties:
                    in:
                      enum: [cookie]
                    style:
                      enum: [form]
                      default: form

            RequestBody:
              type: object
              required:
                - content
              properties:
                description:
                  type: string
                content:
                  type: object
                  additionalProperties:
                    $ref: '#/definitions/MediaType'
                required:
                  type: boolean
                  default: false
              patternProperties:
                '^x-': {}
              additionalProperties: false

            SecurityScheme:
              oneOf:
                - $ref: '#/definitions/APIKeySecurityScheme'
                - $ref: '#/definitions/HTTPSecurityScheme'
                - $ref: '#/definitions/OAuth2SecurityScheme'
                - $ref: '#/definitions/OpenIdConnectSecurityScheme'

            APIKeySecurityScheme:
              type: object
              required:
                - type
                - name
                - in
              properties:
                type:
                  type: string
                  enum:
                    - apiKey
                name:
                  type: string
                in:
                  type: string
                  enum:
                    - header
                    - query
                    - cookie
                description:
                  type: string
              patternProperties:
                '^x-': {}
              additionalProperties: false

            HTTPSecurityScheme:
              type: object
              required:
                - scheme
                - type
              properties:
                scheme:
                  type: string
                bearerFormat:
                  type: string
                description:
                  type: string
                type:
                  type: string
                  enum:
                    - http
              patternProperties:
                '^x-': {}
              additionalProperties: false
              oneOf:
                - description: Bearer
                  properties:
                    scheme:
                      enum: [bearer]

                - description: Non Bearer
                  not:
                    required: [bearerFormat]
                  properties:
                    scheme:
                      not:
                        enum: [bearer]

            OAuth2SecurityScheme:
              type: object
              required:
                - type
                - flows
              properties:
                type:
                  type: string
                  enum:
                    - oauth2
                flows:
                  $ref: '#/definitions/OAuthFlows'
                description:
                  type: string
              patternProperties:
                '^x-': {}
              additionalProperties: false

            OpenIdConnectSecurityScheme:
              type: object
              required:
                - type
                - openIdConnectUrl
              properties:
                type:
                  type: string
                  enum:
                    - openIdConnect
                openIdConnectUrl:
                  type: string
                  format: uri-reference
                description:
                  type: string
              patternProperties:
                '^x-': {}
              additionalProperties: false

            OAuthFlows:
              type: object
              properties:
                implicit:
                  $ref: '#/definitions/ImplicitOAuthFlow'
                password:
                  $ref: '#/definitions/PasswordOAuthFlow'
                clientCredentials:
                  $ref: '#/definitions/ClientCredentialsFlow'
                authorizationCode:
                  $ref: '#/definitions/AuthorizationCodeOAuthFlow'
              patternProperties:
                '^x-': {}
              additionalProperties: false

            ImplicitOAuthFlow:
              type: object
              required:
                - authorizationUrl
                - scopes
              properties:
                authorizationUrl:
                  type: string
                  format: uri-reference
                refreshUrl:
                  type: string
                  format: uri-reference
                scopes:
                  type: object
                  additionalProperties:
                    type: string
              patternProperties:
                '^x-': {}
              additionalProperties: false

            PasswordOAuthFlow:
              type: object
              required:
                - tokenUrl
              properties:
                tokenUrl:
                  type: string
                  format: uri-reference
                refreshUrl:
                  type: string
                  format: uri-reference
                scopes:
                  type: object
                  additionalProperties:
                    type: string
              patternProperties:
                '^x-': {}
              additionalProperties: false

            ClientCredentialsFlow:
              type: object
              required:
                - tokenUrl
              properties:
                tokenUrl:
                  type: string
                  format: uri-reference
                refreshUrl:
                  type: string
                  format: uri-reference
                scopes:
                  type: object
                  additionalProperties:
                    type: string
              patternProperties:
                '^x-': {}
              additionalProperties: false

            AuthorizationCodeOAuthFlow:
              type: object
              required:
                - authorizationUrl
                - tokenUrl
              properties:
                authorizationUrl:
                  type: string
                  format: uri-reference
                tokenUrl:
                  type: string
                  format: uri-reference
                refreshUrl:
                  type: string
                  format: uri-reference
                scopes:
                  type: object
                  additionalProperties:
                    type: string
              patternProperties:
                '^x-': {}
              additionalProperties: false

            Link:
              type: object
              properties:
                operationId:
                  type: string
                operationRef:
                  type: string
                  format: uri-reference
                parameters:
                  type: object
                  additionalProperties: {}
                requestBody: {}
                description:
                  type: string
                server:
                  $ref: '#/definitions/Server'
              patternProperties:
                '^x-': {}
              additionalProperties: false
              not:
                description: Operation Id and Operation Ref are mutually exclusive
                required: [operationId, operationRef]

            Callback:
              type: object
              additionalProperties:
                $ref: '#/definitions/PathItem'
              patternProperties:
                '^x-': {}

            Encoding:
              type: object
              properties:
                contentType:
                  type: string
                headers:
                  type: object
                  additionalProperties:
                    $ref: '#/definitions/Header'
                style:
                  type: string
                  enum:
                    - form
                    - spaceDelimited
                    - pipeDelimited
                    - deepObject
                explode:
                  type: boolean
                allowReserved:
                  type: boolean
                  default: false
              additionalProperties: false
        

JSON Schema for the AsyncAPI Specification

To further go down the rabbit hole, here is the JSON Schema for AsyncAPI, which can be used to validate that the Slack Events API OpenAPI is a valid OpenAPI, definining what is a valid definition of an API including its schema.

        title: AsyncAPI 2.0.0 schema.
        "$schema": http://json-schema.org/draft-07/schema#
        type: object
        required:
        - asyncapi
        - info
        - channels
        additionalProperties: false
        patternProperties:
          "^x-[\\w\\d\\.\\-\\_]+$":
            "$ref": "#/definitions/specificationExtension"
        properties:
          asyncapi:
            type: string
            enum:
            - 2.0.0
            description: The AsyncAPI specification version of this document.
          id:
            type: string
            description: A unique id representing the application.
            format: uri
          info:
            "$ref": "#/definitions/info"
          servers:
            type: object
            additionalProperties:
              "$ref": "#/definitions/server"
          defaultContentType:
            type: string
          channels:
            "$ref": "#/definitions/channels"
          components:
            "$ref": "#/definitions/components"
          tags:
            type: array
            items:
              "$ref": "#/definitions/tag"
            uniqueItems: true
          externalDocs:
            "$ref": "#/definitions/externalDocs"
        definitions:
          Reference:
            type: object
            required:
            - "$ref"
            properties:
              "$ref":
                "$ref": "#/definitions/ReferenceObject"
          ReferenceObject:
            type: string
            format: uri-reference
          info:
            type: object
            description: General information about the API.
            required:
            - version
            - title
            additionalProperties: false
            patternProperties:
              "^x-[\\w\\d\\.\\-\\_]+$":
                "$ref": "#/definitions/specificationExtension"
            properties:
              title:
                type: string
                description: A unique and precise title of the API.
              version:
                type: string
                description: A semantic version number of the API.
              description:
                type: string
                description: A longer description of the API. Should be different from the
                  title. CommonMark is allowed.
              termsOfService:
                type: string
                description: A URL to the Terms of Service for the API. MUST be in the format
                  of a URL.
                format: uri
              contact:
                "$ref": "#/definitions/contact"
              license:
                "$ref": "#/definitions/license"
          contact:
            type: object
            description: Contact information for the owners of the API.
            additionalProperties: false
            properties:
              name:
                type: string
                description: The identifying name of the contact person/organization.
              url:
                type: string
                description: The URL pointing to the contact information.
                format: uri
              email:
                type: string
                description: The email address of the contact person/organization.
                format: email
            patternProperties:
              "^x-[\\w\\d\\.\\-\\_]+$":
                "$ref": "#/definitions/specificationExtension"
          license:
            type: object
            required:
            - name
            additionalProperties: false
            properties:
              name:
                type: string
                description: The name of the license type. It's encouraged to use an OSI compatible
                  license.
              url:
                type: string
                description: The URL pointing to the license.
                format: uri
            patternProperties:
              "^x-[\\w\\d\\.\\-\\_]+$":
                "$ref": "#/definitions/specificationExtension"
          server:
            type: object
            description: An object representing a Server.
            required:
            - url
            - protocol
            additionalProperties: false
            patternProperties:
              "^x-[\\w\\d\\.\\-\\_]+$":
                "$ref": "#/definitions/specificationExtension"
            properties:
              url:
                type: string
              description:
                type: string
              protocol:
                type: string
                description: The transfer protocol.
              protocolVersion:
                type: string
              variables:
                "$ref": "#/definitions/serverVariables"
              security:
                type: array
                items:
                  "$ref": "#/definitions/SecurityRequirement"
              bindings:
                "$ref": "#/definitions/bindingsObject"
          serverVariables:
            type: object
            additionalProperties:
              "$ref": "#/definitions/serverVariable"
          serverVariable:
            type: object
            description: An object representing a Server Variable for server URL template
              substitution.
            minProperties: 1
            additionalProperties: false
            patternProperties:
              "^x-[\\w\\d\\.\\-\\_]+$":
                "$ref": "#/definitions/specificationExtension"
            properties:
              enum:
                type: array
                items:
                  type: string
                uniqueItems: true
              default:
                type: string
              description:
                type: string
              examples:
                type: array
                items:
                  type: string
          channels:
            type: object
            propertyNames:
              type: string
              format: uri-template
              minLength: 1
            additionalProperties:
              "$ref": "#/definitions/channelItem"
          components:
            type: object
            description: An object to hold a set of reusable objects for different aspects
              of the AsyncAPI Specification.
            additionalProperties: false
            properties:
              schemas:
                "$ref": "#/definitions/schemas"
              messages:
                "$ref": "#/definitions/messages"
              securitySchemes:
                type: object
                patternProperties:
                  "^[\\w\\d\\.\\-_]+$":
                    oneOf:
                    - "$ref": "#/definitions/Reference"
                    - "$ref": "#/definitions/SecurityScheme"
              parameters:
                "$ref": "#/definitions/parameters"
              correlationIds:
                type: object
                patternProperties:
                  "^[\\w\\d\\.\\-_]+$":
                    oneOf:
                    - "$ref": "#/definitions/Reference"
                    - "$ref": "#/definitions/correlationId"
              operationTraits:
                type: object
                additionalProperties:
                  "$ref": "#/definitions/operationTrait"
              messageTraits:
                type: object
                additionalProperties:
                  "$ref": "#/definitions/messageTrait"
              serverBindings:
                type: object
                additionalProperties:
                  "$ref": "#/definitions/bindingsObject"
              channelBindings:
                type: object
                additionalProperties:
                  "$ref": "#/definitions/bindingsObject"
              operationBindings:
                type: object
                additionalProperties:
                  "$ref": "#/definitions/bindingsObject"
              messageBindings:
                type: object
                additionalProperties:
                  "$ref": "#/definitions/bindingsObject"
          schemas:
            type: object
            additionalProperties:
              "$ref": "#/definitions/schema"
            description: JSON objects describing schemas the API uses.
          messages:
            type: object
            additionalProperties:
              "$ref": "#/definitions/message"
            description: JSON objects describing the messages being consumed and produced
              by the API.
          parameters:
            type: object
            additionalProperties:
              "$ref": "#/definitions/parameter"
            description: JSON objects describing re-usable channel parameters.
          schema:
            allOf:
            - "$ref": http://json-schema.org/draft-07/schema#
            - type: object
              patternProperties:
                "^x-[\\w\\d\\.\\-\\_]+$":
                  "$ref": "#/definitions/specificationExtension"
              properties:
                additionalProperties:
                  anyOf:
                  - "$ref": "#/definitions/schema"
                  - type: boolean
                  default: {}
                items:
                  anyOf:
                  - "$ref": "#/definitions/schema"
                  - type: array
                    minItems: 1
                    items:
                      "$ref": "#/definitions/schema"
                  default: {}
                allOf:
                  type: array
                  minItems: 1
                  items:
                    "$ref": "#/definitions/schema"
                oneOf:
                  type: array
                  minItems: 2
                  items:
                    "$ref": "#/definitions/schema"
                anyOf:
                  type: array
                  minItems: 2
                  items:
                    "$ref": "#/definitions/schema"
                not:
                  "$ref": "#/definitions/schema"
                properties:
                  type: object
                  additionalProperties:
                    "$ref": "#/definitions/schema"
                  default: {}
                patternProperties:
                  type: object
                  additionalProperties:
                    "$ref": "#/definitions/schema"
                  default: {}
                propertyNames:
                  "$ref": "#/definitions/schema"
                contains:
                  "$ref": "#/definitions/schema"
                discriminator:
                  type: string
                externalDocs:
                  "$ref": "#/definitions/externalDocs"
                deprecated:
                  type: boolean
                  default: false
          externalDocs:
            type: object
            additionalProperties: false
            description: information about external documentation
            required:
            - url
            properties:
              description:
                type: string
              url:
                type: string
                format: uri
            patternProperties:
              "^x-[\\w\\d\\.\\-\\_]+$":
                "$ref": "#/definitions/specificationExtension"
          channelItem:
            type: object
            additionalProperties: false
            patternProperties:
              "^x-[\\w\\d\\.\\-\\_]+$":
                "$ref": "#/definitions/specificationExtension"
            minProperties: 1
            properties:
              "$ref":
                "$ref": "#/definitions/ReferenceObject"
              parameters:
                type: object
                additionalProperties:
                  "$ref": "#/definitions/parameter"
              description:
                type: string
                description: A description of the channel.
              publish:
                "$ref": "#/definitions/operation"
              subscribe:
                "$ref": "#/definitions/operation"
              deprecated:
                type: boolean
                default: false
              bindings:
                "$ref": "#/definitions/bindingsObject"
          parameter:
            additionalProperties: false
            patternProperties:
              "^x-[\\w\\d\\.\\-\\_]+$":
                "$ref": "#/definitions/specificationExtension"
            properties:
              description:
                type: string
                description: A brief description of the parameter. This could contain examples
                  of use. GitHub Flavored Markdown is allowed.
              schema:
                "$ref": "#/definitions/schema"
              location:
                type: string
                description: A runtime expression that specifies the location of the parameter
                  value
                pattern: "^\\$message\\.(header|payload)\\#(\\/(([^\\/~])|(~[01]))*)*"
              "$ref":
                "$ref": "#/definitions/ReferenceObject"
          operation:
            type: object
            additionalProperties: false
            patternProperties:
              "^x-[\\w\\d\\.\\-\\_]+$":
                "$ref": "#/definitions/specificationExtension"
            properties:
              traits:
                type: array
                items:
                  oneOf:
                  - "$ref": "#/definitions/Reference"
                  - "$ref": "#/definitions/operationTrait"
                  - type: array
                    items:
                    - oneOf:
                      - "$ref": "#/definitions/Reference"
                      - "$ref": "#/definitions/operationTrait"
                    - type: object
                      additionalItems: true
              summary:
                type: string
              description:
                type: string
              tags:
                type: array
                items:
                  "$ref": "#/definitions/tag"
                uniqueItems: true
              externalDocs:
                "$ref": "#/definitions/externalDocs"
              operationId:
                type: string
              bindings:
                "$ref": "#/definitions/bindingsObject"
              message:
                "$ref": "#/definitions/message"
          message:
            oneOf:
            - "$ref": "#/definitions/Reference"
            - oneOf:
              - type: object
                required:
                - oneOf
                additionalProperties: false
                properties:
                  oneOf:
                    type: array
                    items:
                      "$ref": "#/definitions/message"
              - type: object
                additionalProperties: false
                patternProperties:
                  "^x-[\\w\\d\\.\\-\\_]+$":
                    "$ref": "#/definitions/specificationExtension"
                properties:
                  schemaFormat:
                    type: string
                  contentType:
                    type: string
                  headers:
                    "$ref": "#/definitions/schema"
                  payload: {}
                  correlationId:
                    oneOf:
                    - "$ref": "#/definitions/Reference"
                    - "$ref": "#/definitions/correlationId"
                  tags:
                    type: array
                    items:
                      "$ref": "#/definitions/tag"
                    uniqueItems: true
                  summary:
                    type: string
                    description: A brief summary of the message.
                  name:
                    type: string
                    description: Name of the message.
                  title:
                    type: string
                    description: A human-friendly title for the message.
                  description:
                    type: string
                    description: A longer description of the message. CommonMark is allowed.
                  externalDocs:
                    "$ref": "#/definitions/externalDocs"
                  deprecated:
                    type: boolean
                    default: false
                  examples:
                    type: array
                    items:
                      type: object
                  bindings:
                    "$ref": "#/definitions/bindingsObject"
                  traits:
                    type: array
                    items:
                      oneOf:
                      - "$ref": "#/definitions/Reference"
                      - "$ref": "#/definitions/messageTrait"
                      - type: array
                        items:
                        - oneOf:
                          - "$ref": "#/definitions/Reference"
                          - "$ref": "#/definitions/messageTrait"
                        - type: object
                          additionalItems: true
          bindingsObject:
            type: object
            additionalProperties: true
            properties:
              http: {}
              ws: {}
              amqp: {}
              amqp1: {}
              mqtt: {}
              mqtt5: {}
              kafka: {}
              nats: {}
              jms: {}
              sns: {}
              sqs: {}
              stomp: {}
              redis: {}
              mercure: {}
          correlationId:
            type: object
            required:
            - location
            additionalProperties: false
            patternProperties:
              "^x-[\\w\\d\\.\\-\\_]+$":
                "$ref": "#/definitions/specificationExtension"
            properties:
              description:
                type: string
                description: A optional description of the correlation ID. GitHub Flavored
                  Markdown is allowed.
              location:
                type: string
                description: A runtime expression that specifies the location of the correlation
                  ID
                pattern: "^\\$message\\.(header|payload)\\#(\\/(([^\\/~])|(~[01]))*)*"
          specificationExtension:
            description: Any property starting with x- is valid.
            additionalProperties: true
            additionalItems: true
          tag:
            type: object
            additionalProperties: false
            required:
            - name
            properties:
              name:
                type: string
              description:
                type: string
              externalDocs:
                "$ref": "#/definitions/externalDocs"
            patternProperties:
              "^x-[\\w\\d\\.\\-\\_]+$":
                "$ref": "#/definitions/specificationExtension"
          operationTrait:
            type: object
            additionalProperties: false
            patternProperties:
              "^x-[\\w\\d\\.\\-\\_]+$":
                "$ref": "#/definitions/specificationExtension"
            properties:
              summary:
                type: string
              description:
                type: string
              tags:
                type: array
                items:
                  "$ref": "#/definitions/tag"
                uniqueItems: true
              externalDocs:
                "$ref": "#/definitions/externalDocs"
              operationId:
                type: string
              bindings:
                "$ref": "#/definitions/bindingsObject"
          messageTrait:
            type: object
            additionalProperties: false
            patternProperties:
              "^x-[\\w\\d\\.\\-\\_]+$":
                "$ref": "#/definitions/specificationExtension"
            properties:
              schemaFormat:
                type: string
              contentType:
                type: string
              headers:
                oneOf:
                - "$ref": "#/definitions/Reference"
                - "$ref": "#/definitions/schema"
              correlationId:
                oneOf:
                - "$ref": "#/definitions/Reference"
                - "$ref": "#/definitions/correlationId"
              tags:
                type: array
                items:
                  "$ref": "#/definitions/tag"
                uniqueItems: true
              summary:
                type: string
                description: A brief summary of the message.
              name:
                type: string
                description: Name of the message.
              title:
                type: string
                description: A human-friendly title for the message.
              description:
                type: string
                description: A longer description of the message. CommonMark is allowed.
              externalDocs:
                "$ref": "#/definitions/externalDocs"
              deprecated:
                type: boolean
                default: false
              examples:
                type: array
                items:
                  type: object
              bindings:
                "$ref": "#/definitions/bindingsObject"
          SecurityScheme:
            oneOf:
            - "$ref": "#/definitions/userPassword"
            - "$ref": "#/definitions/apiKey"
            - "$ref": "#/definitions/X509"
            - "$ref": "#/definitions/symmetricEncryption"
            - "$ref": "#/definitions/asymmetricEncryption"
            - "$ref": "#/definitions/HTTPSecurityScheme"
            - "$ref": "#/definitions/oauth2Flows"
            - "$ref": "#/definitions/openIdConnect"
          userPassword:
            type: object
            required:
            - type
            properties:
              type:
                type: string
                enum:
                - userPassword
              description:
                type: string
            patternProperties:
              "^x-[\\w\\d\\.\\-\\_]+$":
                "$ref": "#/definitions/specificationExtension"
            additionalProperties: false
          apiKey:
            type: object
            required:
            - type
            - in
            properties:
              type:
                type: string
                enum:
                - apiKey
              in:
                type: string
                enum:
                - user
                - password
              description:
                type: string
            patternProperties:
              "^x-[\\w\\d\\.\\-\\_]+$":
                "$ref": "#/definitions/specificationExtension"
            additionalProperties: false
          X509:
            type: object
            required:
            - type
            properties:
              type:
                type: string
                enum:
                - X509
              description:
                type: string
            patternProperties:
              "^x-[\\w\\d\\.\\-\\_]+$":
                "$ref": "#/definitions/specificationExtension"
            additionalProperties: false
          symmetricEncryption:
            type: object
            required:
            - type
            properties:
              type:
                type: string
                enum:
                - symmetricEncryption
              description:
                type: string
            patternProperties:
              "^x-[\\w\\d\\.\\-\\_]+$":
                "$ref": "#/definitions/specificationExtension"
            additionalProperties: false
          asymmetricEncryption:
            type: object
            required:
            - type
            properties:
              type:
                type: string
                enum:
                - asymmetricEncryption
              description:
                type: string
            patternProperties:
              "^x-[\\w\\d\\.\\-\\_]+$":
                "$ref": "#/definitions/specificationExtension"
            additionalProperties: false
          HTTPSecurityScheme:
            oneOf:
            - "$ref": "#/definitions/NonBearerHTTPSecurityScheme"
            - "$ref": "#/definitions/BearerHTTPSecurityScheme"
            - "$ref": "#/definitions/APIKeyHTTPSecurityScheme"
          NonBearerHTTPSecurityScheme:
            not:
              type: object
              properties:
                scheme:
                  type: string
                  enum:
                  - bearer
            type: object
            required:
            - scheme
            - type
            properties:
              scheme:
                type: string
              description:
                type: string
              type:
                type: string
                enum:
                - http
            patternProperties:
              "^x-[\\w\\d\\.\\-\\_]+$":
                "$ref": "#/definitions/specificationExtension"
            additionalProperties: false
          BearerHTTPSecurityScheme:
            type: object
            required:
            - type
            - scheme
            properties:
              scheme:
                type: string
                enum:
                - bearer
              bearerFormat:
                type: string
              type:
                type: string
                enum:
                - http
              description:
                type: string
            patternProperties:
              "^x-[\\w\\d\\.\\-\\_]+$":
                "$ref": "#/definitions/specificationExtension"
            additionalProperties: false
          APIKeyHTTPSecurityScheme:
            type: object
            required:
            - type
            - name
            - in
            properties:
              type:
                type: string
                enum:
                - httpApiKey
              name:
                type: string
              in:
                type: string
                enum:
                - header
                - query
                - cookie
              description:
                type: string
            patternProperties:
              "^x-[\\w\\d\\.\\-\\_]+$":
                "$ref": "#/definitions/specificationExtension"
            additionalProperties: false
          oauth2Flows:
            type: object
            required:
            - type
            - flows
            properties:
              type:
                type: string
                enum:
                - oauth2
              description:
                type: string
              flows:
                type: object
                properties:
                  implicit:
                    allOf:
                    - "$ref": "#/definitions/oauth2Flow"
                    - required:
                      - authorizationUrl
                      - scopes
                    - not:
                        required:
                        - tokenUrl
                  password:
                    allOf:
                    - "$ref": "#/definitions/oauth2Flow"
                    - required:
                      - tokenUrl
                      - scopes
                    - not:
                        required:
                        - authorizationUrl
                  clientCredentials:
                    allOf:
                    - "$ref": "#/definitions/oauth2Flow"
                    - required:
                      - tokenUrl
                      - scopes
                    - not:
                        required:
                        - authorizationUrl
                  authorizationCode:
                    allOf:
                    - "$ref": "#/definitions/oauth2Flow"
                    - required:
                      - authorizationUrl
                      - tokenUrl
                      - scopes
                additionalProperties: false
                minProperties: 1
            patternProperties:
              "^x-[\\w\\d\\.\\-\\_]+$":
                "$ref": "#/definitions/specificationExtension"
          oauth2Flow:
            type: object
            properties:
              authorizationUrl:
                type: string
                format: uri
              tokenUrl:
                type: string
                format: uri
              refreshUrl:
                type: string
                format: uri
              scopes:
                "$ref": "#/definitions/oauth2Scopes"
            patternProperties:
              "^x-[\\w\\d\\.\\-\\_]+$":
                "$ref": "#/definitions/specificationExtension"
            additionalProperties: false
          oauth2Scopes:
            type: object
            additionalProperties:
              type: string
          openIdConnect:
            type: object
            required:
            - type
            - openIdConnectUrl
            properties:
              type:
                type: string
                enum:
                - openIdConnect
              description:
                type: string
              openIdConnectUrl:
                type: string
                format: uri
            patternProperties:
              "^x-[\\w\\d\\.\\-\\_]+$":
                "$ref": "#/definitions/specificationExtension"
            additionalProperties: false
          SecurityRequirement:
            type: object
            additionalProperties:
              type: array
              items:
                type: string
              uniqueItems: true
        

JSON Schema for JSON Schema

Finally, to just make your head explode, there is a JSON Schema for JSON Schema which validates that the JSON Schema is valid JSON Schema.

          ---
          "$schema": https://json-schema.org/draft/2019-09/schema
          "$id": https://json-schema.org/draft/2019-09/schema
          "$vocabulary":
            https://json-schema.org/draft/2019-09/vocab/core: true
            https://json-schema.org/draft/2019-09/vocab/applicator: true
            https://json-schema.org/draft/2019-09/vocab/validation: true
            https://json-schema.org/draft/2019-09/vocab/meta-data: true
            https://json-schema.org/draft/2019-09/vocab/format: false
            https://json-schema.org/draft/2019-09/vocab/content: true
          "$recursiveAnchor": true
          title: Core and Validation specifications meta-schema
          allOf:
          - "$ref": https://raw.githubusercontent.com/json-schema-org/json-schema-spec/master/meta/core
          - "$ref": https://raw.githubusercontent.com/json-schema-org/json-schema-spec/master/meta/applicator
          - "$ref": https://raw.githubusercontent.com/json-schema-org/json-schema-spec/master/meta/validation
          - "$ref": https://raw.githubusercontent.com/json-schema-org/json-schema-spec/master/meta/meta-data
          - "$ref": https://raw.githubusercontent.com/json-schema-org/json-schema-spec/master/meta/format
          - "$ref": https://raw.githubusercontent.com/json-schema-org/json-schema-spec/master/meta/content
          type:
          - object
          - boolean
          properties:
            definitions:
              "$comment": While no longer an official keyword as it is replaced by $defs, this
                keyword is retained in the meta-schema to prevent incompatible extensions as
                it remains in common use.
              type: object
              additionalProperties:
                "$recursiveRef": "#"
              default: {}
            dependencies:
              "$comment": '"dependencies" is no longer a keyword, but schema authors should
                avoid redefining it to facilitate a smooth transition to "dependentSchemas"
                and "dependentRequired"'
              type: object
              additionalProperties:
                anyOf:
                - "$recursiveRef": "#"
                - "$ref": https://raw.githubusercontent.com/json-schema-org/json-schema-spec/master/meta/validation#/$defs/stringArray
        

In Conclusion

Hopefully this walks through some of the dimensions of API specifications, showing how two of the leading specifications do what they do, but also leverage JSON Schema for validating the specifications, but also the definitions that are defined using the specifications.