admin.conversations.*: create, archive, delete, rename, invite, search and look up channels across an Enterprise organization; bulk archive/delete/move; sharing between workspaces; posting preferences; custom retention; IDP-group access restrictions; and EKM channel info.

Scopes: admin.conversations:read for reads, admin.conversations:write for changes (plus Channel Management rights for the installing admin).

Example

::conversations ::slack::admin::conversations

hits ::conversations/search(::conversations/SearchRequest({query: "incident", limit: 20}))
::conversations/archive(::conversations/ArchiveRequest({channel_id: first(hits.conversations).id}))

Functions

archive

fn (request: ArchiveRequest): Map
fn (request: ArchiveRequest, opts: Map): Map

admin.conversations.archive - Archive a public or private channel.

Scope: admin.conversations:write. Returns Slack's response body; ok: false comes back as an Err(SlackError).

bulk-archive

fn (request: BulkArchiveRequest): Map
fn (request: BulkArchiveRequest, opts: Map): Map

admin.conversations.bulkArchive - Archive up to 100 channels in one background job. Returns bulk_action_id; channels that could not be queued are in not_added.

Scope: admin.conversations:write. Returns Slack's response body; ok: false comes back as an Err(SlackError).

bulk-delete

fn (request: BulkDeleteRequest): Map
fn (request: BulkDeleteRequest, opts: Map): Map

admin.conversations.bulkDelete - Permanently delete up to 100 channels in one background job. Returns bulk_action_id and not_added. Irreversible.

Scope: admin.conversations:write. Returns Slack's response body; ok: false comes back as an Err(SlackError).

bulk-move

fn (request: BulkMoveRequest): Map
fn (request: BulkMoveRequest, opts: Map): Map

admin.conversations.bulkMove - Move up to 100 public channels to the workspace target_team_id in one background job.

Scope: admin.conversations:write. Returns Slack's response body; ok: false comes back as an Err(SlackError).

convert-to-private

fn (request: ConvertToPrivateRequest): Map
fn (request: ConvertToPrivateRequest, opts: Map): Map

admin.conversations.convertToPrivate - Convert a public channel to private. name is only used when converting a group DM.

Scope: admin.conversations:write. Returns Slack's response body; ok: false comes back as an Err(SlackError).

convert-to-public

fn (request: ConvertToPublicRequest): Map
fn (request: ConvertToPublicRequest, opts: Map): Map

admin.conversations.convertToPublic - Convert a private channel to public.

Scope: admin.conversations:write. Returns Slack's response body; ok: false comes back as an Err(SlackError).

create

fn (request: CreateRequest): Map
fn (request: CreateRequest, opts: Map): Map

admin.conversations.create - Create a channel. Pass team_id for a single workspace, or org_wide: true for an org-wide channel. Returns channel_id.

Scope: admin.conversations:write. Returns Slack's response body; ok: false comes back as an Err(SlackError).

delete-conversation

fn (request: DeleteConversationRequest): Map
fn (request: DeleteConversationRequest, opts: Map): Map

admin.conversations.delete - Permanently delete a public or private channel. Irreversible.

Scope: admin.conversations:write. Returns Slack's response body; ok: false comes back as an Err(SlackError).

disconnect-shared

fn (request: DisconnectSharedRequest): Map
fn (request: DisconnectSharedRequest, opts: Map): Map

admin.conversations.disconnectShared - Disconnect a connected channel from one or more workspaces (leaving_team_ids, optional when only two teams share it).

Scope: admin.conversations:write. Returns Slack's response body; ok: false comes back as an Err(SlackError).

ekm-list-original-connected-channel-info

fn (): Map
fn (request: EkmListOriginalConnectedChannelInfoRequest): Map
fn (request: EkmListOriginalConnectedChannelInfoRequest, opts: Map): Map

admin.conversations.ekm.listOriginalConnectedChannelInfo - List the original connected channel info for EKM-disconnected channels.

Scope: admin.conversations:read. Returns Slack's response body; ok: false comes back as an Err(SlackError). Cursor-paginated: pass cursor from response_metadata.next_cursor, or use ekm-list-original-connected-channel-info-all.

ekm-list-original-connected-channel-info-all

fn (): Vec
fn (request: EkmListOriginalConnectedChannelInfoRequest): Vec
fn (request: EkmListOriginalConnectedChannelInfoRequest, max-items: Int): Vec
fn (request: EkmListOriginalConnectedChannelInfoRequest, max-items: Int, opts: Map): Vec

Every channels entry from admin.conversations.ekm.listOriginalConnectedChannelInfo, following next_cursor until the last page or max-items (default 1000). request sets the filters; its cursor is the starting point.

get-conversation-prefs

fn (request: GetConversationPrefsRequest): Map
fn (request: GetConversationPrefsRequest, opts: Map): Map

