Slack OAuth 1.7.0 — token exchange

This reference is readable without JavaScript. Download the OpenAPI document.

Runtime

/api/purple-suite/{instanceId}/contracts/chat/slack
[
  {
    "method": "get",
    "path": "/oauth.access",
    "operationId": "oauth_access"
  },
  {
    "method": "get",
    "path": "/oauth.token",
    "operationId": "oauth_token"
  },
  {
    "method": "get",
    "path": "/oauth.v2.access",
    "operationId": "oauth_v2_access"
  }
]

Credentials

Coverage and limitations

{
  "documentScope": "bounded",
  "runtimeFidelity": "modeled",
  "counts": {
    "operations": 3
  },
  "notes": [
    "The complete OAuth surface of this revision: oauth.access, oauth.token, oauth.v2.access. All three are fully modeled — this is not a stub that returns a fixed token.",
    "The partition is derived, not decided. All 174 operations declare the single slackAuth scheme, so the credential models cannot be told apart from `security`; they are told apart by the parameters. An operation declaring client_id + client_secret and no token authenticates the app itself, which selects exactly these three — and notably not apps.uninstall, which declares all three.",
    "Authorization codes are one-use: the exchange deletes the code in the same step that mints the token pair, so a replay is refused.",
    "Tokens are persisted only as SHA-256 digests keyed by kind, so the stored state cannot be replayed as a credential. A revoked token stops authenticating resource requests immediately.",
    "oauth.access and oauth.token keep their own v1 response shapes rather than being aliased onto v2. v1 returns one flat token plus a `bot` sub-object and oauth.token returns a retired `xoxa-` workspace token; a client pinned to v1 is the only kind that still calls them, and it is exactly the client an alias would break.",
    "Slack's hosted authorization *page* is a browser flow this contract does not reproduce, so the bootstrap mints three one-use codes for this instance's own client, with deterministic documented plaintext and digest-only storage. That is a boundary on the consent UI, not on the token endpoints.",
    "invalid_code and bad_redirect_uri are Slack's real refusals here and appear nowhere in this revision — not in an enum, not in an example, not in a description — so those refusals resolve to codes the document does name. invalid_client_id and bad_client_secret are declared and are used verbatim.",
    "Every application failure is an HTTP 200 with `ok: false` and a machine `error` code, because that is Slack's contract — the pinned document declares exactly a 200 and a default response on all 174 operations and nothing else. A non-2xx from this contract means something a caller could not have caused; an unknown instance in particular stays a real 404, so a misrouted request can never be mistaken for a legitimate refusal.",
    "This document publishes every operation Slack published in Web API 1.7.0; nothing inside that revision is pruned. The bound is the revision itself: upstream's web-api/CHANGELOG.md's most recent entry is August 2020, while Slack's current method reference lists roughly 310 method names, so methods shipped after this revision (bookmarks.*, canvases.*, slackLists.*, assistant.*, functions.*, admin.roles.*, files.getUploadURLExternal, chat.startStream, search.all, conversations.acceptSharedInvite, …) are out of scope for this contract."
  ]
}

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.

Servers

[]

Authentication schemes

{}

Each operation lists its security requirements. An empty security array permits an unauthenticated request. Use the scheme and headers declared for the selected contract.

Operations

GET /oauth.access

Exchanges a temporary OAuth verifier code for an access token.

Authentication

[
  {
    "slackAuth": [
      "none"
    ]
  }
]

Request, responses and operation details

{
  "consumes": [
    "application/x-www-form-urlencoded"
  ],
  "description": "Exchanges a temporary OAuth verifier code for an access token.",
  "externalDocs": {
    "description": "API method documentation",
    "url": "https://api.slack.com/methods/oauth.access"
  },
  "operationId": "oauth_access",
  "parameters": [
    {
      "description": "Issued when you created your application.",
      "in": "query",
      "name": "client_id",
      "type": "string"
    },
    {
      "description": "Issued when you created your application.",
      "in": "query",
      "name": "client_secret",
      "type": "string"
    },
    {
      "description": "The `code` param returned via the OAuth callback.",
      "in": "query",
      "name": "code",
      "type": "string"
    },
    {
      "description": "This must match the originally submitted URI (if one was sent).",
      "in": "query",
      "name": "redirect_uri",
      "type": "string"
    },
    {
      "description": "Request the user to add your app only to a single channel. Only valid with a [legacy workspace app](https://api.slack.com/legacy-workspace-apps).",
      "in": "query",
      "name": "single_channel",
      "type": "boolean"
    }
  ],
  "produces": [
    "application/json"
  ],
  "responses": {
    "200": {
      "description": "Successful user token negotiation for a single scope",
      "examples": {
        "application/json": {
          "access_token": "xoxp-XXXXXXXX-XXXXXXXX-XXXXX",
          "enterprise_id": null,
          "scope": "groups:write",
          "team_id": "TXXXXXXXXX",
          "team_name": "Wyld Stallyns LLC"
        }
      },
      "schema": {
        "additionalProperties": true,
        "description": "This method either only returns a brief _OK_ response or a verbose schema is not available for this method.",
        "properties": {
          "ok": {
            "$ref": "#/definitions/defs_ok_true"
          }
        },
        "required": [
          "ok"
        ],
        "title": "Default success template",
        "type": "object"
      }
    },
    "default": {
      "description": "Typical error response",
      "examples": {
        "application/json": {
          "error": "invalid_client_id",
          "ok": false
        }
      },
      "schema": {
        "additionalProperties": true,
        "description": "This method either only returns a brief _not OK_ response or a verbose schema is not available for this method.",
        "properties": {
          "ok": {
            "$ref": "#/definitions/defs_ok_false"
          }
        },
        "required": [
          "ok"
        ],
        "title": "Default error template",
        "type": "object"
      }
    }
  },
  "security": [
    {
      "slackAuth": [
        "none"
      ]
    }
  ],
  "tags": [
    "oauth"
  ]
}

GET /oauth.token

Exchanges a temporary OAuth verifier code for a workspace token.

Authentication

[
  {
    "slackAuth": [
      "none"
    ]
  }
]

Request, responses and operation details

{
  "consumes": [
    "application/x-www-form-urlencoded"
  ],
  "description": "Exchanges a temporary OAuth verifier code for a workspace token.",
  "externalDocs": {
    "description": "API method documentation",
    "url": "https://api.slack.com/methods/oauth.token"
  },
  "operationId": "oauth_token",
  "parameters": [
    {
      "description": "Issued when you created your application.",
      "in": "query",
      "name": "client_id",
      "type": "string"
    },
    {
      "description": "Issued when you created your application.",
      "in": "query",
      "name": "client_secret",
      "type": "string"
    },
    {
      "description": "The `code` param returned via the OAuth callback.",
      "in": "query",
      "name": "code",
      "type": "string"
    },
    {
      "description": "This must match the originally submitted URI (if one was sent).",
      "in": "query",
      "name": "redirect_uri",
      "type": "string"
    },
    {
      "description": "Request the user to add your app only to a single channel.",
      "in": "query",
      "name": "single_channel",
      "type": "boolean"
    }
  ],
  "produces": [
    "application/json"
  ],
  "responses": {
    "200": {
      "description": "Success example using a workspace app produces a very different kind of response",
      "examples": {
        "application/json": {
          "access_token": "xoxa-access-token-string",
          "app_id": "A012345678",
          "app_user_id": "U0AB12ABC",
          "authorizing_user_id": "U0HTT3Q0G",
          "installer_user_id": "U061F7AUR",
          "ok": true,
          "permissions": [
            {
              "resource_id": 0,
              "resource_type": "channel",
              "scopes": [
                "channels:read",
                "chat:write:user"
              ]
            }
          ],
          "single_channel_id": "C061EG9T2",
          "team_id": "T061EG9Z9",
          "team_name": "Subarachnoid Workspace",
          "token_type": "app"
        }
      },
      "schema": {
        "additionalProperties": true,
        "description": "This method either only returns a brief _OK_ response or a verbose schema is not available for this method.",
        "properties": {
          "ok": {
            "$ref": "#/definitions/defs_ok_true"
          }
        },
        "required": [
          "ok"
        ],
        "title": "Default success template",
        "type": "object"
      }
    },
    "default": {
      "description": "Typical error response",
      "examples": {
        "application/json": {
          "error": "invalid_client_id",
          "ok": false
        }
      },
      "schema": {
        "additionalProperties": true,
        "description": "This method either only returns a brief _not OK_ response or a verbose schema is not available for this method.",
        "properties": {
          "ok": {
            "$ref": "#/definitions/defs_ok_false"
          }
        },
        "required": [
          "ok"
        ],
        "title": "Default error template",
        "type": "object"
      }
    }
  },
  "security": [
    {
      "slackAuth": [
        "none"
      ]
    }
  ],
  "tags": [
    "oauth"
  ]
}

