mirror of
https://github.com/mattermost/mattermost.git
synced 2026-04-09 02:57:02 -04:00
* Add shared AI bridge seam
Co-authored-by: Nick Misasi <nick13misasi@gmail.com>
* Add AI bridge test helper API
Co-authored-by: Nick Misasi <nick13misasi@gmail.com>
* Add AI bridge seam test coverage
Co-authored-by: Nick Misasi <nick13misasi@gmail.com>
* Add Playwright AI bridge recap helpers
Co-authored-by: Nick Misasi <nick13misasi@gmail.com>
* Fix recap channel persistence test
Co-authored-by: Nick Misasi <nick13misasi@gmail.com>
* Restore bridge client compatibility shim
Co-authored-by: Nick Misasi <nick13misasi@gmail.com>
* Expand recap card in Playwright spec
Co-authored-by: Nick Misasi <nick13misasi@gmail.com>
* Recaps e2e test coverage (#35543)
* Add Recaps Playwright page object
Co-authored-by: Nick Misasi <nick13misasi@gmail.com>
* Expand AI recap Playwright coverage
Co-authored-by: Nick Misasi <nick13misasi@gmail.com>
* Format recap Playwright coverage
Co-authored-by: Nick Misasi <nick13misasi@gmail.com>
* Fix recap regeneration test flows
Co-authored-by: Nick Misasi <nick13misasi@gmail.com>
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
* Fix AI bridge lint and OpenAPI docs
Co-authored-by: Nick Misasi <nick13misasi@gmail.com>
* Fix recap lint shadowing
Co-authored-by: Nick Misasi <nick13misasi@gmail.com>
* Stabilize failed recap regeneration spec
Co-authored-by: Nick Misasi <nick13misasi@gmail.com>
* Fill AI bridge i18n strings
Co-authored-by: Nick Misasi <nick13misasi@gmail.com>
* Fix i18n
* Add service completion bridge path and operation tracking fields
Extend AgentsBridge with CompleteService for service-based completions,
add ClientOperation/OperationSubType tracking to BridgeCompletionRequest,
and propagate operation metadata through to the bridge client.
Made-with: Cursor
* Fill empty i18n translation strings for enterprise keys
The previous "Fix i18n" commit added 145 i18n entries with empty
translation strings, causing the i18n check to fail in CI. Fill in
all translations based on the corresponding error messages in the
enterprise and server source code.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix i18n
* Fix i18n again
* Rename Complete/CompleteService to AgentCompletion/ServiceCompletion
Align the AgentsBridge interface method names with the underlying
bridge client methods they delegate to (AgentCompletion, ServiceCompletion).
Made-with: Cursor
* Refactor
* Add e2eAgentsBridge implementation
The new file was missed from the prior refactor commit.
Made-with: Cursor
* Address CodeRabbit review feedback
- Add 400 BadRequest response to AI bridge PUT endpoint OpenAPI spec
- Add missing client_operation, operation_sub_type, service_id fields to
AIBridgeTestHelperRecordedRequest schema
- Deep-clone nested JSON schema values in cloneJSONOutputFormat
- Populate ChannelID on recap summary bridge requests
- Fix msg_count assertion to mention_count for mark-as-read verification
- Make AgentCompletion/ServiceCompletion mutex usage atomic
Made-with: Cursor
* fix(playwright): align recaps page object with placeholder and channel menu
Made-with: Cursor
* fix(playwright): update recaps expectEmptyState to match RecapsList empty state
After the master merge, the recaps page now renders RecapsList's
"You're all caught up" empty state instead of the old placeholder.
Made-with: Cursor
* chore(playwright): update package-lock.json after npm install
Made-with: Cursor
* Revert "chore(playwright): update package-lock.json after npm install"
This reverts commit 95c670863a.
* style(playwright): fix prettier formatting in recaps page object
Made-with: Cursor
* fix(playwright): handle both recaps empty states correctly
The recaps page has two distinct empty states:
- Setup placeholder ("Set up your recap") when allRecaps is empty
- RecapsList caught-up state ("You're all caught up") when the
filtered tab list is empty
Split expectEmptyState into expectSetupPlaceholder and
expectCaughtUpEmptyState, used by the delete and bridge-unavailable
tests respectively.
Made-with: Cursor
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1336 lines
39 KiB
YAML
1336 lines
39 KiB
YAML
/api/v4/system/timezones:
|
|
get:
|
|
tags:
|
|
- system
|
|
summary: Retrieve a list of supported timezones
|
|
description: >
|
|
__Minimum server version__: 3.10
|
|
|
|
##### Permissions
|
|
|
|
Must be logged in.
|
|
operationId: GetSupportedTimezone
|
|
responses:
|
|
"200":
|
|
description: List of timezones retrieval successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
"500":
|
|
$ref: "#/components/responses/InternalServerError"
|
|
/api/v4/system/ping:
|
|
get:
|
|
tags:
|
|
- system
|
|
summary: Check system health
|
|
description: >
|
|
Check if the server is up and healthy based on the configuration setting
|
|
`GoRoutineHealthThreshold`. If `GoRoutineHealthThreshold` and the number
|
|
of goroutines on the server exceeds that threshold the server is
|
|
considered unhealthy. If `GoRoutineHealthThreshold` is not set or the
|
|
number of goroutines is below the threshold the server is considered
|
|
healthy.
|
|
|
|
__Minimum server version__: 3.10
|
|
|
|
If a "device_id" is passed in the query, it will test the Push Notification
|
|
Proxy in order to discover whether the device is able to receive notifications.
|
|
The response will have a "CanReceiveNotifications" property with one of the
|
|
following values:
|
|
- true: It can receive notifications
|
|
- false: It cannot receive notifications
|
|
- unknown: There has been an unknown error, and it is not certain whether it can
|
|
receive notifications.
|
|
|
|
__Minimum server version__: 6.5
|
|
|
|
If "use_rest_semantics" is set to true in the query, the endpoint will not return
|
|
an error status code in the header if the request is somehow completed successfully.
|
|
|
|
__Minimum server version__: 9.6
|
|
|
|
##### Permissions
|
|
|
|
None. Authentication is not required for this endpoint.
|
|
|
|
##### Response Details
|
|
|
|
The response varies based on query parameters and authentication:
|
|
|
|
- **Basic response** (no parameters): Returns basic server information including
|
|
`status`, mobile app versions, and active search backend.
|
|
|
|
- **Enhanced response** (`get_server_status=true`): Additionally returns
|
|
`database_status` and `filestore_status` to verify backend connectivity.
|
|
Authentication is not required.
|
|
|
|
- **Admin response** (`get_server_status=true` with `manage_system` permission):
|
|
Additionally returns `root_status` indicating whether the server is running as root.
|
|
Requires authentication with `manage_system` permission.
|
|
operationId: GetPing
|
|
parameters:
|
|
- name: get_server_status
|
|
in: query
|
|
description: >
|
|
Check the status of the database and file storage as well.
|
|
When true, adds `database_status` and `filestore_status` to the response.
|
|
If authenticated with `manage_system` permission, also adds `root_status`.
|
|
required: false
|
|
schema:
|
|
type: boolean
|
|
- name: device_id
|
|
in: query
|
|
description: Check whether this device id can receive push notifications
|
|
required: false
|
|
schema:
|
|
type: string
|
|
- name: use_rest_semantics
|
|
in: query
|
|
description: Returns 200 status code even if the server status is unhealthy.
|
|
required: false
|
|
schema:
|
|
type: boolean
|
|
responses:
|
|
"200":
|
|
description: Status of the system
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/SystemStatusResponse"
|
|
"500":
|
|
$ref: "#/components/responses/InternalServerError"
|
|
"/api/v4/system/notices/{teamId}":
|
|
get:
|
|
tags:
|
|
- system
|
|
summary: Get notices for logged in user in specified team
|
|
description: >
|
|
Will return appropriate product notices for current user in the team specified by teamId parameter.
|
|
|
|
__Minimum server version__: 5.26
|
|
|
|
##### Permissions
|
|
|
|
Must be logged in.
|
|
operationId: GetNotices
|
|
parameters:
|
|
- name: clientVersion
|
|
in: query
|
|
description: Version of the client (desktop/mobile/web) that issues the request
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: locale
|
|
in: query
|
|
description: Client locale
|
|
required: false
|
|
schema:
|
|
type: string
|
|
- name: client
|
|
in: query
|
|
description: Client type (web/mobile-ios/mobile-android/desktop)
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: teamId
|
|
in: path
|
|
description: ID of the team
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: List notices retrieve successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/Notice"
|
|
|
|
"500":
|
|
$ref: "#/components/responses/InternalServerError"
|
|
/api/v4/system/notices/view:
|
|
put:
|
|
tags:
|
|
- system
|
|
summary: Update notices as 'viewed'
|
|
description: >
|
|
Will mark the specified notices as 'viewed' by the logged in user.
|
|
|
|
__Minimum server version__: 5.26
|
|
|
|
##### Permissions
|
|
|
|
Must be logged in.
|
|
operationId: MarkNoticesViewed
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: Array of notice IDs
|
|
required: true
|
|
responses:
|
|
"200":
|
|
description: Update successfull
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StatusOK"
|
|
"500":
|
|
$ref: "#/components/responses/InternalServerError"
|
|
/api/v4/system/e2e/ai_bridge:
|
|
put:
|
|
tags:
|
|
- system
|
|
summary: Configure AI bridge E2E test helper
|
|
description: >
|
|
Configure the in-memory AI bridge test helper used by end-to-end tests to
|
|
mock agent availability, agent/service listings, queued completion
|
|
responses, and test-only AI feature flag overrides.
|
|
|
|
This endpoint is only available when `EnableTesting` is enabled.
|
|
|
|
##### Permissions
|
|
|
|
Must have `manage_system` permission.
|
|
operationId: SetAIBridgeTestHelper
|
|
requestBody:
|
|
description: AI bridge E2E helper configuration
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/AIBridgeTestHelperConfig"
|
|
responses:
|
|
"200":
|
|
description: AI bridge test helper configured successfully
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/AIBridgeTestHelperState"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"501":
|
|
$ref: "#/components/responses/NotImplemented"
|
|
get:
|
|
tags:
|
|
- system
|
|
summary: Get AI bridge E2E test helper state
|
|
description: >
|
|
Retrieve the current in-memory AI bridge test helper state used for end-to-end tests.
|
|
|
|
This endpoint is only available when `EnableTesting` is enabled.
|
|
|
|
##### Permissions
|
|
|
|
Must have `manage_system` permission.
|
|
operationId: GetAIBridgeTestHelper
|
|
responses:
|
|
"200":
|
|
description: AI bridge test helper state retrieved successfully
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/AIBridgeTestHelperState"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"501":
|
|
$ref: "#/components/responses/NotImplemented"
|
|
delete:
|
|
tags:
|
|
- system
|
|
summary: Reset AI bridge E2E test helper
|
|
description: >
|
|
Reset the in-memory AI bridge test helper state used for end-to-end tests.
|
|
|
|
This endpoint is only available when `EnableTesting` is enabled.
|
|
|
|
##### Permissions
|
|
|
|
Must have `manage_system` permission.
|
|
operationId: DeleteAIBridgeTestHelper
|
|
responses:
|
|
"200":
|
|
description: AI bridge test helper was reset successfully
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StatusOK"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"501":
|
|
$ref: "#/components/responses/NotImplemented"
|
|
/api/v4/database/recycle:
|
|
post:
|
|
tags:
|
|
- system
|
|
summary: Recycle database connections
|
|
description: >
|
|
Recycle database connections by closing and reconnecting all connections
|
|
to master and read replica databases.
|
|
|
|
##### Permissions
|
|
|
|
Must have `manage_system` permission.
|
|
operationId: DatabaseRecycle
|
|
responses:
|
|
"200":
|
|
description: Database recycle successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StatusOK"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
/api/v4/email/test:
|
|
post:
|
|
tags:
|
|
- system
|
|
summary: Send a test email
|
|
description: >
|
|
Send a test email to make sure you have your email settings configured
|
|
correctly. Optionally provide a configuration in the request body to
|
|
test. If no valid configuration is present in the request body the
|
|
current server configuration will be tested.
|
|
|
|
##### Permissions
|
|
|
|
Must have `manage_system` permission.
|
|
operationId: TestEmail
|
|
requestBody:
|
|
description: Mattermost configuration
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/Config"
|
|
responses:
|
|
"200":
|
|
description: Email successful sent
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StatusOK"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"500":
|
|
$ref: "#/components/responses/InternalServerError"
|
|
/api/v4/notifications/test:
|
|
post:
|
|
tags:
|
|
- system
|
|
summary: Send a test notification
|
|
description: >
|
|
Send a test notification to make sure you have your notification settings
|
|
configured correctly.
|
|
|
|
##### Permissions
|
|
|
|
Must be logged in.
|
|
operationId: TestNotification
|
|
responses:
|
|
"200":
|
|
description: Notification successfully sent
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StatusOK"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"500":
|
|
$ref: "#/components/responses/InternalServerError"
|
|
/api/v4/site_url/test:
|
|
post:
|
|
tags:
|
|
- system
|
|
summary: Checks the validity of a Site URL
|
|
description: >
|
|
Sends a Ping request to the mattermost server using the specified Site
|
|
URL.
|
|
|
|
|
|
##### Permissions
|
|
|
|
Must have `manage_system` permission.
|
|
|
|
|
|
__Minimum server version__: 5.16
|
|
operationId: TestSiteURL
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- site_url
|
|
properties:
|
|
site_url:
|
|
type: string
|
|
description: The Site URL to test
|
|
required: true
|
|
responses:
|
|
"200":
|
|
description: Site URL is valid
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StatusOK"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"500":
|
|
$ref: "#/components/responses/InternalServerError"
|
|
/api/v4/file/s3_test:
|
|
post:
|
|
tags:
|
|
- system
|
|
summary: Test AWS S3 connection
|
|
description: >
|
|
Send a test to validate if can connect to AWS S3. Optionally provide a
|
|
configuration in the request body to test. If no valid configuration is
|
|
present in the request body the current server configuration will be
|
|
tested.
|
|
|
|
##### Permissions
|
|
|
|
Must have `manage_system` permission.
|
|
|
|
__Minimum server version__: 4.8
|
|
operationId: TestS3Connection
|
|
requestBody:
|
|
description: Mattermost configuration
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/Config"
|
|
responses:
|
|
"200":
|
|
description: S3 Test successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StatusOK"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"500":
|
|
$ref: "#/components/responses/InternalServerError"
|
|
/api/v4/config:
|
|
get:
|
|
tags:
|
|
- system
|
|
summary: Get configuration
|
|
description: |
|
|
Retrieve the current server configuration
|
|
##### Permissions
|
|
Must have `manage_system` permission.
|
|
operationId: GetConfig
|
|
parameters:
|
|
- name: remove_masked
|
|
in: query
|
|
description: |
|
|
Remove masked values from the exported configuration.
|
|
|
|
__Minimum server version__: 10.4.0
|
|
required: false
|
|
schema:
|
|
type: boolean
|
|
default: false
|
|
- name: remove_defaults
|
|
in: query
|
|
description: |
|
|
Remove default values from the exported configuration.
|
|
|
|
__Minimum server version__: 10.4.0
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: false
|
|
responses:
|
|
"200":
|
|
description: Configuration retrieval successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/Config"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
put:
|
|
tags:
|
|
- system
|
|
summary: Update configuration
|
|
description: >
|
|
Submit a new configuration for the server to use. As of server version
|
|
4.8, the `PluginSettings.EnableUploads` setting cannot be modified by
|
|
this endpoint.
|
|
|
|
Note that the parameters that aren't set in the configuration that you
|
|
provide will be reset to default values. Therefore, if you want to
|
|
change a configuration parameter and leave the other ones unchanged,
|
|
you need to get the existing configuration first, change the field that
|
|
you want, then put that new configuration.
|
|
|
|
##### Permissions
|
|
|
|
Must have `manage_system` permission.
|
|
operationId: UpdateConfig
|
|
requestBody:
|
|
description: Mattermost configuration
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/Config"
|
|
responses:
|
|
"200":
|
|
description: Configuration update successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/Config"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
/api/v4/config/reload:
|
|
post:
|
|
tags:
|
|
- system
|
|
summary: Reload configuration
|
|
description: |
|
|
Reload the configuration file to pick up on any changes made to it.
|
|
##### Permissions
|
|
Must have `manage_system` permission.
|
|
operationId: ReloadConfig
|
|
responses:
|
|
"200":
|
|
description: Configuration reload successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StatusOK"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
/api/v4/config/client:
|
|
get:
|
|
tags:
|
|
- system
|
|
summary: Get client configuration
|
|
description: |
|
|
Get a subset of the server configuration needed by the client.
|
|
##### Permissions
|
|
No permission required.
|
|
operationId: GetClientConfig
|
|
responses:
|
|
"200":
|
|
description: Configuration retrieval successful
|
|
/api/v4/config/environment:
|
|
get:
|
|
tags:
|
|
- system
|
|
summary: Get configuration made through environment variables
|
|
description: >
|
|
Retrieve a json object mirroring the server configuration where fields
|
|
are set to true
|
|
|
|
if the corresponding config setting is set through an environment variable. Settings
|
|
|
|
that haven't been set through environment variables will be missing from the object.
|
|
|
|
|
|
__Minimum server version__: 4.10
|
|
|
|
|
|
##### Permissions
|
|
|
|
Must have `manage_system` permission.
|
|
operationId: GetEnvironmentConfig
|
|
responses:
|
|
"200":
|
|
description: Configuration retrieval successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/EnvironmentConfig"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
/api/v4/config/patch:
|
|
put:
|
|
tags:
|
|
- system
|
|
summary: Patch configuration
|
|
description: >
|
|
Submit configuration to patch. As of server version 4.8, the
|
|
`PluginSettings.EnableUploads` setting cannot be modified by this
|
|
endpoint.
|
|
|
|
##### Permissions
|
|
|
|
Must have `manage_system` permission.
|
|
|
|
__Minimum server version__: 5.20
|
|
|
|
##### Note
|
|
|
|
The Plugins are stored as a map, and since a map may recursively go
|
|
down to any depth, individual fields of a map are not changed.
|
|
Consider using the `update config` (PUT api/v4/config) endpoint
|
|
to update a plugins configurations.
|
|
operationId: PatchConfig
|
|
requestBody:
|
|
description: Mattermost configuration
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/Config"
|
|
responses:
|
|
"200":
|
|
description: Configuration update successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/Config"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
/api/v4/license:
|
|
post:
|
|
tags:
|
|
- system
|
|
summary: Upload license file
|
|
description: |
|
|
Upload a license to enable enterprise features.
|
|
|
|
__Minimum server version__: 4.0
|
|
|
|
##### Permissions
|
|
Must have `manage_system` permission.
|
|
operationId: UploadLicenseFile
|
|
requestBody:
|
|
content:
|
|
multipart/form-data:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
license:
|
|
description: The license to be uploaded
|
|
type: string
|
|
format: binary
|
|
required:
|
|
- license
|
|
responses:
|
|
"201":
|
|
description: License file upload successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StatusOK"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"413":
|
|
$ref: "#/components/responses/TooLarge"
|
|
delete:
|
|
tags:
|
|
- system
|
|
summary: Remove license file
|
|
description: >
|
|
Remove the license file from the server. This will disable all
|
|
enterprise features.
|
|
|
|
|
|
__Minimum server version__: 4.0
|
|
|
|
|
|
##### Permissions
|
|
|
|
Must have `manage_system` permission.
|
|
operationId: RemoveLicenseFile
|
|
responses:
|
|
"200":
|
|
description: License removal successful
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
/api/v4/license/client:
|
|
get:
|
|
tags:
|
|
- system
|
|
summary: Get client license
|
|
description: >
|
|
Get a subset of the server license needed by the client.
|
|
|
|
##### Permissions
|
|
|
|
No permission required but having the `manage_system` permission returns more information.
|
|
operationId: GetClientLicense
|
|
parameters:
|
|
- name: format
|
|
in: query
|
|
required: true
|
|
description: Must be `old`, other formats not implemented yet
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: License retrieval successful
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"501":
|
|
$ref: "#/components/responses/NotImplemented"
|
|
/api/v4/license/load_metric:
|
|
get:
|
|
tags:
|
|
- system
|
|
summary: Get license load metric
|
|
description: >
|
|
Get the current license load metric, calculated based on monthly active users
|
|
against the licensed user count. Returns a value of 0 when there is no license loaded or
|
|
the license doesn't have a user count.
|
|
|
|
__Minimum server version__: 10.8
|
|
|
|
##### Permissions
|
|
|
|
Must be logged in.
|
|
operationId: GetLicenseLoadMetric
|
|
responses:
|
|
"200":
|
|
description: License load metric retrieval successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
load:
|
|
type: integer
|
|
description: Current license load metric as an integer
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"500":
|
|
$ref: "#/components/responses/InternalServerError"
|
|
/api/v4/license/renewal:
|
|
get:
|
|
tags:
|
|
- system
|
|
summary: Request the license renewal link
|
|
description: >
|
|
Request the renewal link that would be used to start the license renewal process
|
|
|
|
__Minimum server version__: 5.32
|
|
|
|
##### Permissions
|
|
|
|
Must have `sysconsole_write_about` permission.
|
|
operationId: RequestLicenseRenewalLink
|
|
responses:
|
|
"200":
|
|
description: License renewal link obtained
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/LicenseRenewalLink"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"500":
|
|
$ref: "#/components/responses/InternalServerError"
|
|
/api/v4/trial-license:
|
|
post:
|
|
tags:
|
|
- system
|
|
summary: Request and install a trial license for your server
|
|
description: >
|
|
Request and install a trial license for your server
|
|
|
|
__Minimum server version__: 5.25
|
|
|
|
##### Permissions
|
|
|
|
Must have `manage_system` permission.
|
|
operationId: RequestTrialLicense
|
|
requestBody:
|
|
description: License request
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- users
|
|
properties:
|
|
users:
|
|
type: integer
|
|
description: Number of users requested (20% extra is going to be added)
|
|
responses:
|
|
"200":
|
|
description: Trial license obtained and installed
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
/api/v4/trial-license/prev:
|
|
get:
|
|
tags:
|
|
- system
|
|
summary: Get last trial license used
|
|
operationId: GetPrevTrialLicense
|
|
description: >
|
|
Get the last trial license used on the sevrer
|
|
|
|
__Minimum server version__: 5.36
|
|
|
|
##### Permissions
|
|
|
|
Must have `manage_systems` permissions.
|
|
responses:
|
|
"200":
|
|
description: License fetched successfully.
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
/api/v4/audits:
|
|
get:
|
|
tags:
|
|
- system
|
|
summary: Get audits
|
|
description: >
|
|
Get a page of audits for all users on the system, selected with `page`
|
|
and `per_page` query parameters.
|
|
|
|
##### Permissions
|
|
|
|
Must have `manage_system` permission.
|
|
operationId: GetAudits
|
|
parameters:
|
|
- name: page
|
|
in: query
|
|
description: The page to select.
|
|
schema:
|
|
type: integer
|
|
default: 0
|
|
- name: per_page
|
|
in: query
|
|
description: The number of audits per page.
|
|
schema:
|
|
type: integer
|
|
default: 60
|
|
responses:
|
|
"200":
|
|
description: Audits retrieval successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/Audit"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
/api/v4/caches/invalidate:
|
|
post:
|
|
tags:
|
|
- system
|
|
summary: Invalidate all the caches
|
|
description: >
|
|
Purge all the in-memory caches for the Mattermost server. This can have
|
|
a temporary negative effect on performance while the caches are
|
|
re-populated.
|
|
|
|
##### Permissions
|
|
|
|
Must have `manage_system` permission.
|
|
operationId: InvalidateCaches
|
|
responses:
|
|
"200":
|
|
description: Caches invalidate successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StatusOK"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
/api/v4/logs:
|
|
get:
|
|
tags:
|
|
- system
|
|
summary: Get logs
|
|
description: >
|
|
Get a page of server logs, selected with `page` and `logs_per_page`
|
|
query parameters.
|
|
|
|
##### Permissions
|
|
|
|
Must have `manage_system` permission.
|
|
operationId: GetLogs
|
|
parameters:
|
|
- name: page
|
|
in: query
|
|
description: The page to select.
|
|
schema:
|
|
type: integer
|
|
default: 0
|
|
- name: logs_per_page
|
|
in: query
|
|
description: The number of logs per page. There is a maximum limit of 10000 logs
|
|
per page.
|
|
schema:
|
|
type: string
|
|
default: "10000"
|
|
responses:
|
|
"200":
|
|
description: Logs retrieval successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
post:
|
|
tags:
|
|
- system
|
|
summary: Add log message
|
|
description: >
|
|
Add log messages to the server logs.
|
|
|
|
##### Permissions
|
|
|
|
Users with `manage_system` permission can log ERROR or DEBUG messages.
|
|
|
|
Logged in users can log ERROR or DEBUG messages when `ServiceSettings.EnableDeveloper` is `true` or just DEBUG messages when `false`.
|
|
|
|
Non-logged in users can log ERROR or DEBUG messages when `ServiceSettings.EnableDeveloper` is `true` and cannot log when `false`.
|
|
operationId: PostLog
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- level
|
|
- message
|
|
properties:
|
|
level:
|
|
type: string
|
|
description: The error level, ERROR or DEBUG
|
|
message:
|
|
type: string
|
|
description: Message to send to the server logs
|
|
required: true
|
|
responses:
|
|
"200":
|
|
description: Logs sent successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
items:
|
|
type: string
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
/api/v4/analytics/old:
|
|
get:
|
|
tags:
|
|
- system
|
|
summary: Get analytics
|
|
description: >
|
|
Get some analytics data about the system. This endpoint uses the old
|
|
format, the `/analytics` route is reserved for the new format when it
|
|
gets implemented.
|
|
|
|
|
|
The returned JSON changes based on the `name` query parameter but is always key/value pairs.
|
|
|
|
|
|
__Minimum server version__: 4.0
|
|
|
|
|
|
##### Permissions
|
|
|
|
Must have `manage_system` permission.
|
|
operationId: GetAnalyticsOld
|
|
parameters:
|
|
- name: name
|
|
in: query
|
|
required: false
|
|
description: Possible values are "standard", "bot_post_counts_day",
|
|
"post_counts_day", "user_counts_with_posts_day" or "extra_counts"
|
|
schema:
|
|
type: string
|
|
default: standard
|
|
- name: team_id
|
|
in: query
|
|
required: false
|
|
description: The team ID to filter the data by
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: Analytics retrieval successful
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
/api/v4/server_busy:
|
|
post:
|
|
tags:
|
|
- system
|
|
summary: Set the server busy (high load) flag
|
|
description: >
|
|
Marks the server as currently having high load which disables
|
|
non-critical services such as search, statuses and typing notifications.
|
|
|
|
|
|
__Minimum server version__: 5.20
|
|
|
|
|
|
##### Permissions
|
|
|
|
Must have `manage_system` permission.
|
|
operationId: SetServerBusy
|
|
parameters:
|
|
- name: seconds
|
|
in: query
|
|
required: false
|
|
description: Number of seconds until server is automatically marked as not busy.
|
|
schema:
|
|
type: string
|
|
default: "3600"
|
|
responses:
|
|
"200":
|
|
description: Server busy flag set successfully
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StatusOK"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
get:
|
|
tags:
|
|
- system
|
|
summary: Get server busy expiry time.
|
|
description: >
|
|
Gets the timestamp corresponding to when the server busy flag will be
|
|
automatically cleared.
|
|
|
|
|
|
__Minimum server version__: 5.20
|
|
|
|
|
|
##### Permissions
|
|
|
|
Must have `manage_system` permission.
|
|
operationId: GetServerBusyExpires
|
|
responses:
|
|
"200":
|
|
description: Server busy expires timestamp retrieved successfully
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/Server_Busy"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
delete:
|
|
tags:
|
|
- system
|
|
summary: Clears the server busy (high load) flag
|
|
description: >
|
|
Marks the server as not having high load which re-enables non-critical
|
|
services such as search, statuses and typing notifications.
|
|
|
|
|
|
__Minimum server version__: 5.20
|
|
|
|
|
|
##### Permissions
|
|
|
|
Must have `manage_system` permission.
|
|
operationId: ClearServerBusy
|
|
responses:
|
|
"200":
|
|
description: Server busy flag cleared successfully
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StatusOK"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
/api/v4/notifications/ack:
|
|
post:
|
|
tags:
|
|
- root
|
|
summary: Acknowledge receiving of a notification
|
|
description: >
|
|
__Minimum server version__: 3.10
|
|
|
|
##### Permissions
|
|
|
|
Must be logged in.
|
|
operationId: AcknowledgeNotification
|
|
responses:
|
|
"200":
|
|
description: Status of the system
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/PushNotification"
|
|
"404":
|
|
$ref: "#/components/responses/NotFound"
|
|
/api/v4/redirect_location:
|
|
get:
|
|
tags:
|
|
- system
|
|
summary: Get redirect location
|
|
description: >
|
|
__Minimum server version__: 3.10
|
|
|
|
##### Permissions
|
|
|
|
Must be logged in.
|
|
operationId: GetRedirectLocation
|
|
parameters:
|
|
- name: url
|
|
in: query
|
|
required: true
|
|
description: Url to check
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: Got redirect location
|
|
content:
|
|
image/*:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
location:
|
|
type: string
|
|
"404":
|
|
$ref: "#/components/responses/NotFound"
|
|
/api/v4/image:
|
|
get:
|
|
tags:
|
|
- system
|
|
summary: Get an image by url
|
|
description: >
|
|
Fetches an image via Mattermost image proxy.
|
|
|
|
__Minimum server version__: 3.10
|
|
|
|
##### Permissions
|
|
|
|
Must be logged in.
|
|
operationId: GetImageByUrl
|
|
responses:
|
|
"200":
|
|
description: Image found
|
|
content:
|
|
image/*:
|
|
schema:
|
|
type: string
|
|
format: binary
|
|
"404":
|
|
$ref: "#/components/responses/NotFound"
|
|
|
|
/api/v4/upgrade_to_enterprise:
|
|
post:
|
|
tags:
|
|
- system
|
|
summary: Executes an inplace upgrade from Team Edition to Enterprise Edition
|
|
description: >
|
|
It downloads the Mattermost Enterprise Edition of your current version
|
|
and replace your current version with it. After the upgrade you need to
|
|
restart the Mattermost server.
|
|
|
|
__Minimum server version__: 5.27
|
|
|
|
##### Permissions
|
|
|
|
Must have `manage_system` permission.
|
|
operationId: UpgradeToEnterprise
|
|
responses:
|
|
"202":
|
|
description: Upgrade started
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/PushNotification"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"429":
|
|
$ref: "#/components/responses/TooManyRequests"
|
|
|
|
/api/v4/upgrade_to_enterprise/status:
|
|
get:
|
|
tags:
|
|
- system
|
|
summary: Get the current status for the inplace upgrade from Team Edition to Enterprise Edition
|
|
description: >
|
|
It returns the percentage of completion of the current upgrade or the
|
|
error if there is any.
|
|
|
|
__Minimum server version__: 5.27
|
|
|
|
##### Permissions
|
|
|
|
Must have `manage_system` permission.
|
|
operationId: UpgradeToEnterpriseStatus
|
|
responses:
|
|
"200":
|
|
description: Upgrade status
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
percentage:
|
|
type: integer
|
|
description: Current percentage of the upgrade
|
|
error:
|
|
type: string
|
|
description: Error happened during the upgrade
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
|
|
/api/v4/upgrade_to_enterprise/allowed:
|
|
get:
|
|
tags:
|
|
- system
|
|
summary: Check if the user is allowed to upgrade to Enterprise Edition
|
|
description: >
|
|
Check if the user is allowed to upgrade to Enterprise Edition
|
|
operationId: IsAllowedToUpgradeToEnterprise
|
|
responses:
|
|
"200":
|
|
description: User is allowed to upgrade to Enterprise Edition
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
|
|
/api/v4/restart:
|
|
post:
|
|
tags:
|
|
- system
|
|
summary: Restart the system after an upgrade from Team Edition to Enterprise Edition
|
|
description: >
|
|
It restarts the current running mattermost instance to execute the new
|
|
Enterprise binary.
|
|
|
|
__Minimum server version__: 5.27
|
|
|
|
##### Permissions
|
|
|
|
Must have `manage_system` permission.
|
|
operationId: RestartServer
|
|
responses:
|
|
"200":
|
|
description: Restart started
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StatusOK"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
/api/v4/integrity:
|
|
post:
|
|
tags:
|
|
- system
|
|
summary: Perform a database integrity check
|
|
description: |
|
|
Performs a database integrity check.
|
|
|
|
|
|
__Note__: This check may temporarily harm system performance.
|
|
|
|
|
|
__Minimum server version__: 5.28.0
|
|
|
|
|
|
__Local mode only__: This endpoint is only available through [local mode](https://docs.mattermost.com/administration/mmctl-cli-tool.html#local-mode).
|
|
operationId: CheckIntegrity
|
|
responses:
|
|
"200":
|
|
description: Integrity check successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/IntegrityCheckResult"
|
|
/api/v4/system/support_packet:
|
|
get:
|
|
tags:
|
|
- system
|
|
summary: Download a zip file which contains helpful and useful information for troubleshooting your mattermost instance.
|
|
description: |
|
|
Download a zip file which contains helpful and useful information for troubleshooting your mattermost instance.
|
|
__Minimum server version: 5.32__
|
|
##### Permissions
|
|
Must have any of the system console read permissions.
|
|
##### License
|
|
Requires either a E10 or E20 license.
|
|
operationId: GenerateSupportPacket
|
|
parameters:
|
|
- name: basic_server_logs
|
|
in: query
|
|
description: |
|
|
Specifies whether the server should include or exclude log files. Default value is true.
|
|
|
|
__Minimum server version__: 9.8.0
|
|
required: false
|
|
schema:
|
|
type: boolean
|
|
- name: plugin_packets
|
|
in: query
|
|
description: |
|
|
Specifies plugin identifiers whose content should be included in the Support Packet.
|
|
|
|
__Minimum server version__: 9.8.0
|
|
required: false
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"404":
|
|
$ref: "#/components/responses/NotFound"
|