admin.conversations.getConversationPrefs - Get a channel's posting preferences (prefs.who_can_post, prefs.can_thread).

Scope: admin.conversations:read. Returns Slack's response body; ok: false comes back as an Err(SlackError).

get-custom-retention

fn (request: GetCustomRetentionRequest): Map
fn (request: GetCustomRetentionRequest, opts: Map): Map

admin.conversations.getCustomRetention - Get a channel's custom message retention (duration_days, is_policy_enabled).

Scope: admin.conversations:read. Returns Slack's response body; ok: false comes back as an Err(SlackError).

get-teams

fn (request: GetTeamsRequest): Map
fn (request: GetTeamsRequest, opts: Map): Map

admin.conversations.getTeams - List the workspaces a channel is connected to (team_ids).

Scope: admin.conversations:read. Returns Slack's response body; ok: false comes back as an Err(SlackError). Cursor-paginated: pass cursor from response_metadata.next_cursor, or use get-teams-all.

get-teams-all

fn (request: GetTeamsRequest): Vec
fn (request: GetTeamsRequest, max-items: Int): Vec
fn (request: GetTeamsRequest, max-items: Int, opts: Map): Vec

Every team_ids entry from admin.conversations.getTeams, following next_cursor until the last page or max-items (default 1000). request sets the filters; its cursor is the starting point.

invite

fn (request: InviteRequest): Map
fn (request: InviteRequest, opts: Map): Map

admin.conversations.invite - Invite up to 1000 users to a channel.

Scope: admin.conversations:write. Returns Slack's response body; ok: false comes back as an Err(SlackError).

lookup

fn (request: LookupRequest): Map
fn (request: LookupRequest, opts: Map): Map

admin.conversations.lookup - Find public channels whose last message is older than last_message_activity_before (Unix seconds), optionally with at most max_member_count members. Returns channel_ids; a starting point for archiving stale channels.

Scope: admin.conversations:read. Returns Slack's response body; ok: false comes back as an Err(SlackError). Cursor-paginated: pass cursor from response_metadata.next_cursor, or use lookup-all.

lookup-all

fn (request: LookupRequest): Vec
fn (request: LookupRequest, max-items: Int): Vec
fn (request: LookupRequest, max-items: Int, opts: Map): Vec

Every channel_ids entry from admin.conversations.lookup, following next_cursor until the last page or max-items (default 1000). request sets the filters; its cursor is the starting point.

remove-custom-retention

fn (request: RemoveCustomRetentionRequest): Map
fn (request: RemoveCustomRetentionRequest, opts: Map): Map

admin.conversations.removeCustomRetention - Remove a channel's custom retention so the org/workspace policy applies.

Scope: admin.conversations:write. Returns Slack's response body; ok: false comes back as an Err(SlackError).

rename

fn (request: RenameRequest): Map
fn (request: RenameRequest, opts: Map): Map

admin.conversations.rename - Rename a channel.

Scope: admin.conversations:write. Returns Slack's response body; ok: false comes back as an Err(SlackError).

restrict-access-add-group

fn (request: RestrictAccessAddGroupRequest): Map
fn (request: RestrictAccessAddGroupRequest, opts: Map): Map

admin.conversations.restrictAccess.addGroup - Add an IDP group to a private channel's allowlist. team_id is required for channels tied to one workspace.

Scope: admin.conversations:write. Returns Slack's response body; ok: false comes back as an Err(SlackError).

restrict-access-list-groups

fn (request: RestrictAccessListGroupsRequest): Map
fn (request: RestrictAccessListGroupsRequest, opts: Map): Map

admin.conversations.restrictAccess.listGroups - List the IDP groups linked to a private channel (group_ids).

Scope: admin.conversations:read. Returns Slack's response body; ok: false comes back as an Err(SlackError).

restrict-access-remove-group

fn (request: RestrictAccessRemoveGroupRequest): Map
fn (request: RestrictAccessRemoveGroupRequest, opts: Map): Map

admin.conversations.restrictAccess.removeGroup - Remove an IDP group from a private channel's allowlist.

Scope: admin.conversations:write. Returns Slack's response body; ok: false comes back as an Err(SlackError).

fn (): Map
fn (request: SearchRequest): Map
fn (request: SearchRequest, opts: Map): Map

admin.conversations.search - Search channels across the org. search_channel_types e.g. ["private", "exclude_archived"]; sort is relevant, name, member_count or created.

Scope: admin.conversations:read. Returns Slack's response body; ok: false comes back as an Err(SlackError). Cursor-paginated: pass cursor from response_metadata.next_cursor, or use search-all.

search-all

fn (): Vec
fn (request: SearchRequest): Vec
fn (request: SearchRequest, max-items: Int): Vec
fn (request: SearchRequest, max-items: Int, opts: Map): Vec

Every conversations entry from admin.conversations.search, following next_cursor until the last page or max-items (default 1000). request sets the filters; its cursor is the starting point.