GET /oauth.v2.access

Exchanges a temporary OAuth verifier code for an access token.

Authentication

[
  {
    "slackAuth": [
      "none"
    ]
  }
]

Request, responses and operation details

{
  "consumes": [
    "application/x-www-form-urlencoded"
  ],
  "description": "Exchanges a temporary OAuth verifier code for an access token.",
  "externalDocs": {
    "description": "API method documentation",
    "url": "https://api.slack.com/methods/oauth.v2.access"
  },
  "operationId": "oauth_v2_access",
  "parameters": [
    {
      "description": "Issued when you created your application.",
      "in": "query",
      "name": "client_id",
      "type": "string"
    },
    {
      "description": "Issued when you created your application.",
      "in": "query",
      "name": "client_secret",
      "type": "string"
    },
    {
      "description": "The `code` param returned via the OAuth callback.",
      "in": "query",
      "name": "code",
      "required": true,
      "type": "string"
    },
    {
      "description": "This must match the originally submitted URI (if one was sent).",
      "in": "query",
      "name": "redirect_uri",
      "type": "string"
    }
  ],
  "produces": [
    "application/json"
  ],
  "responses": {
    "200": {
      "description": "Successful token request with scopes for both a bot user and a user token",
      "examples": {
        "application/json": {
          "access_token": "xoxb-XXXXXXXXXXX-XXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXX",
          "app_id": "A0KRD7HC3",
          "authed_user": {
            "access_token": "xoxp-1234",
            "id": "U1234",
            "scope": "chat:write",
            "token_type": "user"
          },
          "bot_user_id": "U0KRQLJ9H",
          "enterprise": {
            "id": "E12345678",
            "name": "slack-sports"
          },
          "ok": true,
          "scope": "commands,incoming-webhook",
          "team": {
            "id": "T9TK3CUKW",
            "name": "Slack Softball Team"
          },
          "token_type": "bot"
        }
      },
      "schema": {
        "additionalProperties": true,
        "description": "This method either only returns a brief _OK_ response or a verbose schema is not available for this method.",
        "properties": {
          "ok": {
            "$ref": "#/definitions/defs_ok_true"
          }
        },
        "required": [
          "ok"
        ],
        "title": "Default success template",
        "type": "object"
      }
    },
    "default": {
      "description": "Typical error response",
      "examples": {
        "application/json": {
          "error": "invalid_client_id",
          "ok": false
        }
      },
      "schema": {
        "additionalProperties": true,
        "description": "This method either only returns a brief _not OK_ response or a verbose schema is not available for this method.",
        "properties": {
          "ok": {
            "$ref": "#/definitions/defs_ok_false"
          }
        },
        "required": [
          "ok"
        ],
        "title": "Default error template",
        "type": "object"
      }
    }
  },
  "security": [
    {
      "slackAuth": [
        "none"
      ]
    }
  ],
  "tags": [
    "oauth.v2",
    "oauth"
  ]
}

Schemas and reusable components

Document metadata and extensions

