mirror of
https://github.com/mattermost/mattermost.git
synced 2026-04-11 12:07:53 -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.
305 lines
9 KiB
YAML
305 lines
9 KiB
YAML
"/api/v4/remotecluster":
|
|
get:
|
|
tags:
|
|
- remote clusters
|
|
summary: Get a list of remote clusters.
|
|
description: |
|
|
Get a list of remote clusters.
|
|
|
|
##### Permissions
|
|
`manage_secure_connections` or `manage_shared_channels`
|
|
operationId: GetRemoteClusters
|
|
parameters:
|
|
- name: page
|
|
in: query
|
|
description: The page to select
|
|
schema:
|
|
type: integer
|
|
- name: per_page
|
|
in: query
|
|
description: The number of remote clusters per page
|
|
schema:
|
|
type: integer
|
|
- name: exclude_offline
|
|
in: query
|
|
description: Exclude offline remote clusters
|
|
schema:
|
|
type: boolean
|
|
- name: in_channel
|
|
in: query
|
|
description: Select remote clusters in channel
|
|
schema:
|
|
type: string
|
|
- name: not_in_channel
|
|
in: query
|
|
description: Select remote clusters not in this channel
|
|
schema:
|
|
type: string
|
|
- name: only_confirmed
|
|
in: query
|
|
description: Select only remote clusters already confirmed
|
|
schema:
|
|
type: boolean
|
|
- name: only_plugins
|
|
in: query
|
|
description: Select only remote clusters that belong to a plugin
|
|
schema:
|
|
type: boolean
|
|
- name: exclude_plugins
|
|
in: query
|
|
description: Select only remote clusters that don't belong to a plugin
|
|
schema:
|
|
type: boolean
|
|
- name: include_deleted
|
|
in: query
|
|
description: Include those remote clusters that have been deleted
|
|
schema:
|
|
type: boolean
|
|
responses:
|
|
"200":
|
|
description: Remote clusters fetch successful. Result might be empty.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/RemoteCluster"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
|
|
post:
|
|
tags:
|
|
- remote clusters
|
|
summary: Create a new remote cluster.
|
|
description: |
|
|
Create a new remote cluster and generate an invite code.
|
|
|
|
##### Permissions
|
|
`manage_secure_connections`
|
|
operationId: CreateRemoteCluster
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- name
|
|
- default_team_id
|
|
properties:
|
|
name:
|
|
type: string
|
|
display_name:
|
|
type: string
|
|
default_team_id:
|
|
type: string
|
|
password:
|
|
type: string
|
|
description: |
|
|
The password to use in the invite code. If empty,
|
|
the server will generate one and it will be part
|
|
of the response
|
|
responses:
|
|
"201":
|
|
description: Remote cluster creation successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
remote_cluster:
|
|
$ref: "#/components/schemas/RemoteCluster"
|
|
invite:
|
|
type: string
|
|
description: The encrypted invite for the newly created remote cluster
|
|
password:
|
|
type: string
|
|
description: |
|
|
The password generated by the server if none was
|
|
sent on the create request
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
|
|
"/api/v4/remotecluster/{remote_id}":
|
|
get:
|
|
tags:
|
|
- remote clusters
|
|
summary: Get a remote cluster.
|
|
description: |
|
|
Get the Remote Cluster details from the provided id string.
|
|
|
|
##### Permissions
|
|
`manage_secure_connections` or `manage_shared_channels`
|
|
operationId: GetRemoteCluster
|
|
parameters:
|
|
- name: remote_id
|
|
in: path
|
|
description: Remote Cluster GUID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: Remote Cluster retrieval successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/RemoteCluster"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"404":
|
|
$ref: "#/components/responses/NotFound"
|
|
patch:
|
|
tags:
|
|
- remote clusters
|
|
summary: Patch a remote cluster.
|
|
description: |
|
|
Partially update a Remote Cluster by providing only the fields you want to update. Ommited fields will not be updated.
|
|
|
|
##### Permissions
|
|
`manage_secure_connections`
|
|
operationId: PatchRemoteCluster
|
|
parameters:
|
|
- name: remote_id
|
|
in: path
|
|
description: Remote Cluster GUID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
display_name:
|
|
type: string
|
|
default_team_id:
|
|
type: string
|
|
description: The team where channels from invites are created
|
|
responses:
|
|
"200":
|
|
description: Remote Cluster patch successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/RemoteCluster"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"404":
|
|
$ref: "#/components/responses/NotFound"
|
|
delete:
|
|
tags:
|
|
- remote clusters
|
|
summary: Delete a remote cluster.
|
|
description: |
|
|
Deletes a Remote Cluster.
|
|
|
|
##### Permissions
|
|
`manage_secure_connections`
|
|
operationId: DeleteRemoteCluster
|
|
parameters:
|
|
- name: remote_id
|
|
in: path
|
|
description: Remote Cluster GUID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"204":
|
|
description: Remote Cluster deletion successful
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"404":
|
|
$ref: "#/components/responses/NotFound"
|
|
|
|
"/api/v4/remotecluster/{remote_id}/generate_invite":
|
|
post:
|
|
tags:
|
|
- remote clusters
|
|
summary: Generate invite code.
|
|
description: |
|
|
Generates an invite code for a given remote cluster.
|
|
|
|
##### Permissions
|
|
`manage_secure_connections`
|
|
operationId: GenerateRemoteClusterInvite
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- password
|
|
properties:
|
|
password:
|
|
type: string
|
|
description: The password to encrypt the invite code with.
|
|
responses:
|
|
"201":
|
|
description: Invite code generated
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: string
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
|
|
"/api/v4/remotecluster/accept_invite":
|
|
post:
|
|
tags:
|
|
- remote clusters
|
|
summary: Accept a remote cluster invite code.
|
|
description: |
|
|
Accepts a remote cluster invite code.
|
|
|
|
##### Permissions
|
|
`manage_secure_connections`
|
|
operationId: AcceptRemoteClusterInvite
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- invite
|
|
- name
|
|
- default_team_id
|
|
- password
|
|
properties:
|
|
invite:
|
|
type: string
|
|
name:
|
|
type: string
|
|
display_name:
|
|
type: string
|
|
default_team_id:
|
|
type: string
|
|
password:
|
|
type: string
|
|
description: The password to decrypt the invite code.
|
|
responses:
|
|
"201":
|
|
description: Invite successfully accepted
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
$ref: "#/components/schemas/RemoteCluster"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|