set-conversation-prefs

fn (request: SetConversationPrefsRequest): Map
fn (request: SetConversationPrefsRequest, opts: Map): Map

admin.conversations.setConversationPrefs - Set a channel's posting preferences, e.g. prefs: {who_can_post: "type:admin,user:U1234"}. The Map is sent as the stringified JSON Slack expects.

Scope: admin.conversations:write. Returns Slack's response body; ok: false comes back as an Err(SlackError).

set-custom-retention

fn (request: SetCustomRetentionRequest): Map
fn (request: SetCustomRetentionRequest, opts: Map): Map

admin.conversations.setCustomRetention - Set a channel's custom message retention in days.

Scope: admin.conversations:write. Returns Slack's response body; ok: false comes back as an Err(SlackError).

set-teams

fn (request: SetTeamsRequest): Map
fn (request: SetTeamsRequest, opts: Map): Map

admin.conversations.setTeams - Set the workspaces a channel is shared to (target_team_ids), or make it org-wide with org_channel: true.

Scope: admin.conversations:write. Returns Slack's response body; ok: false comes back as an Err(SlackError).

unarchive

fn (request: UnarchiveRequest): Map
fn (request: UnarchiveRequest, opts: Map): Map

admin.conversations.unarchive - Unarchive a public or private channel.

Scope: admin.conversations:write. Returns Slack's response body; ok: false comes back as an Err(SlackError).

Types

ArchiveRequest

ArchiveRequest type {
    channel_id: Str
}

BulkArchiveRequest

BulkArchiveRequest type {
    channel_ids: Vec<Str>
}

BulkDeleteRequest

BulkDeleteRequest type {
    channel_ids: Vec<Str>
}

BulkMoveRequest

BulkMoveRequest type {
    channel_ids: Vec<Str>,
    target_team_id: Str
}

ConvertToPrivateRequest

ConvertToPrivateRequest type {
    channel_id: Str,
    name: Str?
}

ConvertToPublicRequest

ConvertToPublicRequest type {
    channel_id: Str
}

CreateRequest

CreateRequest type {
    name: Str,
    is_private: Bool,
    description: Str?,
    org_wide: Bool?,
    team_id: Str?
}

DeleteConversationRequest

DeleteConversationRequest type {
    channel_id: Str
}

DisconnectSharedRequest

DisconnectSharedRequest type {
    channel_id: Str,
    leaving_team_ids: Vec<Str>?
}

EkmListOriginalConnectedChannelInfoRequest

EkmListOriginalConnectedChannelInfoRequest type {
    channel_ids: Vec<Str>?,
    team_ids: Vec<Str>?,
    cursor: Str?,
    limit: Int?
}

GetConversationPrefsRequest

GetConversationPrefsRequest type {
    channel_id: Str
}

GetCustomRetentionRequest

GetCustomRetentionRequest type {
    channel_id: Str
}

GetTeamsRequest

GetTeamsRequest type {
    channel_id: Str,
    cursor: Str?,
    limit: Int?
}

InviteRequest

InviteRequest type {
    channel_id: Str,
    user_ids: Vec<Str>
}

LookupRequest

LookupRequest type {
    team_ids: Vec<Str>,
    last_message_activity_before: Int,
    max_member_count: Int?,
    cursor: Str?,
    limit: Int?
}

RemoveCustomRetentionRequest

RemoveCustomRetentionRequest type {
    channel_id: Str
}

RenameRequest

RenameRequest type {
    channel_id: Str,
    name: Str
}

RestrictAccessAddGroupRequest

RestrictAccessAddGroupRequest type {
    channel_id: Str,
    group_id: Str,
    team_id: Str?
}

RestrictAccessListGroupsRequest

RestrictAccessListGroupsRequest type {
    channel_id: Str,
    team_id: Str?
}

RestrictAccessRemoveGroupRequest

RestrictAccessRemoveGroupRequest type {
    channel_id: Str,
    group_id: Str,
    team_id: Str?
}

SearchRequest

SearchRequest type {
    query: Str?,
    team_ids: Vec<Str>?,
    connected_team_ids: Vec<Str>?,
    search_channel_types: Vec<Str>?,
    sort: Str?,
    sort_dir: Str?,
    total_count_only: Bool?,
    cursor: Str?,
    limit: Int?
}

SetConversationPrefsRequest

SetConversationPrefsRequest type {
    channel_id: Str,
    prefs: Map
}

SetCustomRetentionRequest

SetCustomRetentionRequest type {
    channel_id: Str,
    duration_days: Int
}

SetTeamsRequest

SetTeamsRequest type {
    channel_id: Str,
    team_id: Str?,
    target_team_ids: Vec<Str>?,
    org_channel: Bool?
}

UnarchiveRequest

UnarchiveRequest type {
    channel_id: Str
}