{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://schema.slack.dev/channel", "title": "Slack Channel", "description": "A Slack conversation object representing a channel, direct message, multi-person direct message, or group conversation. This is the unified model returned by the conversations.* family of Web API methods, which consolidated the legacy channels.*, groups.*, im.*, and mpim.* endpoints. The type of conversation is identified by boolean flags (is_channel, is_group, is_im, is_mpim) and the is_private flag. Channels are uniquely identified by their id field, with public channels starting with C, private channels and multi-person DMs starting with G, and direct messages starting with D.", "type": "object", "required": [ "id", "created" ], "properties": { "id": { "type": "string", "description": "The unique identifier for this conversation. Public channels begin with C, private channels and multi-person DMs begin with G, and direct messages begin with D.", "pattern": "^[CGDW][A-Z0-9]+$" }, "name": { "type": "string", "description": "The name of the channel without the leading # sign. Channel names can contain lowercase letters, numbers, hyphens, and underscores, with a maximum length of 80 characters. Not present for direct messages.", "maxLength": 80, "pattern": "^[a-z0-9][a-z0-9_-]*$" }, "name_normalized": { "type": "string", "description": "A normalized, lowercase version of the channel name. Useful for case-insensitive comparisons and sorting." }, "is_channel": { "type": "boolean", "description": "Whether this conversation is a public channel. Public channels are visible to all members of the workspace and can be joined by anyone." }, "is_group": { "type": "boolean", "description": "Whether this conversation is a private channel. Private channels are invite-only and not visible in the channel browser." }, "is_im": { "type": "boolean", "description": "Whether this conversation is a direct message between two people." }, "is_mpim": { "type": "boolean", "description": "Whether this conversation is a multi-person direct message. MPIMs are group DMs between 3 or more people." }, "is_private": { "type": "boolean", "description": "Whether this conversation is private. True for private channels, DMs, and MPIMs. False for public channels." }, "is_archived": { "type": "boolean", "description": "Whether the channel is archived. Archived channels are read-only and do not accept new messages. They can be unarchived by workspace admins." }, "is_general": { "type": "boolean", "description": "Whether this is the workspace's #general channel. Every workspace has exactly one general channel that all members are automatically added to." }, "is_shared": { "type": "boolean", "description": "Whether the channel is shared with another workspace using Slack Connect." }, "is_ext_shared": { "type": "boolean", "description": "Whether the channel is shared with an external organization via Slack Connect. External shared channels allow cross-organization collaboration." }, "is_org_shared": { "type": "boolean", "description": "Whether the channel is shared across the entire Enterprise Grid organization. Org-wide channels are available to all workspaces in the grid." }, "is_pending_ext_shared": { "type": "boolean", "description": "Whether there is a pending Slack Connect invitation for this channel that has not yet been accepted." }, "is_member": { "type": "boolean", "description": "Whether the authenticated user or bot is a member of this conversation. Users must be members to read history or post messages in private channels." }, "is_open": { "type": "boolean", "description": "Whether the direct message or MPIM is currently open in the user's sidebar. Only relevant for DMs and MPIMs." }, "is_frozen": { "type": "boolean", "description": "Whether the channel is frozen. Frozen channels do not accept new messages." }, "is_read_only": { "type": "boolean", "description": "Whether the channel is read-only. In read-only channels, only admins and approved users can post." }, "is_thread_only": { "type": "boolean", "description": "Whether the channel only allows threaded replies. Top-level posts are not permitted." }, "is_non_threadable": { "type": "boolean", "description": "Whether threading is disabled in this channel." }, "created": { "type": "integer", "description": "Unix timestamp (in seconds) of when the conversation was created." }, "creator": { "type": "string", "description": "The user ID of the member who created this channel. Not present for DMs.", "pattern": "^[UW][A-Z0-9]+$" }, "updated": { "type": "integer", "description": "Unix timestamp of the last update to the conversation metadata (not the last message)." }, "unlinked": { "type": "integer", "description": "The number of times this shared channel has been unlinked from a partner workspace." }, "topic": { "type": "object", "description": "The channel's topic. Topics appear below the channel name in the Slack client and help describe what the channel is currently being used for.", "properties": { "value": { "type": "string", "description": "The topic text. Supports mrkdwn formatting. Maximum 250 characters.", "maxLength": 250 }, "creator": { "type": "string", "description": "The user ID of the person who last set the topic.", "pattern": "^[UW][A-Z0-9]*$" }, "last_set": { "type": "integer", "description": "Unix timestamp of when the topic was last set. 0 if never set." } }, "required": [ "value", "creator", "last_set" ] }, "purpose": { "type": "object", "description": "The channel's purpose. Purposes describe the intended use of the channel and help users decide whether to join.", "properties": { "value": { "type": "string", "description": "The purpose text. Supports mrkdwn formatting. Maximum 250 characters.", "maxLength": 250 }, "creator": { "type": "string", "description": "The user ID of the person who last set the purpose.", "pattern": "^[UW][A-Z0-9]*$" }, "last_set": { "type": "integer", "description": "Unix timestamp of when the purpose was last set. 0 if never set." } }, "required": [ "value", "creator", "last_set" ] }, "previous_names": { "type": "array", "description": "A list of all previous names this channel has had. Useful for tracking channel history and identifying channels that have been renamed.", "items": { "type": "string" } }, "num_members": { "type": "integer", "description": "The approximate number of members in the channel. Only included in responses when explicitly requested via the include_num_members parameter. May not be perfectly accurate for large channels.", "minimum": 0 }, "locale": { "type": "string", "description": "The IETF language code for the channel's locale. Only included in responses when explicitly requested via the include_locale parameter." }, "user": { "type": "string", "description": "For direct messages, the user ID of the other participant. Not present for channels, groups, or MPIMs.", "pattern": "^[UW][A-Z0-9]+$" }, "shared_team_ids": { "type": "array", "description": "An array of team (workspace) IDs that share this channel. Present for shared and Slack Connect channels.", "items": { "type": "string", "pattern": "^T[A-Z0-9]+$" } }, "pending_shared": { "type": "array", "description": "An array of team IDs for pending shared channel invitations.", "items": { "type": "string" } }, "pending_connected_team_ids": { "type": "array", "description": "An array of team IDs for pending Slack Connect invitations.", "items": { "type": "string" } }, "parent_conversation": { "type": ["string", "null"], "description": "The parent conversation ID if this is a sub-conversation or thread-only channel. Null for top-level conversations." }, "context_team_id": { "type": "string", "description": "The team (workspace) ID providing context for this conversation. Useful in Enterprise Grid environments where channels may be shared across workspaces.", "pattern": "^T[A-Z0-9]+$" }, "properties": { "type": "object", "description": "Additional channel properties including canvas and tab configurations.", "properties": { "tabs": { "type": "array", "description": "An array of tab objects associated with the channel.", "items": { "type": "object", "properties": { "id": { "type": "string" }, "label": { "type": "string" }, "type": { "type": "string" } } } }, "canvas": { "type": "object", "description": "The channel canvas configuration.", "properties": { "file_id": { "type": "string" }, "is_empty": { "type": "boolean" }, "quip_thread_id": { "type": "string" } } } } }, "last_read": { "type": "string", "description": "The timestamp of the last message read by the authenticated user in this channel.", "pattern": "^[0-9]+\\.[0-9]+$" }, "latest": { "type": "object", "description": "The most recent message in the channel. Only included in some API responses." }, "unread_count": { "type": "integer", "description": "The number of unread messages the authenticated user has in this channel.", "minimum": 0 }, "unread_count_display": { "type": "integer", "description": "The number of unread messages to display (may differ from unread_count based on notification settings).", "minimum": 0 }, "priority": { "type": "number", "description": "A priority value used for sorting channels in the sidebar." } } }