{
  "basePath": "/api/purple-suite/{instanceId}/contracts/chat/slack",
  "definitions": {
    "blocks": {
      "description": "This is a very loose definition, in the future, we'll populate this with deeper schema in this definition namespace.",
      "items": {
        "additionalProperties": true,
        "properties": {
          "type": {
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "type": "object"
      },
      "title": "Block Kit blocks",
      "type": "array"
    },
    "defs_app_id": {
      "pattern": "^A[A-Z0-9]{1,}$",
      "title": "App ID",
      "type": "string"
    },
    "defs_bot_id": {
      "pattern": "^B[A-Z0-9]{8,}$",
      "title": "Bot User ID",
      "type": "string"
    },
    "defs_channel": {
      "pattern": "^[CGD][A-Z0-9]{8,}$",
      "title": "Channel-like conversation ID",
      "type": "string"
    },
    "defs_channel_id": {
      "pattern": "^[C][A-Z0-9]{2,}$",
      "title": "Channel ID",
      "type": "string"
    },
    "defs_channel_name": {
      "title": "Name of a channel",
      "type": "string"
    },
    "defs_comment_id": {
      "pattern": "^Fc[A-Z0-9]{8,}$",
      "title": "File Comment ID",
      "type": "string"
    },
    "defs_dm_id": {
      "pattern": "^[D][A-Z0-9]{8,}$",
      "title": "Direct Message Channel ID",
      "type": "string"
    },
    "defs_enterprise_id": {
      "pattern": "^[E][A-Z0-9]{8,}$",
      "title": "Enterprise ID",
      "type": "string"
    },
    "defs_enterprise_name": {
      "title": "Name of the enterprise org",
      "type": "string"
    },
    "defs_enterprise_user_id": {
      "pattern": "^[WU][A-Z0-9]{8,}$",
      "title": "Enterprise User ID",
      "type": "string"
    },
    "defs_file_id": {
      "pattern": "^[F][A-Z0-9]{8,}$",
      "title": "File ID",
      "type": "string"
    },
    "defs_group_id": {
      "pattern": "^[G][A-Z0-9]{8,}$",
      "title": "Private Channel ID",
      "type": "string"
    },
    "defs_ok_false": {
      "enum": [
        false
      ],
      "title": "default failure response",
      "type": "boolean"
    },
    "defs_ok_true": {
      "enum": [
        true
      ],
      "title": "default success response",
      "type": "boolean"
    },
    "defs_optional_app_id": {
      "pattern": "^(A[A-Z0-9]{1,})?$",
      "title": "App ID or empty string",
      "type": "string"
    },
    "defs_pinned_info": {
      "additionalProperties": false,
      "title": "Info for a pinned item",
      "type": "object"
    },
    "defs_reminder_id": {
      "pattern": "^Rm[A-Z0-9]{8,}$",
      "title": "Reminder ID",
      "type": "string"
    },
    "defs_subteam_id": {
      "pattern": "^S[A-Z0-9]{2,}$",
      "title": "Subteam ID",
      "type": "string"
    },
    "defs_team": {
      "pattern": "^[T][A-Z0-9]{2,}$",
      "title": "Team ID",
      "type": "string"
    },
    "defs_topic_purpose_creator": {
      "pattern": "^[UW][A-Z0-9]{8,}$|^$",
      "title": "User ID or empty string, used for topic and purpose creation",
      "type": "string"
    },
    "defs_ts": {
      "pattern": "^\\d{10}\\.\\d{6}$",
      "title": "Timestamp in format 0123456789.012345",
      "type": "string"
    },
    "defs_user_id": {
      "pattern": "^[UW][A-Z0-9]{2,}$",
      "title": "User ID",
      "type": "string"
    },
    "defs_workspace_id": {
      "pattern": "^[TE][A-Z0-9]{8,}$",
      "title": "Team or Enterprise ID",
      "type": "string"
    },
    "objs_bot_profile": {
      "additionalProperties": false,
      "properties": {
        "app_id": {
          "$ref": "#/definitions/defs_app_id"
        },
        "deleted": {
          "type": "boolean"
        },
        "icons": {
          "additionalProperties": false,
          "properties": {
            "image_36": {
              "format": "uri",
              "type": "string"
            },
            "image_48": {
              "format": "uri",
              "type": "string"
            },
            "image_72": {
              "format": "uri",
              "type": "string"
            }
          },
          "required": [
            "image_36",
            "image_48",
            "image_72"
          ],
          "type": "object"
        },
        "id": {
          "$ref": "#/definitions/defs_bot_id"
        },
        "name": {
          "type": "string"
        },
        "team_id": {
          "$ref": "#/definitions/defs_team"
        },
        "updated": {
          "type": "integer"
        }
      },
      "required": [
        "id",
        "deleted",
        "name",
        "updated",
        "app_id",
        "icons",
        "team_id"
      ],
      "title": "Bot Profile Object",
      "type": "object"
    },
    "objs_channel": {
      "additionalProperties": false,
      "properties": {
        "accepted_user": {
          "$ref": "#/definitions/defs_user_id"
        },
        "created": {
          "type": "integer"
        },
        "creator": {
          "$ref": "#/definitions/defs_user_id"
        },
        "id": {
          "$ref": "#/definitions/defs_channel_id"
        },
        "is_archived": {
          "type": "boolean"
        },
        "is_channel": {
          "type": "boolean"
        },
        "is_frozen": {
          "type": "boolean"
        },
        "is_general": {
          "type": "boolean"
        },
        "is_member": {
          "type": "boolean"
        },
        "is_moved": {
          "type": "integer"
        },
        "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": {
          "$ref": "#/definitions/defs_ts"
        },
        "latest": {
          "items": [
            {
              "$ref": "#/definitions/objs_message"
            },
            {
              "type": "null"
            }
          ]
        },
        "members": {
          "items": {
            "$ref": "#/definitions/defs_user_id"
          },
          "minItems": 0,
          "type": "array",
          "uniqueItems": true
        },
        "name": {
          "type": "string"
        },
        "name_normalized": {
          "type": "string"
        },
        "num_members": {
          "type": "integer"
        },
        "pending_shared": {
          "items": {
            "$ref": "#/definitions/defs_team"
          },
          "minItems": 0,
          "type": "array",
          "uniqueItems": true
        },
        "previous_names": {
          "items": {
            "$ref": "#/definitions/defs_channel_name"
          },
          "minItems": 0,
          "type": "array",
          "uniqueItems": true
        },
        "priority": {
          "type": "number"
        },
        "purpose": {
          "additionalProperties": false,
          "properties": {
            "creator": {
              "$ref": "#/definitions/defs_topic_purpose_creator"
            },
            "last_set": {
              "type": "integer"
            },
            "value": {
              "type": "string"
            }
          },
          "required": [
            "value",
            "creator",
            "last_set"
          ],
          "type": "object"
        },
        "topic": {
          "additionalProperties": false,
          "properties": {
            "creator": {
              "$ref": "#/definitions/defs_topic_purpose_creator"
            },
            "last_set": {
              "type": "integer"
            },
            "value": {
              "type": "string"
            }
          },
          "required": [
            "value",
            "creator",
            "last_set"
          ],
          "type": "object"
        },
        "unlinked": {
          "title": "Field to determine whether a channel has ever been shared/disconnected in the past",
          "type": "integer"
        },
        "unread_count": {
          "type": "integer"
        },
        "unread_count_display": {
          "type": "integer"
        }
      },
      "required": [
        "id",
        "name",
        "created",
        "creator",
        "is_channel",
        "is_org_shared",
        "is_private",
        "is_mpim",
        "is_shared",
        "name_normalized",
        "members",
        "topic",
        "purpose"
      ],
      "title": "Channel Object",
      "type": "object"
    },
    "objs_comment": {
      "additionalProperties": false,
      "properties": {
        "comment": {
          "type": "string"
        },
        "created": {
          "type": "integer"
        },
        "id": {
          "$ref": "#/definitions/defs_comment_id"
        },
        "is_intro": {
          "type": "boolean"
        },
        "is_starred": {
          "type": "boolean"
        },
        "num_stars": {
          "type": "integer"
        },
        "pinned_info": {
          "$ref": "#/definitions/defs_pinned_info"
        },
        "pinned_to": {
          "items": {
            "$ref": "#/definitions/defs_channel"
          },
          "type": "array"
        },
        "reactions": {
          "items": {
            "$ref": "#/definitions/objs_reaction"
          },
          "type": "array"
        },
        "timestamp": {
          "type": "integer"
        },
        "user": {
          "$ref": "#/definitions/defs_user_id"
        }
      },
      "required": [
        "id",
        "created",
        "timestamp",
        "user",
        "is_intro",
        "comment"
      ],
      "title": "File Comment Object",
      "type": "object"
    },
    "objs_comments": {
      "items": {},
      "title": "file comments object",
      "type": "array"
    },
    "objs_conversation": {
      "items": [
        {
          "additionalProperties": false,
          "properties": {
            "accepted_user": {
              "$ref": "#/definitions/defs_user_id"
            },
            "connected_team_ids": {
              "items": {
                "$ref": "#/definitions/defs_workspace_id"
              },
              "minItems": 0,
              "type": "array",
              "uniqueItems": true
            },
            "conversation_host_id": {
              "$ref": "#/definitions/defs_workspace_id"
            },
            "created": {
              "type": "integer"
            },
            "creator": {
              "$ref": "#/definitions/defs_user_id"
            },
            "display_counts": {
              "additionalProperties": false,
              "properties": {
                "display_counts": {
                  "type": "integer"
                },
                "guest_counts": {
                  "type": "integer"
                }
              },
              "required": [
                "display_counts",
                "guest_counts"
              ],
              "type": "object"
            },
            "enterprise_id": {
              "$ref": "#/definitions/defs_enterprise_id"
            },
            "has_pins": {
              "type": "boolean"
            },
            "id": {
              "$ref": "#/definitions/defs_channel"
            },
            "internal_team_ids": {
              "items": {
                "$ref": "#/definitions/defs_team"
              },
              "minItems": 0,
              "type": "array",
              "uniqueItems": true
            },
            "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"
            },
            "is_mpim": {
              "enum": [
                false
              ],
              "type": "boolean"
            },
            "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": {
              "$ref": "#/definitions/defs_ts"
            },
            "latest": {
              "items": [
                {
                  "$ref": "#/definitions/objs_message"
                },
                {
                  "type": "null"
                }
              ]
            },
            "members": {
              "items": {
                "$ref": "#/definitions/defs_user_id"
              },
              "minItems": 0,
              "type": "array",
              "uniqueItems": true
            },
            "name": {
              "type": "string"
            },
            "name_normalized": {
              "type": "string"
            },
            "num_members": {
              "type": "integer"
            },
            "parent_conversation": {
              "items": [
                {
                  "$ref": "#/definitions/defs_channel"
                },
                {
                  "type": "null"
                }
              ]
            },
            "pending_connected_team_ids": {
              "items": {
                "$ref": "#/definitions/defs_team"
              },
              "minItems": 0,
              "type": "array",
              "uniqueItems": true
            },
            "pending_shared": {
              "items": {
                "$ref": "#/definitions/defs_team"
              },
              "minItems": 0,
              "type": "array",
              "uniqueItems": true
            },
            "pin_count": {
              "type": "integer"
            },
            "previous_names": {
              "items": {
                "$ref": "#/definitions/defs_channel_name"
              },
              "minItems": 0,
              "type": "array",
              "uniqueItems": true
            },
            "priority": {
              "type": "number"
            },
            "purpose": {
              "additionalProperties": false,
              "properties": {
                "creator": {
                  "$ref": "#/definitions/defs_topic_purpose_creator"
                },
                "last_set": {
                  "type": "integer"
                },
                "value": {
                  "type": "string"
                }
              },
              "required": [
                "value",
                "creator",
                "last_set"
              ],
              "type": "object"
            },
            "shared_team_ids": {
              "items": {
                "$ref": "#/definitions/defs_team"
              },
              "minItems": 0,
              "type": "array",
              "uniqueItems": true
            },
            "shares": {
              "items": {
                "additionalProperties": false,
                "properties": {
                  "accepted_user": {
                    "$ref": "#/definitions/defs_user_id"
                  },
                  "is_active": {
                    "type": "boolean"
                  },
                  "team": {
                    "$ref": "#/definitions/objs_team"
                  },
                  "user": {
                    "$ref": "#/definitions/defs_user_id"
                  }
                },
                "required": [
                  "team",
                  "user",
                  "is_active"
                ],
                "type": "object"
              },
              "minItems": 0,
              "type": "array",
              "uniqueItems": true
            },
            "timezone_count": {
              "type": "integer"
            },
            "topic": {
              "additionalProperties": false,
              "properties": {
                "creator": {
                  "$ref": "#/definitions/defs_topic_purpose_creator"
                },
                "last_set": {
                  "type": "integer"
                },
                "value": {
                  "type": "string"
                }
              },
              "required": [
                "value",
                "creator",
                "last_set"
              ],
              "type": "object"
            },
            "unlinked": {
              "title": "Field to determine whether a channel has ever been shared/disconnected in the past",
              "type": "integer"
            },
            "unread_count": {
              "type": "integer"
            },
            "unread_count_display": {
              "type": "integer"
            },
            "use_case": {
              "type": "string"
            },
            "user": {
              "$ref": "#/definitions/defs_user_id"
            },
            "version": {
              "type": "integer"
            }
          },
          "required": [
            "id",
            "name",
            "created",
            "creator",
            "is_archived",
            "is_channel",
            "is_general",
            "is_mpim",
            "is_group",
            "is_org_shared",
            "is_im",
            "is_shared",
            "is_private",
            "name_normalized",
            "topic",
            "purpose"
          ],
          "title": "Conversation object",
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "accepted_user": {
              "$ref": "#/definitions/defs_user_id"
            },
            "connected_team_ids": {
              "items": {
                "$ref": "#/definitions/defs_team"
              },
              "minItems": 0,
              "type": "array",
              "uniqueItems": true
            },
            "conversation_host_id": {
              "$ref": "#/definitions/defs_workspace_id"
            },
            "created": {
              "type": "integer"
            },
            "creator": {
              "$ref": "#/definitions/defs_user_id"
            },
            "display_counts": {
              "additionalProperties": false,
              "properties": {
                "display_counts": {
                  "type": "integer"
                },
                "guest_counts": {
                  "type": "integer"
                }
              },
              "required": [
                "display_counts",
                "guest_counts"
              ],
              "type": "object"
            },
            "id": {
              "$ref": "#/definitions/defs_channel"
            },
            "internal_team_ids": {
              "items": {
                "$ref": "#/definitions/defs_team"
              },
              "minItems": 0,
              "type": "array",
              "uniqueItems": true
            },
            "is_archived": {
              "type": "boolean"
            },
            "is_channel": {
              "type": "boolean"
            },
            "is_ext_shared": {
              "type": "boolean"
            },
            "is_frozen": {
              "type": "boolean"
            },
            "is_general": {
              "type": "boolean"
            },
            "is_group": {
              "type": "boolean"
            },
            "is_im": {
              "type": "boolean"
            },
            "is_member": {
              "type": "boolean"
            },
            "is_moved": {
              "type": "integer"
            },
            "is_mpim": {
              "enum": [
                true
              ],
              "type": "boolean"
            },
            "is_non_threadable": {
              "type": "boolean"
            },
            "is_open": {
              "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": {
              "$ref": "#/definitions/defs_ts"
            },
            "latest": {
              "items": [
                {
                  "$ref": "#/definitions/objs_message"
                },
                {
                  "type": "null"
                }
              ]
            },
            "members": {
              "items": {
                "$ref": "#/definitions/defs_user_id"
              },
              "minItems": 0,
              "type": "array",
              "uniqueItems": true
            },
            "name": {
              "type": "string"
            },
            "name_normalized": {
              "type": "string"
            },
            "num_members": {
              "type": "integer"
            },
            "parent_conversation": {
              "items": [
                {
                  "$ref": "#/definitions/defs_channel"
                },
                {
                  "type": "null"
                }
              ]
            },
            "pending_connected_team_ids": {
              "items": {
                "$ref": "#/definitions/defs_team"
              },
              "minItems": 0,
              "type": "array",
              "uniqueItems": true
            },
            "pending_shared": {
              "items": {
                "$ref": "#/definitions/defs_team"
              },
              "minItems": 0,
              "type": "array",
              "uniqueItems": true
            },
            "pin_count": {
              "type": "integer"
            },
            "previous_names": {
              "items": {
                "$ref": "#/definitions/defs_channel_name"
              },
              "minItems": 0,
              "type": "array",
              "uniqueItems": true
            },
            "priority": {
              "type": "number"
            },
            "purpose": {
              "additionalProperties": false,
              "properties": {
                "creator": {
                  "$ref": "#/definitions/defs_topic_purpose_creator"
                },
                "last_set": {
                  "type": "integer"
                },
                "value": {
                  "type": "string"
                }
              },
              "required": [
                "value",
                "creator",
                "last_set"
              ],
              "type": "object"
            },
            "shared_team_ids": {
              "items": {
                "$ref": "#/definitions/defs_team"
              },
              "minItems": 0,
              "type": "array",
              "uniqueItems": true
            },
            "shares": {
              "items": {
                "additionalProperties": false,
                "properties": {
                  "accepted_user": {
                    "$ref": "#/definitions/defs_user_id"
                  },
                  "is_active": {
                    "type": "boolean"
                  },
                  "team": {
                    "$ref": "#/definitions/objs_team"
                  },
                  "user": {
                    "$ref": "#/definitions/defs_user_id"
                  }
                },
                "required": [
                  "team",
                  "user",
                  "is_active"
                ],
                "type": "object"
              },
              "minItems": 0,
              "type": "array",
              "uniqueItems": true
            },
            "timezone_count": {
              "type": "integer"
            },
            "topic": {
              "additionalProperties": false,
              "properties": {
                "creator": {
                  "$ref": "#/definitions/defs_topic_purpose_creator"
                },
                "last_set": {
                  "type": "integer"
                },
                "value": {
                  "type": "string"
                }
              },
              "required": [
                "value",
                "creator",
                "last_set"
              ],
              "type": "object"
            },
            "unlinked": {
              "title": "Field to determine whether a channel has ever been shared/disconnected in the past",
              "type": "integer"
            },
            "unread_count": {
              "type": "integer"
            },
            "unread_count_display": {
              "type": "integer"
            },
            "user": {
              "$ref": "#/definitions/defs_user_id"
            },
            "version": {
              "type": "integer"
            }
          },
          "required": [
            "id",
            "name",
            "created",
            "creator",
            "is_archived",
            "is_channel",
            "is_general",
            "is_mpim",
            "is_group",
            "is_org_shared",
            "is_im",
            "is_shared",
            "is_private",
            "name_normalized",
            "topic",
            "purpose"
          ],
          "title": "Conversation MPIM Object",
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "created": {
              "type": "integer"
            },
            "has_pins": {
              "type": "boolean"
            },
            "id": {
              "$ref": "#/definitions/defs_dm_id"
            },
            "is_archived": {
              "type": "boolean"
            },
            "is_ext_shared": {
              "type": "boolean"
            },
            "is_frozen": {
              "type": "boolean"
            },
            "is_im": {
              "type": "boolean"
            },
            "is_open": {
              "type": "boolean"
            },
            "is_org_shared": {
              "type": "boolean"
            },
            "is_shared": {
              "type": "boolean"
            },
            "is_starred": {
              "type": "boolean"
            },
            "is_user_deleted": {
              "type": "boolean"
            },
            "last_read": {
              "$ref": "#/definitions/defs_ts"
            },
            "latest": {
              "items": [
                {
                  "$ref": "#/definitions/objs_message"
                },
                {
                  "type": "null"
                }
              ]
            },
            "parent_conversation": {
              "items": [
                {
                  "$ref": "#/definitions/defs_channel"
                },
                {
                  "type": "null"
                }
              ]
            },
            "pin_count": {
              "type": "integer"
            },
            "priority": {
              "type": "number"
            },
            "shares": {
              "items": {
                "additionalProperties": false,
                "properties": {
                  "date_create": {
                    "type": "integer"
                  },
                  "id": {
                    "$ref": "#/definitions/defs_team"
                  },
                  "is_active": {
                    "type": "boolean"
                  },
                  "name": {
                    "type": "string"
                  },
                  "team": {
                    "$ref": "#/definitions/objs_team"
                  }
                },
                "required": [
                  "id",
                  "name",
                  "team",
                  "date_create",
                  "is_active"
                ],
                "type": "object"
              },
              "minItems": 0,
              "type": "array",
              "uniqueItems": true
            },
            "unread_count": {
              "type": "integer"
            },
            "unread_count_display": {
              "type": "integer"
            },
            "user": {
              "$ref": "#/definitions/defs_user_id"
            },
            "version": {
              "type": "integer"
            }
          },
          "required": [
            "id",
            "created",
            "is_im",
            "is_org_shared",
            "user",
            "priority"
          ],
          "title": "Conversation IM Channel Object from conversations.* methods",
          "type": "object"
        }
      ]
    },
    "objs_enterprise_user": {
      "additionalProperties": false,
      "properties": {
        "enterprise_id": {
          "$ref": "#/definitions/defs_enterprise_id"
        },
        "enterprise_name": {
          "$ref": "#/definitions/defs_enterprise_name"
        },
        "id": {
          "$ref": "#/definitions/defs_enterprise_user_id"
        },
        "is_admin": {
          "type": "boolean"
        },
        "is_owner": {
          "type": "boolean"
        },
        "teams": {
          "items": {
            "$ref": "#/definitions/defs_team"
          },
          "type": "array",
          "uniqueItems": true
        }
      },
      "required": [
        "id",
        "enterprise_id",
        "enterprise_name",
        "is_admin",
        "is_owner",
        "teams"
      ],
      "type": "object"
    },
    "objs_external_org_migrations": {
      "properties": {
        "current": {
          "items": {
            "properties": {
              "date_started": {
                "type": "integer"
              },
              "team_id": {
                "type": "string"
              }
            },
            "required": [
              "team_id",
              "date_started"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "date_updated": {
          "type": "integer"
        }
      },
      "required": [
        "date_updated",
        "current"
      ],
      "title": "External Org Migrations",
      "type": "object"
    },
    "objs_file": {
      "additionalProperties": false,
      "properties": {
        "channels": {
          "items": {
            "$ref": "#/definitions/defs_channel_id"
          },
          "type": "array",
          "uniqueItems": true
        },
        "comments_count": {
          "type": "integer"
        },
        "created": {
          "type": "integer"
        },
        "date_delete": {
          "type": "integer"
        },
        "display_as_bot": {
          "type": "boolean"
        },
        "editable": {
          "type": "boolean"
        },
        "editor": {
          "$ref": "#/definitions/defs_user_id"
        },
        "external_id": {
          "type": "string"
        },
        "external_type": {
          "type": "string"
        },
        "external_url": {
          "format": "uri",
          "type": "string"
        },
        "filetype": {
          "type": "string"
        },
        "groups": {
          "items": {
            "$ref": "#/definitions/defs_group_id"
          },
          "type": "array",
          "uniqueItems": true
        },
        "has_rich_preview": {
          "type": "boolean"
        },
        "id": {
          "$ref": "#/definitions/defs_file_id"
        },
        "image_exif_rotation": {
          "type": "integer"
        },
        "ims": {
          "items": {
            "$ref": "#/definitions/defs_dm_id"
          },
          "type": "array",
          "uniqueItems": true
        },
        "is_external": {
          "type": "boolean"
        },
        "is_public": {
          "type": "boolean"
        },
        "is_starred": {
          "type": "boolean"
        },
        "is_tombstoned": {
          "type": "boolean"
        },
        "last_editor": {
          "$ref": "#/definitions/defs_user_id"
        },
        "mimetype": {
          "type": "string"
        },
        "mode": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "non_owner_editable": {
          "type": "boolean"
        },
        "num_stars": {
          "type": "integer"
        },
        "original_h": {
          "type": "integer"
        },
        "original_w": {
          "type": "integer"
        },
        "permalink": {
          "format": "uri",
          "type": "string"
        },
        "permalink_public": {
          "format": "uri",
          "type": "string"
        },
        "pinned_info": {
          "$ref": "#/definitions/defs_pinned_info"
        },
        "pinned_to": {
          "items": {
            "$ref": "#/definitions/defs_channel"
          },
          "type": "array"
        },
        "pretty_type": {
          "type": "string"
        },
        "preview": {
          "type": "string"
        },
        "public_url_shared": {
          "type": "boolean"
        },
        "reactions": {
          "items": {
            "$ref": "#/definitions/objs_reaction"
          },
          "type": "array"
        },
        "shares": {
          "additionalProperties": false,
          "properties": {
            "private": {
              "additionalProperties": false
            },
            "public": {
              "additionalProperties": false
            }
          },
          "type": "object"
        },
        "size": {
          "type": "integer"
        },
        "source_team": {
          "$ref": "#/definitions/defs_team"
        },
        "state": {
          "type": "string"
        },
        "thumb_1024": {
          "format": "uri",
          "type": "string"
        },
        "thumb_1024_h": {
          "type": "integer"
        },
        "thumb_1024_w": {
          "type": "integer"
        },
        "thumb_160": {
          "format": "uri",
          "type": "string"
        },
        "thumb_360": {
          "format": "uri",
          "type": "string"
        },
        "thumb_360_h": {
          "type": "integer"
        },
        "thumb_360_w": {
          "type": "integer"
        },
        "thumb_480": {
          "format": "uri",
          "type": "string"
        },
        "thumb_480_h": {
          "type": "integer"
        },
        "thumb_480_w": {
          "type": "integer"
        },
        "thumb_64": {
          "format": "uri",
          "type": "string"
        },
        "thumb_720": {
          "format": "uri",
          "type": "string"
        },
        "thumb_720_h": {
          "type": "integer"
        },
        "thumb_720_w": {
          "type": "integer"
        },
        "thumb_80": {
          "format": "uri",
          "type": "string"
        },
        "thumb_800": {
          "format": "uri",
          "type": "string"
        },
        "thumb_800_h": {
          "type": "integer"
        },
        "thumb_800_w": {
          "type": "integer"
        },
        "thumb_960": {
          "format": "uri",
          "type": "string"
        },
        "thumb_960_h": {
          "type": "integer"
        },
        "thumb_960_w": {
          "type": "integer"
        },
        "thumb_tiny": {
          "type": "string"
        },
        "timestamp": {
          "type": "integer"
        },
        "title": {
          "type": "string"
        },
        "updated": {
          "type": "integer"
        },
        "url_private": {
          "format": "uri",
          "type": "string"
        },
        "url_private_download": {
          "format": "uri",
          "type": "string"
        },
        "user": {
          "type": "string"
        },
        "user_team": {
          "$ref": "#/definitions/defs_team"
        },
        "username": {
          "type": "string"
        }
      },
      "title": "file object",
      "type": "object"
    },
    "objs_icon": {
      "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"
        }
      },
      "type": "object"
    },
    "objs_message": {
      "additionalProperties": false,
      "properties": {
        "attachments": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "fallback": {
                "type": "string"
              },
              "id": {
                "type": "integer"
              },
              "image_bytes": {
                "type": "integer"
              },
              "image_height": {
                "type": "integer"
              },
              "image_url": {
                "type": "string"
              },
              "image_width": {
                "type": "integer"
              }
            },
            "required": [
              "id"
            ],
            "type": "object"
          },
          "minItems": 1,
          "type": "array",
          "uniqueItems": true
        },
        "blocks": {
          "$ref": "#/definitions/blocks"
        },
        "bot_id": {
          "items": [
            {
              "$ref": "#/definitions/defs_bot_id"
            },
            {
              "title": "Nil bot_id set when display_as_bot is false",
              "type": "null"
            }
          ]
        },
        "bot_profile": {
          "$ref": "#/definitions/objs_bot_profile"
        },
        "client_msg_id": {
          "type": "string"
        },
        "comment": {
          "$ref": "#/definitions/objs_comment"
        },
        "display_as_bot": {
          "type": "boolean"
        },
        "file": {
          "$ref": "#/definitions/objs_file"
        },
        "files": {
          "items": {
            "$ref": "#/definitions/objs_file"
          },
          "minItems": 1,
          "type": "array",
          "uniqueItems": true
        },
        "icons": {
          "additionalProperties": false,
          "properties": {
            "emoji": {
              "type": "string"
            },
            "image_64": {
              "format": "uri",
              "type": "string"
            }
          },
          "type": "object"
        },
        "inviter": {
          "$ref": "#/definitions/defs_user_id"
        },
        "is_delayed_message": {
          "type": "boolean"
        },
        "is_intro": {
          "type": "boolean"
        },
        "is_starred": {
          "type": "boolean"
        },
        "last_read": {
          "$ref": "#/definitions/defs_ts"
        },
        "latest_reply": {
          "$ref": "#/definitions/defs_ts"
        },
        "name": {
          "type": "string"
        },
        "old_name": {
          "type": "string"
        },
        "parent_user_id": {
          "$ref": "#/definitions/defs_user_id"
        },
        "permalink": {
          "format": "uri",
          "type": "string"
        },
        "pinned_to": {
          "items": {
            "$ref": "#/definitions/defs_channel"
          },
          "type": "array"
        },
        "purpose": {
          "type": "string"
        },
        "reactions": {
          "items": {
            "$ref": "#/definitions/objs_reaction"
          },
          "type": "array"
        },
        "reply_count": {
          "type": "integer"
        },
        "reply_users": {
          "items": {
            "$ref": "#/definitions/defs_user_id"
          },
          "minItems": 1,
          "type": "array",
          "uniqueItems": true
        },
        "reply_users_count": {
          "type": "integer"
        },
        "source_team": {
          "$ref": "#/definitions/defs_workspace_id"
        },
        "subscribed": {
          "type": "boolean"
        },
        "subtype": {
          "type": "string"
        },
        "team": {
          "$ref": "#/definitions/defs_workspace_id"
        },
        "text": {
          "type": "string"
        },
        "thread_ts": {
          "$ref": "#/definitions/defs_ts"
        },
        "topic": {
          "type": "string"
        },
        "ts": {
          "$ref": "#/definitions/defs_ts"
        },
        "type": {
          "type": "string"
        },
        "unread_count": {
          "type": "integer"
        },
        "upload": {
          "type": "boolean"
        },
        "user": {
          "$ref": "#/definitions/defs_user_id"
        },
        "user_profile": {
          "$ref": "#/definitions/objs_user_profile_short"
        },
        "user_team": {
          "$ref": "#/definitions/defs_workspace_id"
        },
        "username": {
          "type": "string"
        }
      },
      "required": [
        "text",
        "type",
        "ts"
      ],
      "title": "Message object",
      "type": "object"
    },
    "objs_paging": {
      "additionalProperties": false,
      "properties": {
        "count": {
          "type": "integer"
        },
        "page": {
          "type": "integer"
        },
        "pages": {
          "type": "integer"
        },
        "per_page": {
          "type": "integer"
        },
        "spill": {
          "type": "integer"
        },
        "total": {
          "type": "integer"
        }
      },
      "required": [
        "page",
        "total"
      ],
      "title": "paging object",
      "type": "object"
    },
    "objs_primary_owner": {
      "properties": {
        "email": {
          "type": "string"
        },
        "id": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "email"
      ],
      "type": "object"
    },
    "objs_reaction": {
      "additionalProperties": true,
      "properties": {
        "count": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "users": {
          "items": {
            "$ref": "#/definitions/defs_user_id"
          },
          "type": "array"
        }
      },
      "required": [
        "name",
        "users",
        "count"
      ],
      "title": "Reaction object",
      "type": "object"
    },
    "objs_reminder": {
      "additionalProperties": false,
      "properties": {
        "complete_ts": {
          "type": "integer"
        },
        "creator": {
          "$ref": "#/definitions/defs_user_id"
        },
        "id": {
          "$ref": "#/definitions/defs_reminder_id"
        },
        "recurring": {
          "type": "boolean"
        },
        "text": {
          "type": "string"
        },
        "time": {
          "type": "integer"
        },
        "user": {
          "$ref": "#/definitions/defs_user_id"
        }
      },
      "required": [
        "id",
        "creator",
        "user",
        "text",
        "recurring"
      ],
      "type": "object"
    },
    "objs_resources": {
      "additionalProperties": false,
      "properties": {
        "excluded_ids": {
          "items": {
            "items": [
              {
                "$ref": "#/definitions/defs_channel"
              },
              {
                "$ref": "#/definitions/defs_team"
              }
            ]
          },
          "type": "array"
        },
        "ids": {
          "items": {
            "items": [
              {
                "$ref": "#/definitions/defs_channel"
              },
              {
                "$ref": "#/definitions/defs_team"
              }
            ]
          },
          "type": "array"
        },
        "wildcard": {
          "type": "boolean"
        }
      },
      "required": [
        "ids"
      ],
      "title": "resources in info from apps.permissions.info",
      "type": "object"
    },
    "objs_response_metadata": {
      "items": [
        {
          "additionalProperties": false,
          "properties": {
            "next_cursor": {
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "title": "new paging style",
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "messages": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "warnings": {
              "items": {
                "enum": [
                  "method_deprecated"
                ],
                "type": "string"
              },
              "type": "array"
            }
          },
          "required": [
            "messages",
            "warnings"
          ],
          "title": "deprecation_warning",
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "messages": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "next_cursor": {
              "type": "string"
            },
            "warnings": {
              "items": {
                "enum": [
                  "method_deprecated"
                ],
                "type": "string"
              },
              "type": "array"
            }
          },
          "required": [
            "messages",
            "warnings",
            "next_cursor"
          ],
          "title": "deprecation_warning and paging style together",
          "type": "object"
        }
      ]
    },
    "objs_scopes": {
      "items": {
        "title": "Named OAuth scopes",
        "type": "string",
        "x-examples": [
          "chat:write",
          "im:history",
          "im:read"
        ]
      },
      "type": "array"
    },
    "objs_subteam": {
      "additionalProperties": false,
      "properties": {
        "auto_provision": {
          "type": "boolean"
        },
        "auto_type": {
          "items": [
            {
              "type": "null"
            },
            {
              "enum": [
                "owner",
                "admin"
              ],
              "type": "string"
            }
          ]
        },
        "channel_count": {
          "type": "integer"
        },
        "created_by": {
          "$ref": "#/definitions/defs_user_id"
        },
        "date_create": {
          "type": "integer"
        },
        "date_delete": {
          "type": "integer"
        },
        "date_update": {
          "type": "integer"
        },
        "deleted_by": {
          "items": [
            {
              "type": "null"
            },
            {
              "$ref": "#/definitions/defs_user_id"
            }
          ]
        },
        "description": {
          "type": "string"
        },
        "enterprise_subteam_id": {
          "type": "string"
        },
        "handle": {
          "type": "string"
        },
        "id": {
          "$ref": "#/definitions/defs_subteam_id"
        },
        "is_external": {
          "type": "boolean"
        },
        "is_subteam": {
          "type": "boolean"
        },
        "is_usergroup": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "prefs": {
          "additionalProperties": false,
          "properties": {
            "channels": {
              "items": {
                "$ref": "#/definitions/defs_channel_id"
              },
              "type": "array"
            },
            "groups": {
              "items": {
                "$ref": "#/definitions/defs_group_id"
              },
              "type": "array"
            }
          },
          "required": [
            "channels",
            "groups"
          ],
          "type": "object"
        },
        "team_id": {
          "$ref": "#/definitions/defs_team"
        },
        "updated_by": {
          "$ref": "#/definitions/defs_user_id"
        },
        "user_count": {
          "type": "integer"
        },
        "users": {
          "items": {
            "$ref": "#/definitions/defs_user_id"
          },
          "type": "array"
        }
      },
      "required": [
        "id",
        "team_id",
        "is_usergroup",
        "is_subteam",
        "name",
        "description",
        "handle",
        "is_external",
        "date_create",
        "date_update",
        "date_delete",
        "auto_type",
        "auto_provision",
        "enterprise_subteam_id",
        "created_by",
        "updated_by",
        "deleted_by",
        "prefs"
      ],
      "title": "Subteam/Usergroup Object",
      "type": "object"
    },
    "objs_team": {
      "additionalProperties": false,
      "properties": {
        "archived": {
          "type": "boolean"
        },
        "avatar_base_url": {
          "format": "uri",
          "type": "string"
        },
        "created": {
          "type": "integer"
        },
        "date_create": {
          "type": "integer"
        },
        "deleted": {
          "type": "boolean"
        },
        "description": {
          "type": [
            "null",
            "string"
          ]
        },
        "discoverable": {
          "items": [
            {
              "type": "null"
            },
            {
              "type": "string"
            }
          ]
        },
        "domain": {
          "type": "string"
        },
        "email_domain": {
          "type": "string"
        },
        "enterprise_id": {
          "$ref": "#/definitions/defs_enterprise_id"
        },
        "enterprise_name": {
          "$ref": "#/definitions/defs_enterprise_name"
        },
        "external_org_migrations": {
          "$ref": "#/definitions/objs_external_org_migrations"
        },
        "has_compliance_export": {
          "type": "boolean"
        },
        "icon": {
          "$ref": "#/definitions/objs_icon"
        },
        "id": {
          "$ref": "#/definitions/defs_workspace_id"
        },
        "is_assigned": {
          "type": "boolean"
        },
        "is_enterprise": {
          "type": "integer"
        },
        "is_over_storage_limit": {
          "type": "boolean"
        },
        "limit_ts": {
          "type": "integer"
        },
        "locale": {
          "type": "string"
        },
        "messages_count": {
          "type": "integer"
        },
        "msg_edit_window_mins": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "over_integrations_limit": {
          "type": "boolean"
        },
        "over_storage_limit": {
          "type": "boolean"
        },
        "pay_prod_cur": {
          "type": "string"
        },
        "plan": {
          "enum": [
            "",
            "std",
            "plus",
            "compliance",
            "enterprise"
          ],
          "type": "string"
        },
        "primary_owner": {
          "$ref": "#/definitions/objs_primary_owner"
        },
        "sso_provider": {
          "properties": {
            "label": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "type": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "required": [
        "id",
        "name",
        "domain",
        "email_domain",
        "icon"
      ],
      "title": "Team Object",
      "type": "object"
    },
    "objs_team_profile_field": {
      "additionalProperties": false,
      "properties": {
        "field_name": {
          "type": [
            "null",
            "string"
          ]
        },
        "hint": {
          "type": "string"
        },
        "id": {
          "pattern": "^X[a-zA-Z0-9]{9,}$",
          "type": "string"
        },
        "is_hidden": {
          "type": "boolean"
        },
        "label": {
          "type": "string"
        },
        "options": {
          "items": [
            {
              "type": "null"
            },
            {
              "$ref": "#/definitions/objs_team_profile_field_option"
            }
          ]
        },
        "ordering": {
          "type": "number"
        },
        "possible_values": {
          "items": {
            "type": "string"
          },
          "type": [
            "null",
            "array"
          ]
        },
        "type": {
          "enum": [
            "text",
            "date",
            "link",
            "mailto",
            "options_list",
            "user"
          ],
          "type": "string"
        }
      },
      "required": [
        "id",
        "ordering",
        "label",
        "hint",
        "type"
      ],
      "type": "object"
    },
    "objs_team_profile_field_option": {
      "additionalProperties": false,
      "properties": {
        "is_custom": {
          "type": [
            "null",
            "boolean"
          ]
        },
        "is_multiple_entry": {
          "type": [
            "null",
            "boolean"
          ]
        },
        "is_protected": {
          "type": [
            "null",
            "boolean"
          ]
        },
        "is_scim": {
          "type": [
            "null",
            "boolean"
          ]
        }
      },
      "type": "object"
    },
    "objs_user": {
      "items": [
        {
          "additionalProperties": false,
          "description": "user object for non enterprise type",
          "properties": {
            "color": {
              "pattern": "^[a-fA-F0-9]{6}$",
              "type": "string"
            },
            "deleted": {
              "type": "boolean"
            },
            "enterprise_user": {
              "$ref": "#/definitions/objs_enterprise_user"
            },
            "has_2fa": {
              "type": "boolean"
            },
            "id": {
              "$ref": "#/definitions/defs_user_id"
            },
            "is_admin": {
              "type": "boolean"
            },
            "is_app_user": {
              "type": "boolean"
            },
            "is_bot": {
              "type": "boolean"
            },
            "is_external": {
              "type": "boolean"
            },
            "is_forgotten": {
              "type": "boolean"
            },
            "is_invited_user": {
              "type": "boolean"
            },
            "is_owner": {
              "type": "boolean"
            },
            "is_primary_owner": {
              "type": "boolean"
            },
            "is_restricted": {
              "type": "boolean"
            },
            "is_stranger": {
              "type": "boolean"
            },
            "is_ultra_restricted": {
              "type": "boolean"
            },
            "locale": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "presence": {
              "type": "string"
            },
            "profile": {
              "$ref": "#/definitions/objs_user_profile"
            },
            "real_name": {
              "type": "string"
            },
            "team": {
              "$ref": "#/definitions/defs_workspace_id"
            },
            "team_id": {
              "$ref": "#/definitions/defs_workspace_id"
            },
            "team_profile": {
              "additionalProperties": false,
              "properties": {
                "fields": {
                  "items": {
                    "$ref": "#/definitions/objs_team_profile_field"
                  },
                  "minItems": 1,
                  "type": "array",
                  "uniqueItems": true
                }
              },
              "required": [
                "fields"
              ],
              "type": "object"
            },
            "two_factor_type": {
              "type": "string"
            },
            "tz": {
              "items": [
                {
                  "type": "null"
                },
                {
                  "type": "string"
                }
              ]
            },
            "tz_label": {
              "type": "string"
            },
            "tz_offset": {
              "type": "number"
            },
            "updated": {
              "type": "number"
            }
          },
          "required": [
            "id",
            "name",
            "profile",
            "is_bot",
            "updated",
            "is_app_user"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "description": "enterprise user",
          "properties": {
            "color": {
              "description": "refercing to bug: https://jira.tinyspeck.com/browse/EVALUE-1559",
              "pattern": "^([a-fA-F0-9]{6})?$",
              "type": "string"
            },
            "deleted": {
              "type": "boolean"
            },
            "enterprise_user": {
              "$ref": "#/definitions/objs_enterprise_user"
            },
            "has_2fa": {
              "type": "boolean"
            },
            "id": {
              "$ref": "#/definitions/defs_user_id"
            },
            "is_admin": {
              "type": "boolean"
            },
            "is_app_user": {
              "type": "boolean"
            },
            "is_bot": {
              "type": "boolean"
            },
            "is_external": {
              "type": "boolean"
            },
            "is_forgotten": {
              "type": "boolean"
            },
            "is_owner": {
              "type": "boolean"
            },
            "is_primary_owner": {
              "type": "boolean"
            },
            "is_restricted": {
              "type": "boolean"
            },
            "is_stranger": {
              "type": "boolean"
            },
            "is_ultra_restricted": {
              "type": "boolean"
            },
            "locale": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "presence": {
              "type": "string"
            },
            "profile": {
              "$ref": "#/definitions/objs_user_profile"
            },
            "real_name": {
              "type": "string"
            },
            "team_id": {
              "$ref": "#/definitions/defs_workspace_id"
            },
            "team_profile": {
              "additionalProperties": false,
              "properties": {
                "fields": {
                  "items": {
                    "$ref": "#/definitions/objs_team_profile_field"
                  },
                  "minItems": 1,
                  "type": "array",
                  "uniqueItems": true
                }
              },
              "required": [
                "fields"
              ],
              "type": "object"
            },
            "teams": {
              "items": {
                "$ref": "#/definitions/defs_workspace_id"
              },
              "minItems": 1,
              "type": "array",
              "uniqueItems": true
            },
            "two_factor_type": {
              "type": "string"
            },
            "tz": {
              "items": [
                {
                  "type": "null"
                },
                {
                  "type": "string"
                }
              ]
            },
            "tz_label": {
              "type": "string"
            },
            "tz_offset": {
              "type": "number"
            },
            "updated": {
              "type": "number"
            }
          },
          "required": [
            "id",
            "name",
            "profile",
            "is_bot",
            "updated",
            "is_app_user"
          ],
          "type": "object"
        }
      ]
    },
    "objs_user_profile": {
      "additionalProperties": false,
      "properties": {
        "always_active": {
          "type": "boolean"
        },
        "api_app_id": {
          "$ref": "#/definitions/defs_optional_app_id"
        },
        "avatar_hash": {
          "type": "string"
        },
        "bot_id": {
          "$ref": "#/definitions/defs_bot_id"
        },
        "display_name": {
          "type": "string"
        },
        "display_name_normalized": {
          "type": "string"
        },
        "email": {
          "format": "email",
          "type": [
            "null",
            "string"
          ]
        },
        "fields": {
          "items": {
            "type": "object"
          },
          "type": [
            "object",
            "null",
            "array"
          ]
        },
        "first_name": {
          "type": [
            "null",
            "string"
          ]
        },
        "guest_expiration_ts": {
          "type": [
            "null",
            "integer"
          ]
        },
        "guest_invited_by": {
          "type": [
            "null",
            "string"
          ]
        },
        "image_1024": {
          "format": "uri",
          "type": [
            "null",
            "string"
          ]
        },
        "image_192": {
          "format": "uri",
          "type": [
            "null",
            "string"
          ]
        },
        "image_24": {
          "format": "uri",
          "type": [
            "null",
            "string"
          ]
        },
        "image_32": {
          "format": "uri",
          "type": [
            "null",
            "string"
          ]
        },
        "image_48": {
          "format": "uri",
          "type": [
            "null",
            "string"
          ]
        },
        "image_512": {
          "format": "uri",
          "type": [
            "null",
            "string"
          ]
        },
        "image_72": {
          "format": "uri",
          "type": [
            "null",
            "string"
          ]
        },
        "image_original": {
          "format": "uri",
          "type": [
            "null",
            "string"
          ]
        },
        "is_app_user": {
          "type": "boolean"
        },
        "is_custom_image": {
          "type": "boolean"
        },
        "is_restricted": {
          "type": [
            "null",
            "boolean"
          ]
        },
        "is_ultra_restricted": {
          "type": [
            "null",
            "boolean"
          ]
        },
        "last_avatar_image_hash": {
          "type": "string"
        },
        "last_name": {
          "type": [
            "null",
            "string"
          ]
        },
        "memberships_count": {
          "type": "integer"
        },
        "name": {
          "type": [
            "null",
            "string"
          ]
        },
        "phone": {
          "type": "string"
        },
        "pronouns": {
          "type": "string"
        },
        "real_name": {
          "type": "string"
        },
        "real_name_normalized": {
          "type": "string"
        },
        "skype": {
          "type": "string"
        },
        "status_default_emoji": {
          "type": "string"
        },
        "status_default_text": {
          "type": "string"
        },
        "status_default_text_canonical": {
          "type": [
            "null",
            "string"
          ]
        },
        "status_emoji": {
          "type": "string"
        },
        "status_expiration": {
          "type": "integer"
        },
        "status_text": {
          "type": "string"
        },
        "status_text_canonical": {
          "type": [
            "null",
            "string"
          ]
        },
        "team": {
          "$ref": "#/definitions/defs_workspace_id"
        },
        "title": {
          "type": "string"
        },
        "updated": {
          "type": "integer"
        },
        "user_id": {
          "type": "string"
        },
        "username": {
          "type": [
            "null",
            "string"
          ]
        }
      },
      "required": [
        "real_name",
        "display_name",
        "avatar_hash",
        "real_name_normalized",
        "display_name_normalized",
        "title",
        "phone",
        "skype",
        "status_text",
        "status_emoji",
        "fields"
      ],
      "title": "User profile object",
      "type": "object"
    },
    "objs_user_profile_short": {
      "additionalProperties": false,
      "properties": {
        "avatar_hash": {
          "type": "string"
        },
        "display_name": {
          "type": "string"
        },
        "display_name_normalized": {
          "type": "string"
        },
        "first_name": {
          "type": [
            "string",
            "null"
          ]
        },
        "image_72": {
          "format": "uri",
          "type": "string"
        },
        "is_restricted": {
          "type": "boolean"
        },
        "is_ultra_restricted": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "real_name": {
          "type": "string"
        },
        "real_name_normalized": {
          "type": "string"
        },
        "team": {
          "$ref": "#/definitions/defs_workspace_id"
        }
      },
      "required": [
        "avatar_hash",
        "image_72",
        "first_name",
        "real_name",
        "display_name",
        "team",
        "name",
        "is_restricted",
        "is_ultra_restricted"
      ],
      "type": "object"
    }
  },
  "externalDocs": {
    "description": "Learn more about the Slack Web API",
    "url": "https://api.slack.com/web"
  },
  "info": {
    "contact": {
      "name": "Slack developer relations",
      "url": "https://api.slack.com/support"
    },
    "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.",
    "title": "Slack Web API",
    "version": "1.7.0",
    "x-purplesuite-contract": {
      "system": "chat",
      "paint": "slack",
      "profileId": "slack-oauth-1-7-0",
      "revision": "1.7.0",
      "vendorBaseUrl": "https://slack.com/api",
      "documentScope": "bounded",
      "publishedOperations": 3,
      "vendorOperations": 174,
      "runtime": {
        "modeled": 153,
        "modeledCore": 0,
        "unavailable": 21,
        "documentationOnly": 0
      },
      "note": "A PurpleSuite emulation of the Slack Web API. Replace https://slack.com/api with this document's basePath and every path, method, argument, envelope and error code below is Slack's own. Application errors are HTTP 200 with `ok: false`, as Slack's are. Bounded to the 174 operations Slack published in Web API 1.7.0; methods Slack shipped after that revision are out of scope. COVERAGE_LEDGER.md classifies all of them.",
      "boundaries": [
        "21 operations fail closed with a declared Slack error at HTTP 200: they need an interactivity trigger, Slack's Workflow Builder engine, an RTM WebSocket gateway, Slack's event-delivery pipeline, or a multi-workspace Enterprise Grid organisation.",
        "File and image bytes are never retained. files.upload, users.setPhoto, admin.emoji.add, admin.teams.settings.setIcon and files.remote.add record metadata and a SHA-256 digest; `url_private` and `image_*` keep Slack's declared shape and no byte-serving route is mounted, because Slack serves those from files.slack.com.",
        "api.test requires the instance credential, where Slack accepts none. A tokenless route beneath /purple-suite/{instanceId} would be an unauthenticated instance-existence oracle answering ok:true for a misrouted request. This is the contract's only auth deviation.",
        "OAuth's hosted consent screen is not reproduced. The token endpoints are fully modeled — one-use codes, digest-only storage, real revocation — and the bootstrap mints three one-use authorization codes so the exchange can be exercised without inventing an endpoint that hands out codes.",
        "search.messages implements the in:, from:, before:, after:, on: and has: modifiers and refuses any other modifier rather than searching for it as literal text."
      ]
    }
  },
  "securityDefinitions": {
    "slackAuth": {
      "authorizationUrl": "https://slack.com/oauth/authorize",
      "flow": "accessCode",
      "scopes": {
        "admin": "admin",
        "admin.apps:read": "admin.apps:read",
        "admin.apps:write": "admin.apps:write",
        "admin.conversations:read": "admin.conversations:read",
        "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.usergroups:read": "admin.usergroups:read",
        "admin.usergroups:write": "admin.usergroups:write",
        "admin.users:read": "admin.users:read",
        "admin.users:write": "admin.users:write",
        "authorizations:read": "authorizations:read",
        "bot": "Bot user scope",
        "calls:read": "calls:read",
        "calls:write": "calls:write",
        "channels:history": "channels:history",
        "channels:manage": "channels:manage",
        "channels:read": "channels:read",
        "channels:write": "channels:write",
        "chat:write": "chat:write",
        "chat:write:bot": "Author messages as a bot",
        "chat:write:user": "Author messages as a 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",
        "workflow.steps:execute": "workflow.steps:execute"
      },
      "tokenUrl": "https://slack.com/api/oauth.access",
      "type": "oauth2"
    }
  },
  "swagger": "2.0",
  "tags": []
}
Interactive API explorer (requires JavaScript)