mirror of
https://github.com/mattermost/mattermost.git
synced 2026-04-08 10:36:49 -04:00
* Channel sharing operations (invite, uninvite, list shared channel remotes) now require ManageSharedChannels instead of ManageSecureConnections, allowing customers to delegate channel sharing without granting full connection management access. Endpoints serving both roles (getRemoteClusters, getSharedChannelRemotesByRemoteCluster) accept either permission. Also adds RequirePermission helpers on Context to reduce boilerplate across all remote cluster and shared channel handlers, and fixes a bug where invite/uninvite checked ManageSecureConnections but reported ManageSharedChannels in the error.
319 lines
9.7 KiB
YAML
319 lines
9.7 KiB
YAML
"/api/v4/sharedchannels/{team_id}":
|
|
get:
|
|
tags:
|
|
- shared channels
|
|
summary: Get all shared channels for team.
|
|
description: |
|
|
Get all shared channels for a team.
|
|
|
|
__Minimum server version__: 5.50
|
|
|
|
##### Permissions
|
|
Must be authenticated.
|
|
operationId: GetAllSharedChannels
|
|
parameters:
|
|
- name: team_id
|
|
in: path
|
|
description: Team Id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: page
|
|
description: The page to select.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
default: 0
|
|
- name: per_page
|
|
description: The number of sharedchannels per page.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
default: 0
|
|
responses:
|
|
"200":
|
|
description: Shared channels fetch successful. Result may be empty.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/SharedChannel"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
|
|
"/api/v4/remotecluster/{remote_id}/sharedchannelremotes":
|
|
get:
|
|
tags:
|
|
- shared channels
|
|
summary: Get shared channel remotes by remote cluster.
|
|
description: |
|
|
Get a list of the channels shared with a given remote cluster
|
|
and their status.
|
|
|
|
##### Permissions
|
|
`manage_secure_connections` or `manage_shared_channels`
|
|
operationId: GetSharedChannelRemotesByRemoteCluster
|
|
parameters:
|
|
- name: remote_id
|
|
in: path
|
|
description: The remote cluster GUID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: include_unconfirmed
|
|
in: query
|
|
description: Include those Shared channel remotes that are unconfirmed
|
|
schema:
|
|
type: boolean
|
|
- name: exclude_confirmed
|
|
in: query
|
|
description: Show only those Shared channel remotes that are not confirmed yet
|
|
schema:
|
|
type: boolean
|
|
- name: exclude_home
|
|
in: query
|
|
description: Show only those Shared channel remotes that were shared with this server
|
|
schema:
|
|
type: boolean
|
|
- name: exclude_remote
|
|
in: query
|
|
description: Show only those Shared channel remotes that were shared from this server
|
|
schema:
|
|
type: boolean
|
|
- name: include_deleted
|
|
in: query
|
|
description: Include those Shared channel remotes that have been deleted
|
|
schema:
|
|
type: boolean
|
|
- name: page
|
|
in: query
|
|
description: The page to select
|
|
schema:
|
|
type: integer
|
|
- name: per_page
|
|
in: query
|
|
description: The number of shared channels per page
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
"200":
|
|
description: Shared channel remotes fetch successful. Result might be empty.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/SharedChannelRemote"
|
|
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
|
|
"/api/v4/sharedchannels/remote_info/{remote_id}":
|
|
get:
|
|
tags:
|
|
- shared channels
|
|
summary: Get remote cluster info by ID for user.
|
|
description: |
|
|
Get remote cluster info based on remoteId.
|
|
|
|
__Minimum server version__: 5.50
|
|
|
|
##### Permissions
|
|
Must be authenticated and user must belong to at least one channel shared with the remote cluster.
|
|
operationId: GetRemoteClusterInfo
|
|
parameters:
|
|
- name: remote_id
|
|
in: path
|
|
description: Remote Cluster GUID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: include_deleted
|
|
in: query
|
|
description: Include deleted remote clusters
|
|
schema:
|
|
type: boolean
|
|
default: false
|
|
responses:
|
|
"200":
|
|
description: Remote cluster info retrieval successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/RemoteClusterInfo"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"404":
|
|
$ref: "#/components/responses/NotFound"
|
|
|
|
"/api/v4/remotecluster/{remote_id}/channels/{channel_id}/invite":
|
|
post:
|
|
tags:
|
|
- shared channels
|
|
summary: Invites a remote cluster to a channel.
|
|
description: |
|
|
Invites a remote cluster to a channel, sharing the channel if
|
|
needed. If the remote cluster was already invited to the
|
|
channel, calling this endpoint will have no effect.
|
|
|
|
##### Permissions
|
|
`manage_shared_channels`
|
|
operationId: InviteRemoteClusterToChannel
|
|
parameters:
|
|
- name: remote_id
|
|
in: path
|
|
description: The remote cluster GUID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: channel_id
|
|
in: path
|
|
description: The channel GUID to invite the remote cluster to
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: Remote cluster invited successfully
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StatusOK"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
|
|
"/api/v4/remotecluster/{remote_id}/channels/{channel_id}/uninvite":
|
|
post:
|
|
tags:
|
|
- shared channels
|
|
summary: Uninvites a remote cluster to a channel.
|
|
description: |
|
|
Stops sharing a channel with a remote cluster. If the channel
|
|
was not shared with the remote, calling this endpoint will
|
|
have no effect.
|
|
|
|
##### Permissions
|
|
`manage_shared_channels`
|
|
operationId: UninviteRemoteClusterToChannel
|
|
parameters:
|
|
- name: remote_id
|
|
in: path
|
|
description: The remote cluster GUID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: channel_id
|
|
in: path
|
|
description: The channel GUID to uninvite the remote cluster to
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: Remote cluster uninvited successfully
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StatusOK"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
|
|
"/api/v4/sharedchannels/{channel_id}/remotes":
|
|
get:
|
|
tags:
|
|
- shared channels
|
|
summary: Get remote clusters for a shared channel
|
|
description: |
|
|
Gets the remote clusters information for a shared channel.
|
|
|
|
__Minimum server version__: 10.11
|
|
|
|
##### Permissions
|
|
Must be authenticated and have the `read_channel` permission for the channel.
|
|
operationId: GetSharedChannelRemotes
|
|
parameters:
|
|
- name: channel_id
|
|
in: path
|
|
description: Channel GUID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: Remote clusters retrieval successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/RemoteClusterInfo"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"404":
|
|
$ref: "#/components/responses/NotFound"
|
|
|
|
"/api/v4/sharedchannels/users/{user_id}/can_dm/{other_user_id}":
|
|
get:
|
|
tags:
|
|
- shared channels
|
|
summary: Check if user can DM another user in shared channels context
|
|
description: |
|
|
Checks if a user can send direct messages to another user, considering shared channel restrictions.
|
|
This is specifically for shared channels where DMs require direct connections between clusters.
|
|
|
|
__Minimum server version__: 10.11
|
|
|
|
##### Permissions
|
|
Must be authenticated and have permission to view the user.
|
|
operationId: CanUserDirectMessage
|
|
parameters:
|
|
- name: user_id
|
|
in: path
|
|
description: User GUID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: other_user_id
|
|
in: path
|
|
description: Other user GUID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: DM permission check successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
can_dm:
|
|
type: boolean
|
|
description: Whether the user can send DMs to the other user
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"404":
|
|
$ref: "#/components/responses/NotFound"
|