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).
search
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
}