mattermost/api/v4/source/remoteclusters.yaml
Daniel Espino García 55496c07c1
Update API docs (#36302)
* Update API docs

* Coderabbit comments

* Address feedback

* Address feedback

* Coderabbit feedback
2026-05-11 12:29:25 +02:00

473 lines
14 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:
$ref: "#/components/schemas/RemoteCluster"
"401":
$ref: "#/components/responses/Unauthorized"
"403":
$ref: "#/components/responses/Forbidden"
"/api/v4/remotecluster/ping":
post:
tags:
- remote clusters
summary: Receive a ping from a remote cluster.
description: |
Receives heartbeat traffic from an already linked remote cluster.
This endpoint is authenticated with a remote-cluster token and is
used by the secure connection transport layer.
##### Permissions
No user session permissions required.
operationId: RemoteClusterPing
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/RemoteClusterFrame"
responses:
"200":
description: Ping response successful
content:
application/json:
schema:
$ref: "#/components/schemas/RemoteClusterPing"
"400":
$ref: "#/components/responses/BadRequest"
"401":
$ref: "#/components/responses/Unauthorized"
"/api/v4/remotecluster/msg":
post:
tags:
- remote clusters
summary: Receive a remote cluster message.
description: |
Receives and processes an incoming transport message from a linked
remote cluster. This endpoint is authenticated with a remote-cluster
token and is part of the secure connection protocol.
##### Permissions
No user session permissions required.
operationId: RemoteClusterAcceptMessage
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/RemoteClusterFrame"
responses:
"200":
description: Message accepted successfully
content:
application/json:
schema:
$ref: "#/components/schemas/RemoteClusterResponse"
"400":
$ref: "#/components/responses/BadRequest"
"401":
$ref: "#/components/responses/Unauthorized"
"/api/v4/remotecluster/confirm_invite":
post:
tags:
- remote clusters
summary: Confirm an invite with a remote cluster.
description: |
Confirms an invitation handshake from a linked remote cluster.
This endpoint is authenticated with a remote-cluster token and is
used by the secure connection protocol.
##### Permissions
No user session permissions required.
operationId: RemoteClusterConfirmInvite
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/RemoteClusterFrame"
responses:
"200":
description: Invitation confirmation successful
"400":
$ref: "#/components/responses/BadRequest"
"401":
$ref: "#/components/responses/Unauthorized"
"/api/v4/remotecluster/upload/{upload_id}":
post:
tags:
- remote clusters
summary: Upload file data for a remote upload session.
description: |
Streams file data into an existing upload session from a linked
remote cluster. This endpoint is authenticated with a remote-cluster token.
##### Permissions
No user session permissions required.
operationId: UploadRemoteClusterData
parameters:
- name: upload_id
in: path
description: The upload session ID.
required: true
schema:
type: string
requestBody:
content:
application/octet-stream:
schema:
type: string
format: binary
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
responses:
"200":
description: Upload chunk accepted
content:
application/json:
schema:
$ref: "#/components/schemas/FileInfo"
"204":
description: Upload data accepted with no file completion yet
"400":
$ref: "#/components/responses/BadRequest"
"401":
$ref: "#/components/responses/Unauthorized"
"/api/v4/remotecluster/{user_id}/image":
post:
tags:
- remote clusters
summary: Set profile image for a remote user.
description: |
Uploads and sets a profile image for a remote user managed by the
requesting remote cluster. This endpoint is authenticated with a
remote-cluster token.
##### Permissions
No user session permissions required.
operationId: RemoteSetProfileImage
parameters:
- name: user_id
in: path
description: The remote user ID.
required: true
schema:
type: string
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
image:
type: string
format: binary
responses:
"200":
description: Profile image updated successfully
"400":
$ref: "#/components/responses/BadRequest"
"401":
$ref: "#/components/responses/Unauthorized"