openapi: 3.0.0 info: version: "4.0" title: Справочник Time API tags: - name: Введение description: > API веб-сервисов Time используется клиентами Time и сторонними приложениями для взаимодействия с сервером. - name: Схема description: > Доступ ко всем API осуществляется через HTTPS запросы по адресу `/api/v4`. Все тела запросов и ответов имеют формат `application/json`. При использовании конечных точек, требующих идентификатор пользователя, строка `me` может быть использована вместо идентификатора пользователя, чтобы указать, что действие должно быть выполнено для вошедшего в систему пользователя. Полное описание API доступно в формате OpenAPI (`openapi.yaml`) по адресу [OpenAPI спецификация](/openapi.yaml). Файл можно использовать для генерации клиентских SDK с помощью соответствующих инструментов. - name: Аутентификация description: | Существует несколько способов аутентификации с использованием API Time. Все примеры предполагают, что экземпляр Time запущен по адресу http://localhost:8065. #### Токен сессии Выполните HTTP POST запрос на `/api/v4/users/login` с JSON телом, указывающим `login_id` пользователя, `password` и, при необходимости, MFA `token`. `login_id` может быть электронной почтой, именем пользователя или AD/LDAP ID в зависимости от конфигурации системы. ``` curl -i -d '{"login_id":"someone@nowhere.com","password":"thisisabadpassword"}' http://localhost:8065/api/v4/users/login ``` ПРИМЕЧАНИЕ: Если вы запускаете cURL на Windows, вам нужно будет заменить одинарные кавычки на двойные и экранировать внутренние двойные кавычки с помощью обратного слэша, как показано ниже: ``` curl -i -d '{"login_id":"someone@nowhere.com","password":"thisisabadpassword"}' http://localhost:8065/api/v4/users/login ``` Если запрос успешен, ответ будет содержать заголовок `Token` и объект пользователя в теле. ``` HTTP/1.1 200 OK Set-Cookie: MMSID=hyr5dmb1mbb49c44qmx4whniso; Path=/; Max-Age=2592000; HttpOnly Token: hyr5dmb1mbb49c44qmx4whniso X-Ratelimit-Limit: 10 X-Ratelimit-Remaining: 9 X-Ratelimit-Reset: 1 X-Request-Id: smda55ckcfy89b6tia58shk5fh X-Version-Id: developer Date: Fri, 11 Sep 2015 13:21:14 GMT Content-Length: 657 Content-Type: application/json; charset=utf-8 {{user object as json}} ``` Включите `Token` как часть заголовка `Authorization` в ваших будущих API запросах с использованием метода `Bearer`. ``` curl -i -H 'Authorization: Bearer hyr5dmb1mbb49c44qmx4whniso' http://localhost:8065/api/v4/users/me ``` Теперь вы должны иметь возможность получить доступ к API как пользователь, под которым вы вошли. #### Персональные токены доступа Использование [персональных токенов доступа](https://docs.time-messenger.ru/user-guide/personal-access-tokens/) очень похоже на использование токена сессии. Единственное реальное отличие заключается в том, что токены сессии истекают, а персональные токены доступа будут действовать до тех пор, пока они не будут вручную отозваны пользователем или администратором. Так же, как и токены сессии, включите персональный токен доступа как часть заголовка `Authorization` в ваших запросах, используя метод `Bearer`. Предположим, что наш персональный токен доступа - `9xuqwrwgstrb3mzrxb83nb357a`, мы могли бы использовать его, как показано ниже. ``` curl -i -H 'Authorization: Bearer 9xuqwrwgstrb3mzrxb83nb357a' http://localhost:8065/api/v4/users/me ``` #### OAuth 2.0 Time имеет возможность выступать в качестве [поставщика услуг OAuth 2.0](https://tools.ietf.org/html/rfc6749). - name: Ошибки description: > Все ошибки вернут соответствующий код ответа HTTP вместе со следующим телом JSON: ``` { "id": "the.error.id", "message": "Что-то пошло не так", // причина ошибки "request_id": "", // ID запроса "status_code": 0, // код статуса HTTP "is_oauth": false // относится ли ошибка к OAuth } ``` - name: Лимитирование запросов description: > Каждый раз, когда вы делаете HTTP-запрос к API Time, вы можете заметить следующие заголовки, включенные в ответ: ``` X-Ratelimit-Limit: 10 X-Ratelimit-Remaining: 9 X-Ratelimit-Reset: 1441983590 ``` Эти заголовки сообщают вам о текущем статусе лимитирования запросов. | Заголовок | Описание | | --------- | -------- | | X-Ratelimit-Limit | Максимальное количество запросов, которые вы можете сделать в секунду. | | X-Ratelimit-Remaining | Количество оставшихся запросов в текущем окне. | | X-Ratelimit-Reset | Оставшееся количество секунд эпохи UTC до сброса лимита запросов. | Если вы превысите лимит запросов для окна, вы получите следующую ошибку в теле ответа: ``` HTTP/1.1 429 Too Many Requests Date: Tue, 10 Sep 2015 11:20:28 GMT X-RateLimit-Limit: 10 X-RateLimit-Remaining: 0 X-RateLimit-Reset: 1 limit exceeded ``` - name: Веб-сокет description: > В дополнение к HTTP RESTful веб-сервису, Time также предлагает систему доставки веб-сокет событий и некоторую функциональность API. Чтобы подключиться по веб-сокету, выполните стандартное открытие рукопожатия, как [определено спецификацией RFC](https://tools.ietf.org/html/rfc6455#section-1.3) к конечной точке `/api/v4/websocket` Time. #### Аутентификация Веб-сокет Time может быть аутентифицирован с использованием [стандартных методов аутентификации API](../v4/аутентификация) (с помощью cookie или с явным заголовком Authorization) или через вызов аутентификации. Если вы аутентифицируетесь из браузера и вошли в систему с помощью API Time, ваш cookie аутентификации уже должен быть установлен. Именно так веб-приложение Time аутентифицируется с веб-сокетами. Чтобы аутентифицироваться с вызовом аутентификации, сначала подключите веб-сокеты, а затем отправьте следующий JSON через соединение: ``` { "seq": 1, "action": "authentication_challenge", "data": { "token": "time-token-goes-here" } } ``` Если успешно, вы получите стандартный ответ OK через веб-сокет соединение: ``` { "status": "OK", "seq_reply": 1 } ``` После успешной аутентификации сервер передаст веб-сокет событие `hello`, содержащее версию сервера через соединение. #### События Веб-сокет события в основном используются для уведомления клиента о изменениях в Time, таких как доставка новых сообщений или уведомление клиента о том, что другой пользователь печатает в канале. Веб-сокеты события будут иметь форму: ``` { "event": "hello", "data": { "server_version": "3.6.0.1451.1c38da627ebb4e3635677db6939e9195" }, "broadcast":{ "omit_users": null, "user_id": "ay5sq51sebfh58ktrce5ijtcwy", "channel_id": "", "team_id": "" }, "seq": 0 } ``` Поле `event` указывает тип события, `data` содержит любые данные, относящиеся к событию, а `broadcast` содержит информацию о том, кому было отправлено событие. Например, в приведенном выше примере `user_id` установлен на "ay5sq51sebfh58ktrce5ijtcwy", что означает, что только пользователь с этим идентификатором получил это событие. Поле `omit_users` может содержать массив идентификаторов пользователей, которые были специально исключены из получения события. Список веб-сокет событий Time: - added_to_team - authentication_challenge - channel_converted - channel_created - channel_deleted - channel_member_updated - channel_updated - channel_viewed - config_changed - delete_team - direct_added - emoji_added - ephemeral_message - group_added - hello - leave_team - license_changed - memberrole_updated - new_user - plugin_disabled - plugin_enabled - plugin_statuses_changed - post_deleted - post_edited - post_unread - posted - preference_changed - preferences_changed - preferences_deleted - reaction_added - reaction_removed - response - role_updated - status_change - typing - update_team - user_added - user_removed - user_role_updated - user_updated - dialog_opened - thread_updated - thread_follow_changed - thread_read_changed - file_deleted - name: Веб-сокет API description: | Time имеет базовую поддержку Веб-сокет API. Подключенный веб-сокет может отправлять запросы, отправляя следующее через соединение: ``` { "action": "user_typing", "seq": 2, "data": { "channel_id": "nhze199c4j87ped4wannrjdt9c", "parent_id": "" } } ``` Это пример запроса `user_typing`, цель которого - уведомить сервер о том, что подключенный клиент начал печатать в канале или ветке. Поле `action` указывает, что запрашивается, и выполняет аналогичную функцию маршрута в HTTP API. Поле `data` используется для добавления любых дополнительных данных вместе с запросом. Сервер также поддерживает бинарные сообщения WebSocket в случае, если у клиента есть такая потребность. `seq` или номер последовательности устанавливается клиентом и должен увеличиваться с каждым использованием. Он используется для различения ответов на запросы, которые приходят через веб-сокет. Например, стандартный ответ на вышеуказанный запрос будет: ``` { "status": "OK", "seq_reply": 2 } ``` Обратите внимание, что `seq_reply` равен 2, совпадая с `seq` оригинального запроса. Используя это, клиент может различить, для какого запроса предназначен ответ. Если была какая-либо информация для ответа, она будет заключена в поле `data`. В случае ошибки ответ будет: ``` { "status": "FAIL", "seq_reply": 2, "error": { "id": "some.error.id.here", "message": "Some error message here" } } ``` Список действий API WebSocket: - user_typing - get_statuses_by_ids - update_presence ### Действие `update_presence` Устанавливает текущее присутствие пользователя в канале/ветке. Используется для получения событий `typing`. Если поля установлены в пустую строку (`""`) - событие `typing` не будет получено. Это действие должно быть отправлено хотя бы один раз, иначе все события `typing` будут получены. Пример: ``` { "action": "update_presence", "seq": 2, "data": { "channel_id": "nhze199c4j87ped4wannrjdt9c", "thread_id": "" } } ``` ### Событие `thread_read_changed` - [Отметить все ветки, которые пользователь отслеживает, как прочитанные](../v4/update-thread-read-for-user) `PUT /users/{user_id}/teams/{team_id}/threads/read` Пример: ``` { "event": "thread_read_changed", "data": {}, "broadcast": { "omit_users": null, "user_id": "87icc7gj8png9raxzz3t3ym7dy", "channel_id": "", "team_id": "k1bjiqyu37r7mp76zbnju4dzby", "contains_sanitized_data": false, "contains_sensitive_data": false }, "seq": 2 } ``` - [Отметить ветку как прочитанную до определенного времени](../v4/update-thread-read-for-user) `PUT /users/{user_id}/teams/{team_id}/threads/{thread_id}/read/{timestamp}` Данные: - channel_id: - thread_id: - timestamp: то же, что и ThreadMemberships.LastViewed после обновления - unread_mentions: то же, что и ThreadMemberships.UnreadMentions после обновления - unread_replies: вычисляется по ветке после обновления - previous_unread_mentions: то же, что и ThreadMemberships.UnreadMentions до обновления - previous_unread_replies: вычисляется по ветке до обновления - previous_timestamp: то же, что и ThreadMemberships.LastViewed до обновления Пример: ``` { "event": "thread_read_changed", "data": { "channel_id": "f4hqkj8ifjy5zpqr5nyjrrajsy", "previous_unread_mentions": 0, "previous_unread_replies": 5, "thread_id": "ag1654pt3pdcfpfakxi774co6w", "timestamp": 1706274237704, "previous_timestamp": 1706274203704, "unread_mentions": 0, "unread_replies": 0 }, "broadcast": { "omit_users": null, "user_id": "87icc7gj8png9raxzz3t3ym7dy", "channel_id": "", "team_id": "k1bjiqyu37r7mp76zbnju4dzby", "contains_sanitized_data": false, "contains_sensitive_data": false }, "seq": 2 } ``` - Отметить ветку как непрочитанную с поста `POST (/users/{user_id}/teams/{team_id}/threads/{thread_id}/set_unread/{post_id}` Данные: - channel_id: - thread_id: - timestamp: то же, что и ThreadMemberships.LastViewed после обновления - unread_mentions: то же, что и ThreadMemberships.UnreadMentions после обновления - unread_replies: вычисляется по ветке после обновления - previous_unread_mentions: то же, что и ThreadMemberships.UnreadMentions до обновления - previous_unread_replies: вычисляется по ветке до обновления - previous_timestamp: то же, что и ThreadMemberships.LastViewed до обновления Broadcast: user_id, team_id Пример: ``` { "event": "thread_read_changed", "data": { "channel_id": "f4hqkj8ifjy5zpqr5nyjrrajsy", "previous_unread_mentions": 0, "previous_unread_replies": 0, "thread_id": "ag1654pt3pdcfpfakxi774co6w", "timestamp": 1706268533024, "previous_timestamp": 1706268502024, "unread_mentions": 0, "unread_replies": 6 }, "broadcast": { "omit_users": null, "user_id": "87icc7gj8png9raxzz3t3ym7dy", "channel_id": "", "team_id": "k1bjiqyu37r7mp76zbnju4dzby", "contains_sanitized_data": false, "contains_sensitive_data": false }, "seq": 3 } ``` - name: Users x-displayName: Пользователи description: > Эндпоинты для создания, получения и взаимодействия с пользователями. При использовании конечных точек, требующих идентификатор пользователя, вместо идентификатора пользователя можно использовать строку `me`, чтобы указать, какое действие должно быть выполнено для вошедшего в систему пользователя. - name: Bots x-displayName: Боты description: Эндпоинты для создания, получения и обновления пользователей ботов. - name: Brand x-displayName: Бренд description: Эндпоинты для создания, получения и обновления брендов. - name: Teams x-displayName: Команды description: Эндпоинты для создания, получения и взаимодействия с командами. - name: Channels x-displayName: Каналы description: Эндпоинты для создания, получения и взаимодействия с каналами. - name: Posts x-displayName: Посты description: Эндпоинты для создания, получения и взаимодействия с постами. - name: Threads x-displayName: Обсуждения description: Эндпоинты для получения, управления отслеживанием и состояниями обсуждений. - name: Files x-displayName: Файлы description: Эндпоинты для загрузки и взаимодействия с файлами. - name: Uploads x-displayName: Загрузки description: Эндпоинты для создания и выполнения загрузки файлов. - name: Preferences x-displayName: Настройки description: Эндпоинты для сохранения и изменения настроек пользователя. - name: Status x-displayName: Статус description: Эндпоинты для получения и обновления статусов пользователей. - name: Emoji x-displayName: Эмодзи description: Эндпоинты для создания, получения и взаимодействия с эмодзи. - name: Reactions x-displayName: Реакции description: Конечные токи для создания, получения и удаление реакций с эмодзи. - name: Hashtags x-displayName: Хэштеги description: Эндпоинты для получение хэштегов. - name: Multi search x-displayName: Множественный поиск description: Эндпоинты для множественного поиска. - name: Webhooks x-displayName: Вебхуки description: Эндпоинты для создания, получения и обновления вебхуков. - name: Commands x-displayName: Слэш-команды description: Эндпоинты для создания, получения и обновление слэш-команд. - name: OpenGraph description: Эндпоинты для получения метаданных Open Graph. - name: System x-displayName: Система description: Общие конечные точки для взаимодействия с сервером, такие как конфигурирование и ведение журнала. - name: OAuth description: Эндпоинты для конфигурирования и взаимодействия с Time как OAuth 2.0 сервис провайдера. - name: SAML description: Эндпоинты для конфигурирования и взаимодействия с SAML. - name: LDAP description: Эндпоинты для конфигурирования и взаимодействия с LDAP. - name: Groups x-displayName: Группы description: Эндпоинты, связанные с LDAP группами. - name: Compliance x-displayName: Комплаенс description: | Эндпоинты для создания, получения и скачивания комплаенс отчетов. - name: Cluster x-displayName: Кластер description: > Эндпоинты для конфигурирования и взаимодействия с кластером высокой доступности. - name: ElasticSearch description: Эндпоинты для конфигурирования и взаимодействия с ElasticSearch. - name: Data retention x-displayName: Хранение данных description: Эндпоинты для получения настроек политик хранения данных. - name: Jobs x-displayName: Задачи description: > Эндпоинты, связанные с различными фоновыми заданиями, которые могут запускаться сервером или отдельно серверами заданий. - name: Plugins x-displayName: Плагины description: Эндпоинты, связанные с загрузкой и управлением плагинов. - name: Roles x-displayName: Роли description: Эндпоинты для создания, получения и обновления ролей. - name: Schemes x-displayName: Схемы description: Эндпоинты для создания, получения, обновления и удаления схем. - name: Integration actions x-displayName: Интеграционные действия description: Эндпоинты для интерактивных действий, используемых интеграциями. - name: Shared channels x-displayName: Совместные каналы description: Эндпоинты для получения информации о совместных каналах. - name: Insights x-displayName: Инсайты description: Эндпоинты для получения аналитической информации о командах и пользователях. - name: Terms of service x-displayName: Условия использования description: Эндпоинты для получения и обновления пользовательских условий использования. - name: Imports x-displayName: Импорты description: Эндпоинты, связанные с файлами импорта. - name: Exports x-displayName: Экспорты description: Эндпоинты, связанные с экспортными файлами. - name: confcalls x-displayName: Звонки - name: Cloud x-displayName: Облачные инстансы description: Эндпоинты для управления облачными развертываниями Time. - name: Workflow description: API плагина Workflow - name: Reminder description: API плагина Reminder - name: Plugin-AI x-displayName: AI description: API плагина AI x-tagGroups: - name: Обзор tags: - Введение - Схема - name: Стандартные функции tags: - Аутентификация - Ошибки - Лимитирование запросов - Веб-сокет - Веб-сокет API - name: Эндпоинты tags: - Bots - Brand - Channels - Cloud - Cluster - Commands - Compliance - confcalls - Data retention - ElasticSearch - Emoji - Exports - Files - Groups - Hashtags - Imports - Insights - Integration actions - Jobs - Multi search - LDAP - OAuth - SSO - OpenGraph - Permissions - Plugins - Posts - Preferences - Reactions - Roles - SAML - Schemes - Shared channels - Status - System - Teams - Terms of service - Threads - Uploads - Users - Webhooks - name: Плагины tags: - Workflow - Reminder - Plugin-AI servers: - url: /api/v4 paths: /teams/{team_id}/top/reactions: get: tags: - Insights summary: Получить список лучших реакций для команды. description: | Получить список лучших реакций во всех публичных и приватных каналах (в которых пользователь является участником) для данной команды. ##### Разрешения Должно быть разрешение `view_team` для команды. operationId: GetTopReactionsForTeam parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: time_range in: query description: | Временной диапазон может быть "today", "7_day" или "28_day". - `today`: реакции, опубликованные в текущий день. - `7_day`: реакции, опубликованные за последние 7 дней. - `28_day`: реакции, опубликованные за последние 28 дней. required: true schema: type: string - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: Количество элементов на странице, максимум 200. schema: type: integer default: 60 responses: "200": description: Успешное получение лучших реакций. content: application/json: schema: type: object $ref: "#/components/schemas/TopReactionList" "400": $ref: "#/components/responses/BadRequest" "403": $ref: "#/components/responses/Forbidden" /users/me/top/reactions: get: tags: - Insights summary: Получить список лучших реакций для пользователя. description: | Получить список лучших реакций во всех публичных и приватных каналах (в которых пользователь является участником) для данного пользователя. Если `team_id` не предоставлен, это также будет включать реакции, опубликованные данным пользователем в личных и групповых сообщениях. ##### Разрешения Должен быть выполнен вход как пользователь. operationId: GetTopReactionsForUser parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string - name: time_range in: query description: | Временной диапазон может быть "today", "7_day" или "28_day". - `today`: реакции, опубликованные в текущий день. - `7_day`: реакции, опубликованные за последние 7 дней. - `28_day`: реакции, опубликованные за последние 28 дней. required: true schema: type: string - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: Количество элементов на странице, максимум 200. schema: type: integer default: 60 - name: team_id in: query description: > ID команды ограничит ответ для данной команды и исключит личные и групповые сообщения. ##### Разрешения Должно быть разрешение `view_team` для команды. schema: type: string responses: "200": description: Успешное получение лучших реакций. content: application/json: schema: type: object $ref: "#/components/schemas/TopReactionList" "400": $ref: "#/components/responses/BadRequest" "403": $ref: "#/components/responses/Forbidden" /teams/{team_id}/top/channels: get: tags: - Insights summary: Получить список лучших каналов для команды. description: > Получить список лучших публичных и приватных каналов (в которых пользователь является участником) для данной команды. ##### Разрешения Должно быть разрешение `view_team` для команды. operationId: GetTopChannelsForTeam parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: time_range in: query description: | Временной диапазон может быть "today", "7_day" или "28_day". - `today`: каналы с постами в текущий день. - `7_day`: каналы с постами за последние 7 дней. - `28_day`: каналы с постами за последние 28 дней. required: true schema: type: string - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: Количество элементов на странице, максимум 200. schema: type: integer default: 60 responses: "200": description: Успешное получение лучших каналов. content: application/json: schema: type: object $ref: "#/components/schemas/TopChannelList" "400": $ref: "#/components/responses/BadRequest" "403": $ref: "#/components/responses/Forbidden" /users/me/top/channels: get: tags: - Insights summary: Получить список лучших каналов для пользователя. description: > Получить список лучших публичных и приватных каналов (в которых пользователь является участником) для данного пользователя. ##### Разрешения Должен быть выполнен вход как пользователь. operationId: GetTopChannelsForUser parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string - name: time_range in: query description: | Временной диапазон может быть "today", "7_day" или "28_day". - `today`: каналы с постами в текущий день. - `7_day`: каналы с постами за последние 7 дней. - `28_day`: каналы с постами за последние 28 дней. required: true schema: type: string - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: Количество элементов на странице, максимум 200. schema: type: integer default: 60 - name: team_id in: query description: | ID команды ограничит ответ для данной команды. ##### Разрешения Должно быть разрешение `view_team` для команды. schema: type: string responses: "200": description: Успешное получение лучших реакций. content: application/json: schema: type: object $ref: "#/components/schemas/TopReactionList" "400": $ref: "#/components/responses/BadRequest" "403": $ref: "#/components/responses/Forbidden" /users/signup: post: tags: - Users summary: Создать пользователя description: | Создать нового пользователя в системе по приглашению. operationId: CreateUserSignup parameters: - name: t in: query description: ID токена из приглашения по электронной почте required: true schema: type: string - name: verification_token in: query description: > Токен для проверки номера телефона. Требуется, если включена проверка телефона. required: false schema: type: string requestBody: content: application/json: schema: type: object required: - login - password - phone - first_name - last_name properties: login: type: string password: description: Пароль, используемый для аутентификации по электронной почте. type: string first_name: type: string last_name: type: string phone: type: string description: > Номер телефона в формате E164 с префиксом `+`, https://wikipedia.org/wiki/E.164 position: description: Должность пользователя. type: string image: description: > ID временного файла, загруженного через отдельный HTTP POST эндпоинт /api/v4/files/{source}/{source_id} type: string description: Объект формы регистрации пользователя required: true responses: "201": description: Регистрация пользователя успешна content: application/json: schema: $ref: "#/components/schemas/User" "400": $ref: "#/components/responses/BadRequest" "403": $ref: "#/components/responses/Forbidden" /users/login: post: tags: - Users summary: Вход на сервер Time description: | ##### Разрешения Разрешения не требуются operationId: Login requestBody: content: application/json: schema: type: object properties: id: type: string login_id: type: string token: type: string device_id: type: string ldap_only: type: boolean password: description: Пароль, используемый для аутентификации по электронной почте. type: string description: Объект аутентификации пользователя required: true responses: "201": description: Вход пользователя успешен content: application/json: schema: $ref: "#/components/schemas/User" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /users/login/cws: post: tags: - Users summary: Автовход на сервер Time с использованием токена CWS description: > CWS означает Customer Web Server, который является облачным сервисом, используемым для управления облачными инстансами. ##### Разрешения Требуется облачная лицензия operationId: LoginByCwsToken requestBody: content: application/json: schema: type: object properties: login_id: type: string cws_token: type: string description: Объект аутентификации пользователя required: true responses: "302": description: > Вход успешен, будет перенаправлено на страницу входа для выполнения автологина "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/logout: post: tags: - Users summary: Выход с сервера Time description: | ##### Разрешения Требуется активная сессия operationId: Logout responses: "201": description: Выход пользователя успешен content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "403": $ref: "#/components/responses/Forbidden" /users: post: tags: - Users summary: Создать пользователя description: > Создать нового пользователя в системе. Пароль требуется для входа по электронной почте. Для других типов аутентификации, таких как LDAP или SAML, требуются поля auth_data и auth_service. ##### Разрешения Разрешения не требуются для создания учетных записей по электронной почте/имени пользователя на открытом сервере. Токен аутентификации требуется для других типов аутентификации, таких как LDAP или SAML. operationId: CreateUser parameters: - name: t in: query description: ID токена из приглашения по электронной почте required: false schema: type: string - name: iid in: query description: ID токена из ссылки приглашения required: false schema: type: string requestBody: content: application/json: schema: type: object required: - email - username properties: email: type: string username: type: string first_name: type: string last_name: type: string nickname: type: string auth_data: description: > Специфичные для сервиса данные аутентификации, такие как адрес электронной почты. type: string auth_service: description: | Сервис аутентификации, один из "email", "ldap", "saml" и "". type: string password: description: Пароль, используемый для аутентификации по электронной почте. type: string locale: type: string props: type: object notify_props: $ref: "#/components/schemas/UserNotifyProps" description: Объект пользователя для создания required: true responses: "201": description: Создание пользователя успешно content: application/json: schema: $ref: "#/components/schemas/User" "400": $ref: "#/components/responses/BadRequest" "403": $ref: "#/components/responses/Forbidden" get: tags: - Users summary: Получить пользователей description: > Получить страницу со списком пользователей. На основе параметров строки запроса выберите пользователей из команды, канала или выберите пользователей, не входящих в конкретный канал. Начиная с версии сервера 4.0, доступна базовая сортировка с использованием параметра запроса `sort`. В настоящее время сортировка поддерживается только при выборе пользователей в команде. ##### Разрешения Требуется активная сессия и (если указано) членство в канале или команде, из которых производится выборка. Должен иметь роль `system_admin`, чтобы вызвать маршрут без параметров: in_team, not_in_team, in_channel, not_in_channel, in_group, not_in_group, without_team. operationId: GetUsers parameters: - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: > Количество пользователей на странице. Максимальное ограничение - 200 пользователей на страницу. schema: type: integer default: 60 - name: in_team in: query description: ID команды для получения пользователей. schema: type: string - name: not_in_team in: query description: > ID команды для исключения пользователей. Не должно использоваться с параметром запроса "in_team". schema: type: string - name: in_channel in: query description: ID канала для получения пользователей. schema: type: string - name: not_in_channel in: query description: > ID канала для исключения пользователей. Должно использоваться с параметром запроса "in_channel". schema: type: string - name: in_group in: query description: > ID группы для получения пользователей. Должен иметь разрешение `manage_system`. schema: type: string - name: group_constrained in: query description: > При использовании с `not_in_channel` или `not_in_team` возвращает только пользователей, которым разрешено присоединяться к каналу или команде на основе их ограничений группы. schema: type: boolean - name: without_team in: query description: > Указывает, следует ли перечислять пользователей, которые не входят в какую-либо команду. Этот параметр имеет приоритет над `in_team`, `in_channel` и `not_in_channel`. schema: type: boolean - name: active in: query description: > Указывает, следует ли перечислять только активных пользователей. Этот параметр не может использоваться вместе с параметром `inactive`. schema: type: boolean - name: inactive in: query description: > Указывает, следует ли перечислять только деактивированных пользователей. Этот параметр не может использоваться вместе с параметром `active`. schema: type: boolean - name: role in: query description: Возвращает пользователей, имеющих эту роль. schema: type: string - name: sort in: query description: > Сортировка доступна только в сочетании с определенными параметрами ниже. Параметр пагинации также всегда доступен. ##### `in_team` Может быть "", "last_activity_at" или "create_at". Если оставить пустым, сортировка выполняется по имени пользователя. __Минимальная версия сервера__: 4.0 ##### `in_channel` Может быть "", "status". Если оставить пустым, сортировка выполняется по имени пользователя. `status` будет сортировать по текущему статусу пользователя (В сети, Нет на месте, Не беспокоить, Оффлайн), затем по имени пользователя. __Минимальная версия сервера__: 4.7 schema: type: string - name: roles in: query description: > Строка, разделенная запятыми, используется для фильтрации пользователей на основе любой из указанных системных ролей Пример: `?roles=system_admin,system_user` вернет пользователей, которые являются либо системными администраторами, либо системными пользователями __Минимальная версия сервера__: 5.26 schema: type: string - name: channel_roles in: query description: > Строка, разделенная запятыми, используется для фильтрации пользователей на основе любой из указанных ролей канала, может использоваться только в сочетании с `in_channel` Пример: `?in_channel=4eb6axxw7fg3je5iyasnfudc5y&channel_roles=channel_user` вернет пользователей, которые являются только пользователями канала, а не администраторами или гостями __Минимальная версия сервера__: 5.26 schema: type: string - name: team_roles in: query description: > Строка, разделенная запятыми, используется для фильтрации пользователей на основе любой из указанных ролей команды, может использоваться только в сочетании с `in_team` Пример: `?in_team=4eb6axxw7fg3je5iyasnfudc5y&team_roles=team_user` вернет пользователей, которые являются только пользователями команды, а не администраторами или гостями __Минимальная версия сервера__: 5.26 schema: type: string responses: "200": description: Успешное получение страницы пользователей content: application/json: schema: type: array items: $ref: "#/components/schemas/User" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" delete: tags: - Users summary: Полное удаление всех пользователей description: > Полностью удаляет всех пользователей и всю связанную с ними информацию, включая сообщения. __Минимальная версия сервера__: 5.26.0 __Только локальный режим__: Этот эндпоинт доступен только в локальном режиме. operationId: PermanentDeleteAllUsers responses: "200": description: Запрос на удаление выполнен успешно /users/ids: post: tags: - Users summary: Получить пользователей по идентификаторам description: | Получить список пользователей на основе предоставленного списка идентификаторов пользователей. ##### Разрешения Требуется активная сессия, но никаких других разрешений не требуется. operationId: GetUsersByIds parameters: - name: since in: query description: > Возвращать только пользователей, которые были изменены с указанного времени Unix (в миллисекундах). __Минимальная версия сервера__: 5.14 schema: type: integer format: int64 requestBody: content: application/json: schema: type: array items: type: string description: Список идентификаторов пользователей required: true responses: "200": description: Успешное получение списка пользователей content: application/json: schema: type: array items: $ref: "#/components/schemas/User" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" /users/group_channels: post: tags: - Users summary: Получить пользователей по идентификаторам групповых каналов description: > Получить объект, содержащий ключ для каждого идентификатора группового канала в запросе и его значение в виде списка пользователей, являющихся участниками этого группового канала. Пользователь должен быть участником групп, указанных в запросе, иначе они будут исключены из ответа. ##### Разрешения Требуется активная сессия, но никаких других разрешений не требуется. __Минимальная версия сервера__: 5.14 operationId: GetUsersByGroupChannelIds requestBody: content: application/json: schema: type: array items: type: string description: Список идентификаторов групповых каналов required: true responses: "200": description: Успешное получение списка пользователей content: application/json: schema: type: object properties: : type: array items: $ref: "#/components/schemas/User" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" /users/usernames: post: tags: - Users summary: Получить пользователей по именам пользователей description: | Получить список пользователей на основе предоставленного списка имен пользователей. ##### Разрешения Требуется активная сессия, но никаких других разрешений не требуется. operationId: GetUsersByUsernames requestBody: content: application/json: schema: type: array items: type: string description: Список имен пользователей required: true responses: "200": description: Успешное получение списка пользователей content: application/json: schema: type: array items: $ref: "#/components/schemas/User" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" /users/externalids: post: tags: - Users summary: Получить пользователей по внешним идентификаторам description: | Получить список пользователей на основе предоставленного списка внешних идентификаторов. ##### Разрешения Требуется активная сессия, но никаких других разрешений не требуется. operationId: GetUsersByExternalIds requestBody: content: application/json: schema: type: array items: type: string description: Список имен пользователей required: true parameters: - name: include_deleted in: query description: Следует ли включать удаленные учетные записи в ответ schema: type: boolean responses: "200": description: Успешное получение списка пользователей content: application/json: schema: type: array items: $ref: "#/components/schemas/User" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" /users/emails: post: tags: - Users summary: Получить пользователей по адресам электронной почты description: | Получить список пользователей на основе предоставленного списка адресов электронной почты. ##### Разрешения Должен иметь разрешение `sysconsole_read_user_management_users`. operationId: GetUsersByEmails requestBody: content: application/json: schema: type: array items: type: string description: Список адресов электронной почты required: true responses: "200": description: Успешное получение списка пользователей content: application/json: schema: type: array items: $ref: "#/components/schemas/User" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" /users/search: post: tags: - Users summary: Поиск пользователей description: > Получить список пользователей на основе критериев поиска, указанных в теле запроса. Поиск обычно выполняется по имени пользователя, полному имени, псевдониму и электронной почте, если сервер не настроен иначе. ##### Разрешения Требуется активная сессия и разрешения `read_channel` и/или `view_team` для любых каналов или команд, указанных в теле запроса. operationId: SearchUsers requestBody: content: application/json: schema: type: object required: - term properties: term: description: > Термин для сопоставления с именем пользователя, полным именем, псевдонимом и электронной почтой type: string team_id: description: Если указано, искать пользователей только в этой команде type: string not_in_team_id: description: Если указано, искать пользователей только не в этой команде type: string in_channel_id: description: Если указано, искать пользователей только в этом канале type: string not_in_channel_id: description: > Если указано, искать пользователей только не в этом канале. Необходимо указать `team_id` при использовании этой опции type: string in_group_id: description: > Если указано, искать пользователей только в этой группе. Если запрос от администратора - будут возвращены все пользователи. Если запрос от обычного пользователя - ответ будет содержать только пользователей, которые находятся в той же команде, что и автор запроса. type: string group_constrained: description: > При использовании с `not_in_channel_id` или `not_in_team_id`, возвращает только пользователей, которым разрешено присоединяться к каналу или команде на основе их ограничений группы. type: boolean allow_inactive: description: > Если `true`, включать деактивированных пользователей в результаты type: boolean without_team: type: boolean description: > Установите это значение в `true`, если хотите искать пользователей, которые не находятся в команде. Эта опция имеет приоритет над `team_id`, `in_channel_id` и `not_in_channel_id`. limit: description: > Максимальное количество пользователей, возвращаемых в результатах __Доступно с версии сервера 5.6. По умолчанию `100`, если не указано или на более ранней версии сервера.__ type: integer default: 100 with_profiles: type: boolean default: false description: > Определяет, будут ли возвращены профили найденных пользователей. description: Критерии поиска required: true responses: "200": description: Успешное получение списка пользователей content: application/json: schema: type: array items: $ref: "#/components/schemas/User" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/autocomplete: get: tags: - Users summary: Автозаполнение пользователей description: > Получить список пользователей для автозаполнения на основе предоставленного термина поиска. Укажите комбинацию `in_team` и `in_channel`, чтобы дополнительно отфильтровать результаты. ##### Разрешения Требуется активная сессия и разрешения `view_team` и `read_channel` для любых команд или каналов, используемых для дальнейшей фильтрации результатов. operationId: AutocompleteUsers parameters: - name: in_team in: query description: ID команды schema: type: string - name: in_channel in: query description: ID канала schema: type: string - name: name in: query description: Имя пользователя, псевдоним, имя или фамилия required: true schema: type: string - name: allow_inactive in: query description: > Если установлено в true, результат будет содержать активированных и деактивированных пользователей, в противном случае только активированных пользователей required: false schema: type: boolean default: false - name: role in: query description: фильтровать пользователей по роли schema: type: string - name: is_bot in: query description: > Если установлено в true, результат будет содержать только ботов. Если установлено в false, результат будет содержать только пользователей. Если не установлено, результат будет содержать пользователей и ботов required: false schema: type: boolean - name: limit in: query description: > Максимальное количество пользователей, возвращаемых в каждом подрезультате __Доступно с версии сервера 5.6. По умолчанию `100`, если не указано или на более ранней версии сервера.__ schema: type: integer default: 100 - name: boost in: query description: > Если установлено в true, пользователи, с которыми общался пользователь, размещаются в начале [0; boost_limit) ответа поиска, а другие пользователи размещаются в [boost_limit; search_limit). Сейчас boost_limit == search_limit, мы пытаемся повысить всех пользователей, если можем. __Минимальная версия сервера__: 6.56 required: false schema: type: boolean default: false - name: with_profiles in: query description: | Определяет, будут ли возвращены профили найденных пользователей. required: false schema: type: boolean default: false responses: "200": description: Успешное автозаполнение пользователей (с усилением) content: application/json: schema: $ref: "#/components/schemas/UserAutocomplete" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/known: get: tags: - Users summary: Получить идентификаторы известных пользователей description: > Получите список идентификаторов пользователей, имеющих прямые отношения с пользователем. Это означает любого пользователя, который делится любым каналом, включая прямые и групповые каналы. ##### Разрешения Должен быть аутентифицирован. __Минимальная версия сервера__: 5.23 operationId: GetKnownUsers responses: "200": description: Успешное получение идентификаторов известных пользователей content: application/json: schema: $ref: "#/components/schemas/UsersStats" "401": $ref: "#/components/responses/Unauthorized" /users/stats: get: tags: - Users summary: Получить общее количество пользователей в системе description: | Получить общее количество пользователей в системе. ##### Разрешения Должен быть аутентифицирован. operationId: GetTotalUsersStats responses: "200": description: Успешное получение статистики пользователей content: application/json: schema: $ref: "#/components/schemas/UsersStats" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /users/stats/filtered: get: tags: - Users summary: > Получить общее количество пользователей в системе, соответствующих указанным фильтрам description: > Получить количество пользователей в системе, соответствующих указанным фильтрам. __Минимальная версия сервера__: 5.26 ##### Разрешения Должно быть разрешение `manage_system`. operationId: GetTotalUsersStatsFiltered parameters: - name: in_team in: query description: Идентификатор команды для получения статистики пользователей. schema: type: string - name: in_channel in: query description: Идентификатор канала для получения статистики пользователей. schema: type: string - name: include_deleted in: query description: Включать ли удаленные аккаунты в подсчет. schema: type: boolean - name: include_bots in: query description: Включать ли аккаунты ботов в подсчет. schema: type: boolean - name: roles in: query description: > Строка, разделенная запятыми, используемая для фильтрации пользователей на основе любых из указанных системных ролей. Пример: `?roles=system_admin,system_user` включит пользователей, которые являются либо системными администраторами, либо системными пользователями. schema: type: string - name: channel_roles in: query description: > Строка, разделенная запятыми, используемая для фильтрации пользователей на основе любых из указанных ролей канала, может использоваться только вместе с `in_channel`. Пример: `?in_channel=4eb6axxw7fg3je5iyasnfudc5y&channel_roles=channel_user` включит пользователей, которые являются только пользователями канала, а не администраторами или гостями. schema: type: string - name: team_roles in: query description: > Строка, разделенная запятыми, используемая для фильтрации пользователей на основе любых из указанных ролей команды, может использоваться только вместе с `in_team`. Пример: `?in_team=4eb6axxw7fg3je5iyasnfudc5y&team_roles=team_user` включит пользователей, которые являются только пользователями команды, а не администраторами или гостями. schema: type: string responses: "200": description: Успешное получение статистики пользователей с фильтрацией content: application/json: schema: $ref: "#/components/schemas/UsersStats" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /users/{user_id}: get: tags: - Users summary: Получить пользователя description: | Получить объект пользователя. Конфиденциальная информация будет удалена. ##### Разрешения Требуется активная сессия, но не требуется других разрешений. operationId: GetUser parameters: - name: user_id in: path description: > GUID пользователя. Это также может быть "me", что указывает на текущего пользователя. required: true schema: type: string responses: "200": description: Успешное получение пользователя content: application/json: schema: $ref: "#/components/schemas/User" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" put: tags: - Users summary: Обновить пользователя description: > Обновите пользователя, предоставив объект пользователя. Поля, которые могут быть обновлены, определены в теле запроса, все другие предоставленные поля будут проигнорированы. Любые поля, не включенные в тело запроса, будут установлены в null или возвращены к значениям по умолчанию. ##### Разрешения Должен быть залогинен как пользователь, который обновляется, или иметь разрешение `edit_other_users`. operationId: UpdateUser parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string requestBody: content: application/json: schema: type: object required: - id - email - username properties: id: type: string email: type: string username: type: string first_name: type: string last_name: type: string nickname: type: string locale: type: string position: type: string timezone: $ref: "#/components/schemas/Timezone" props: type: object notify_props: $ref: "#/components/schemas/UserNotifyProps" description: Объект пользователя, который нужно обновить required: true responses: "200": description: Успешное обновление пользователя content: application/json: schema: $ref: "#/components/schemas/User" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" delete: tags: - Users summary: Деактивировать или навсегда удалить учетную запись пользователя. description: > Деактивирует пользователя и отзывает все его сессии, архивируя его объект пользователя. При необходимости вы можете использовать параметр запроса `permanent=true`, чтобы **навсегда удалить** учетную запись пользователя по причинам соответствия. Чтобы включить постоянное удаление, параметр конфигурации `ServiceSettings.EnableAPIUserDeletion` должен быть установлен в `true`. ##### Разрешения Должен быть залогинен как пользователь, который деактивируется, или иметь разрешение `edit_other_users`. operationId: DeleteUser parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string - name: permanent in: query description: Установите в `true`, чтобы навсегда удалить пользователя. required: false schema: type: boolean default: false responses: "200": description: Успешная деактивация пользователя content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /users/{user_id}/patch: put: tags: - Users summary: Частичное обновление пользователя description: > Частично обновите пользователя, предоставив только поля, которые вы хотите обновить. Пропущенные поля не будут обновлены. Поля, которые могут быть обновлены, определены в теле запроса, все другие предоставленные поля будут проигнорированы. ##### Разрешения Должен быть залогинен как пользователь, который обновляется, или иметь разрешение `edit_other_users`. operationId: PatchUser parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string requestBody: content: application/json: schema: type: object properties: email: type: string username: type: string phone: type: string description: > Номер телефона в формате E164 с префиксом `+`, https://wikipedia.org/wiki/E.164 first_name: type: string last_name: type: string nickname: type: string locale: type: string position: type: string props: type: object notify_props: $ref: "#/components/schemas/UserNotifyProps" description: Объект пользователя, который нужно обновить required: true responses: "200": description: Успешное частичное обновление пользователя content: application/json: schema: $ref: "#/components/schemas/User" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/{user_id}/roles: put: tags: - Users summary: Обновить роли пользователя description: > Обновите системные роли пользователя. Допустимые роли пользователя: `system_user`, `system_user system_admin`, `system_guest`, `system_restricted_guest` или `system_user` с другими пользовательскими системными ролями. Перезаписывает любые ранее назначенные системные роли. ##### Разрешения Должен иметь разрешение `manage_roles`, чтобы установить пользователя или системного администратора. Должен иметь разрешение `promote_guest`, чтобы повысить гостя до пользователя или повысить ограниченного гостя до гостя. Должен иметь разрешение `demote_to_guest`, чтобы понизить пользователя до гостя или ограниченного гостя, или понизить до ограниченного гостя. operationId: UpdateUserRoles parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string requestBody: content: application/json: schema: type: object required: - roles properties: roles: type: string description: Системные роли, разделенные пробелами, для назначения пользователю required: true responses: "200": description: Успешное обновление ролей пользователя content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/{user_id}/active: put: tags: - Users summary: Обновить активный статус пользователя description: > Обновите активный или неактивный статус пользователя. __С версии сервера 4.6 пользователи, использующие провайдера SSO для входа, могут быть активированы или деактивированы с помощью этой конечной точки. Однако, если их статус активации в Time не отражает их статус в провайдере SSO, следующая синхронизация или вход этого пользователя сбросит статус активации на статус их учетной записи в провайдере SSO. Версии сервера 4.5 и ранее не позволяют активацию или деактивацию пользователей SSO с этой конечной точки.__ ##### Разрешения Пользователь может деактивировать себя. Пользователь с разрешением `manage_system` может активировать или деактивировать пользователя. operationId: UpdateUserActive parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string requestBody: content: application/json: schema: type: object required: - active properties: active: type: boolean description: Используйте `true`, чтобы установить пользователя активным, `false` для неактивного required: true responses: "200": description: Успешное обновление активного статуса пользователя content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/{user_id}/image: get: tags: - Users summary: Получить изображение профиля пользователя description: > Получить изображение профиля пользователя на основе параметра строки user_id. ##### Разрешения Должен быть залогинен. operationId: GetProfileImage parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string - name: _ in: query description: > Не используется сервером. Клиенты могут передать время последнего обновления изображения пользователя, чтобы потенциально воспользоваться кэшированием required: false schema: type: integer format: int64 responses: "200": description: Изображение профиля пользователя "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" post: tags: - Users summary: Установить изображение профиля пользователя description: > Установите изображение профиля пользователя на основе параметра строки user_id. ##### Разрешения Должен быть залогинен как пользователь, который обновляется, или иметь разрешение `edit_other_users`. operationId: SetProfileImage parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string requestBody: content: multipart/form-data: schema: type: object properties: image: description: > Изображение для загрузки в форматах bmp, png, jpg, jpeg, webp. type: string format: binary required: - image responses: "200": description: Успешная установка изображения профиля content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" delete: tags: - Users summary: Удалить изображение профиля пользователя description: > Удалите изображение профиля пользователя и сбросьте его на изображение по умолчанию на основе параметра строки user_id. ##### Разрешения Должен быть залогинен как пользователь, который обновляется, или иметь разрешение `edit_other_users`. __Минимальная версия сервера__: 5.5 operationId: SetDefaultProfileImage parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string responses: "200": description: Успешный сброс изображения профиля content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" /users/{user_id}/image/large: get: tags: - Users summary: Получить большое изображение профиля пользователя description: > Получить большое изображение профиля пользователя на основе параметра строки user_id. ##### Разрешения Должен быть залогинен. operationId: GetProfileImageBySize parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string - name: _ in: query description: > Не используется сервером. Клиенты могут передать время последнего обновления изображения пользователя, чтобы потенциально воспользоваться кэшированием required: false schema: type: integer format: int64 responses: "200": description: Большое изображение профиля пользователя "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" /users/{user_id}/image/default: get: tags: - Users summary: Вернуть изображение профиля пользователя по умолчанию (сгенерированное) description: > Возвращает изображение профиля пользователя по умолчанию (сгенерированное) на основе параметра строки user_id. ##### Разрешения Должен быть залогинен. __Минимальная версия сервера__: 5.5 operationId: GetDefaultProfileImage parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string responses: "200": description: Изображение профиля по умолчанию "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" /users/username/{username}: get: tags: - Users summary: Получить пользователя по имени пользователя description: > Получите объект пользователя, предоставив имя пользователя. Конфиденциальная информация будет удалена. ##### Разрешения Требуется активная сессия, но не требуется других разрешений. operationId: GetUserByUsername parameters: - name: username in: path description: Имя пользователя required: true schema: type: string responses: "200": description: Успешное получение пользователя content: application/json: schema: $ref: "#/components/schemas/User" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" /users/{user_id}/profile: get: tags: - Users summary: Получить профиль пользователя description: > Получите профиль пользователя на основе параметра строки user_id. ##### Разрешения Требуется активная сессия, но не требуется других разрешений. operationId: GetUserProfile parameters: - name: user_id in: path description: > GUID пользователя. Это также может быть "me", что указывает на текущего пользователя. required: true schema: type: string responses: "200": description: Успешное получение профиля пользователя content: application/json: schema: $ref: "#/components/schemas/UserProfile" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" patch: tags: - Users summary: Частичное обновление профиля пользователя description: > Частично обновите профиль пользователя, предоставив только поля, которые вы хотите обновить. Пропущенные поля не будут обновлены. Поля, которые могут быть обновлены, определены в теле запроса, все другие предоставленные поля будут проигнорированы. ##### Разрешения Должен быть залогинен как пользователь, который обновляется, или иметь разрешение `update_user_profiles`. operationId: PatchUserProfile parameters: - name: user_id in: path description: > GUID пользователя. Это также может быть "me", что указывает на текущего пользователя. required: true schema: type: string requestBody: content: application/json: schema: type: object properties: phone: type: string description: > Номер телефона в формате E164 с префиксом `+`, https://wikipedia.org/wiki/E.164 is_public_phone: type: boolean description: Это поле определяет, нужно ли показывать `phone` другим пользователям. additional_contact_name: type: string additional_contact: type: string hide_additional_contact: type: boolean description: > Это поле определяет, нужно ли показывать `additional_contact` другим пользователям. schedule: type: string hide_schedule: type: boolean description: > Это поле определяет, нужно ли показывать `schedule` другим пользователям. work_place: type: string work_scheme: type: string department: type: string position: type: string description: Содержит описание из нового профиля. birthday: type: string description: > День рождения в формате RFC3339, https://www.rfc-editor.org/rfc/rfc3339. profile_url: type: string description: | Ссылка на профиль на другой платформе. responses: "200": description: Успешное частичное обновление профиля пользователя content: application/json: schema: $ref: "#/components/schemas/UserProfile" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" put: tags: - Users summary: Обновить профиль пользователя description: > Обновите весь профиль указанного пользователя. Запрос должен включать все необходимые поля, так как пропущенные поля будут сброшены до значений по умолчанию. ##### Разрешения Должен быть залогинен как пользователь, который обновляется, или иметь разрешение `edit_other_users`. Если обновляемый пользователь является системным администратором, запрашивающий пользователь также должен быть системным администратором. operationId: UpdateUserProfile parameters: - name: user_id in: path description: > GUID пользователя. Это также может быть "me", что указывает на текущего пользователя. required: true schema: type: string requestBody: content: application/json: schema: $ref: "#/components/schemas/UserProfile" responses: "200": description: Успешное обновление профиля пользователя content: application/json: schema: $ref: "#/components/schemas/UserProfile" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /users/password/reset: post: tags: - Users summary: Сброс пароля description: > Обновите пароль пользователя, используя одноразовый, ограниченный по времени код восстановления, связанный с учетной записью пользователя. Работает только для пользователей, не использующих SSO. ##### Разрешения Разрешения не требуются. operationId: ResetPassword requestBody: content: application/json: schema: type: object required: - code - new_password properties: code: description: Код восстановления type: string new_password: description: Новый пароль для пользователя type: string required: true responses: "200": description: Успешное обновление пароля пользователя content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/{user_id}/mfa: put: tags: - Users summary: Обновить MFA пользователя description: > Активирует многофакторную аутентификацию для пользователя, если `activate` равно true и предоставлен действительный `code`. Если activate равно false, то `code` не требуется, и многофакторная аутентификация отключается для пользователя. ##### Разрешения Должен быть залогинен как пользователь, который обновляется, или иметь разрешение `edit_other_users`. operationId: UpdateUserMfa parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string requestBody: content: application/json: schema: type: object required: - activate properties: activate: description: Используйте `true` для активации, `false` для деактивации type: boolean code: description: > Код, сгенерированный вашим клиентом MFA. Требуется, если `activate` равно true type: string required: true responses: "200": description: Успешное обновление MFA пользователя content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /users/{user_id}/mfa/generate: post: tags: - Users summary: Генерация секрета MFA description: > Генерирует секрет многофакторной аутентификации для пользователя и возвращает его в виде строки и в виде изображения QR-кода, закодированного в base64. ##### Разрешения Должен быть залогинен как пользователь или иметь разрешение `edit_other_users`. operationId: GenerateMfaSecret parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string responses: "200": description: Успешная генерация секрета MFA content: application/json: schema: type: object properties: secret: description: Секрет MFA в виде строки type: string qr_code: description: Изображение QR-кода, закодированное в base64 type: string "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" /users/{user_id}/demote: post: tags: - Users summary: Понизить пользователя до гостя deprecated: true description: > Устарело в пользу `PUT /users/{user_id}/roles`. Преобразуйте обычного пользователя в гостя или ограниченного гостя. Это преобразует пользователя в гостя для всей системы, сохраняя его существующие членства в командах и каналах, и удаляет ограниченного гостя из всех команд и каналов. __Минимальная версия сервера__: 5.16 ##### Разрешения Должен быть залогинен как пользователь или иметь разрешение `demote_to_guest`. operationId: DemoteUserToGuest parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string requestBody: content: application/json: schema: type: object required: - guest_role properties: guest_role: description: Роль гостя. Либо `system_guest`, либо `system_restricted_guest` type: string required: true responses: "200": description: Пользователь успешно понижен content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" /users/{user_id}/promote: post: tags: - Users summary: Повысить гостя до пользователя deprecated: true description: > Устарело в пользу `PUT /users/{user_id}/roles`. Преобразуйте гостя в обычного пользователя. Это преобразует гостя в пользователя для всей системы, сохраняя любые членства в командах и каналах и автоматически присоединяя их к каналам по умолчанию. __Минимальная версия сервера__: 5.16 ##### Разрешения Должен быть залогинен как пользователь или иметь разрешение `promote_guest`. operationId: PromoteGuestToUser parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string responses: "200": description: Гость успешно повышен content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" /users/{user_id}/convert_to_bot: post: tags: - Боты - Users summary: Преобразовать пользователя в бота description: | Преобразуйте пользователя в бота. __Минимальная версия сервера__: 5.26 ##### Разрешения Должно быть разрешение `manage_system`. operationId: ConvertUserToBot parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string responses: "200": description: Пользователь успешно преобразован content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /users/mfa: post: tags: - Users summary: Проверка MFA description: > Проверьте, активирована ли многофакторная аутентификация на учетной записи пользователя, предоставив идентификатор входа. Используется для проверки, нужно ли предоставлять код MFA при входе. ##### Разрешения Разрешения не требуются. operationId: CheckUserMfa requestBody: content: application/json: schema: type: object required: - login_id properties: login_id: description: Электронная почта или имя пользователя, используемое для входа type: string required: true responses: "200": description: Успешная проверка MFA content: application/json: schema: type: object properties: mfa_required: description: > Значение будет `true`, если MFA активна, `false` в противном случае type: boolean "400": $ref: "#/components/responses/BadRequest" /users/{user_id}/password: put: tags: - Users summary: Обновить пароль пользователя description: > Обновите пароль пользователя. Новый пароль должен соответствовать политике паролей, установленной конфигурацией сервера. Текущий пароль требуется, если вы обновляете свой собственный пароль. В случае изменения пароля другого пользователя, служба авторизации целевого пользователя будет принудительно установлена на электронную почту. ##### Разрешения Должен быть залогинен как пользователь, для которого изменяется пароль, или иметь разрешение `manage_system`. operationId: UpdateUserPassword parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string requestBody: content: application/json: schema: type: object required: - new_password properties: current_password: description: Текущий пароль пользователя type: string new_password: description: Новый пароль для пользователя type: string required: true responses: "200": description: Успешное обновление пароля пользователя content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/password/reset/send: post: tags: - Users summary: Отправить письмо для сброса пароля description: > Отправьте электронное письмо, содержащее ссылку для сброса пароля пользователя. Ссылка будет содержать одноразовый, ограниченный по времени код восстановления, связанный с учетной записью пользователя. Работает только для пользователей, не использующих SSO. ##### Разрешения Разрешения не требуются. operationId: SendPasswordResetEmail requestBody: content: application/json: schema: type: object required: - email properties: email: description: Электронная почта пользователя type: string required: true responses: "200": description: Письмо отправлено, если учетная запись существует content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/email/{email}: get: tags: - Users summary: Получить пользователя по электронной почте description: > Получите объект пользователя, предоставив электронную почту пользователя. Конфиденциальная информация будет удалена. ##### Разрешения Требуется активная сессия и возможность текущей сессии просматривать электронную почту другого пользователя на основе настроек конфиденциальности сервера. operationId: GetUserByEmail parameters: - name: email in: path description: Электронная почта пользователя required: true schema: type: string responses: "200": description: Успешное получение пользователя content: application/json: schema: $ref: "#/components/schemas/User" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /users/{user_id}/sessions: get: tags: - Users summary: Получить сессии пользователя description: > Получите список сессий, предоставив GUID пользователя. Конфиденциальная информация будет удалена. ##### Разрешения Должен быть залогинен как пользователь, который обновляется, или иметь разрешение `edit_other_users`. operationId: GetSessions parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string responses: "200": description: Успешное получение сессий пользователя content: application/json: schema: type: array items: $ref: "#/components/schemas/Session" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/{user_id}/sessions/revoke: post: tags: - Users summary: Отозвать сессию пользователя description: > Отзывает сессию пользователя, предоставив строки идентификатора пользователя и идентификатора сессии. ##### Разрешения Должен быть залогинен как пользователь, который обновляется, или иметь разрешение `edit_other_users`. operationId: RevokeSession parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string requestBody: content: application/json: schema: type: object required: - session_id properties: session_id: description: GUID сессии для отзыва. type: string required: true responses: "200": description: Успешный отзыв сессии пользователя content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/{user_id}/sessions/revoke/all: post: tags: - Users summary: Отозвать все активные сессии пользователя description: > Отзывает все сессии пользователя, предоставив строки идентификатора пользователя и идентификатора сессии. ##### Разрешения Должен быть залогинен как пользователь, который обновляется, или иметь разрешение `edit_other_users`. __Минимальная версия сервера__: 4.4 operationId: RevokeAllSessions parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string responses: "200": description: Успешный отзыв сессий пользователя content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/sessions/device: put: tags: - Users summary: Привязать мобильное устройство description: > Привяжите идентификатор мобильного устройства к текущей сессии. Это позволит включить push-уведомления для пользователя, если они настроены сервером. Одна сессия может настроить либо веб push-уведомления через /users/sessions/pwa, либо уведомления мобильного приложения через /users/sessions/device. Последний вызов переопределит предыдущий. ##### Разрешения Должен быть аутентифицирован. operationId: AttachDeviceId requestBody: content: application/json: schema: type: object required: - device_id properties: device_id: description: > Идентификатор мобильного устройства. Для Android добавьте префикс `android:`, для Apple - `apple:` type: string required: true responses: "200": description: Успешная привязка идентификатора устройства content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" /users/sessions/pwa: put: tags: - Users summary: Подписать PWA приложение на веб push-уведомления description: > Подписать PWA приложение на веб push-уведомления. Одна сессия может настроить либо веб push-уведомления через /users/sessions/pwa, либо уведомления мобильного приложения через /users/sessions/device. Последний вызов переопределит предыдущий. ##### Разрешения Должен быть аутентифицирован. operationId: SubscribeWebPush requestBody: content: application/json: schema: type: object description: Обычно является результатом `JSON.stringify(PushSubscription)` required: - endpoint - keys properties: endpoint: type: string description: URL конечной точки push-уведомлений keys: type: object required: - auth - p256dh properties: auth: type: string description: Секрет аутентификации p256dh: type: string description: Открытый ключ P-256 в режиме DH required: true responses: "200": description: Успешная подписка PWA content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" /users/{user_id}/audits: get: tags: - Users summary: Получить аудиты пользователя description: > Получите список аудитов, предоставив GUID пользователя. ##### Разрешения Должен быть залогинен как пользователь или иметь разрешение `edit_other_users`. operationId: GetUserAudits parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string responses: "200": description: Успешное получение аудитов пользователя content: application/json: schema: type: array items: $ref: "#/components/schemas/Audit" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/{user_id}/email/verify/member: post: tags: - Users summary: Подтвердить электронную почту пользователя по ID description: | Подтвердите электронную почту, используемую пользователем, без токена. __Минимальная версия сервера__: 5.24 ##### Разрешения Должно быть разрешение `manage_system`. operationId: VerifyUserEmailWithoutToken parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string responses: "200": description: Успешное подтверждение электронной почты пользователя content: application/json: schema: $ref: "#/components/schemas/User" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" /users/email/verify: post: tags: - Users summary: Подтвердить электронную почту пользователя description: > Подтвердите электронную почту, используемую пользователем для регистрации учетной записи. ##### Разрешения Разрешения не требуются. operationId: VerifyUserEmail requestBody: content: application/json: schema: type: object required: - token properties: token: description: Токен, предоставленный для подтверждения электронной почты type: string required: true responses: "200": description: Успешное подтверждение электронной почты пользователя content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" /users/email/verify/send: post: tags: - Users summary: Отправить письмо для подтверждения description: > Отправьте электронное письмо с ссылкой для подтверждения пользователю, у которого электронная почта совпадает с указанной в теле запроса. Эта конечная точка вернет успех, даже если электронная почта не совпадает ни с одним пользователем в системе. ##### Разрешения Разрешения не требуются. operationId: SendVerificationEmail requestBody: content: application/json: schema: type: object required: - email properties: email: description: Электронная почта пользователя type: string required: true responses: "200": description: Успешная отправка письма, если электронная почта существует content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" /users/login/switch: post: tags: - Users summary: Переключить метод входа description: > Переключите метод входа пользователя с использования электронной почты на OAuth2/OpenID/SAML/LDAP или обратно на электронную почту. При переключении на OAuth2/SAML, переключение учетной записи не завершено, пока пользователь не перейдет по возвращенной ссылке и не выполнит все шаги на стороне провайдера OAuth2/SAML. Чтобы переключиться с электронной почты на OAuth2/OpenID/SAML, укажите `current_service`, `new_service`, `email` и `password`. Сессия не требуется. Чтобы переключиться с OAuth2/OpenID/SAML на электронную почту, укажите `current_service`, `new_service`, `email` и `new_password`. Требуется активная сессия пользователя с той же `email`, что указана в запросе. Чтобы переключиться с электронной почты на LDAP/AD, укажите `current_service`, `new_service`, `email`, `password`, `ldap_id` и `new_password` (это пароль пользователя LDAP). Сессия не требуется. Чтобы переключиться с LDAP/AD на электронную почту, укажите `current_service`, `new_service`, `ldap_id`, `password` (это пароль пользователя LDAP), `email` и `new_password`. Сессия не требуется. Кроме того, укажите `mfa_code`, если пытаетесь переключить учетную запись на LDAP/AD или электронную почту, для которой активирована MFA. ##### Разрешения Текущая аутентификация не требуется, кроме случаев переключения с OAuth2/OpenID/SAML на электронную почту. operationId: SwitchAccountType requestBody: content: application/json: schema: type: object required: - current_service - new_service properties: current_service: description: Сервис, который пользователь в настоящее время использует для входа type: string new_service: description: Сервис, который пользователь будет использовать для входа type: string email: description: Электронная почта пользователя type: string password: description: Пароль, используемый с текущим сервисом type: string mfa_code: description: Код MFA текущего сервиса type: string ldap_id: description: Идентификатор LDAP/AD пользователя type: string required: true responses: "200": description: Успешное переключение метода входа или запрос content: application/json: schema: type: object properties: follow_link: description: > Ссылка, по которой пользователь должен перейти для входа или завершения переключения учетной записи, когда текущий сервис - OAuth2/SAML type: string "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" /users/{user_id}/tokens: post: tags: - Users summary: Создать токен доступа пользователя description: > Генерирует токен доступа пользователя, который может быть использован для аутентификации с REST API Time. __Минимальная версия сервера__: 4.1 ##### Разрешения Должно быть разрешение `create_user_access_token`. Для запросов не от себя, также должно быть разрешение `edit_other_users`. operationId: CreateUserAccessToken parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string requestBody: content: application/json: schema: type: object required: - description properties: description: description: Описание использования токена type: string required: true responses: "201": description: Успешное создание токена доступа пользователя content: application/json: schema: $ref: "#/components/schemas/UserAccessToken" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" get: tags: - Users summary: Получить токены доступа пользователя description: > Получите список токенов доступа пользователя. Не включает фактические токены аутентификации. Используйте параметры запроса для постраничного вывода. __Минимальная версия сервера__: 4.1 ##### Разрешения Должно быть разрешение `read_user_access_token`. Для запросов не от себя, также должно быть разрешение `edit_other_users`. operationId: GetUserAccessTokensForUser parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string - name: page in: query description: Выбираемая страница. schema: type: integer default: 0 - name: per_page in: query description: Количество токенов на странице. schema: type: integer default: 60 responses: "200": description: Успешное получение токенов доступа пользователя content: application/json: schema: type: array items: $ref: "#/components/schemas/UserAccessTokenSanitized" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/tokens: get: tags: - Users summary: Получить токены доступа пользователей description: > Получите страницу токенов доступа пользователей в системе. Не включает фактические токены аутентификации. Используйте параметры запроса для постраничного вывода. __Минимальная версия сервера__: 4.7 ##### Разрешения Должно быть разрешение `manage_system`. operationId: GetUserAccessTokens parameters: - name: page in: query description: Выбираемая страница. schema: type: integer default: 0 - name: per_page in: query description: Количество токенов на странице. schema: type: integer default: 60 responses: "200": description: Успешное получение токенов доступа пользователей content: application/json: schema: type: array items: $ref: "#/components/schemas/UserAccessTokenSanitized" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/tokens/revoke: post: tags: - Users summary: Отозвать токен доступа пользователя description: > Отозвать токен доступа пользователя и удалить все сессии, использующие этот токен. __Минимальная версия сервера__: 4.1 ##### Разрешения Для пользователей: Должно быть разрешение `revoke_user_access_token`. Для запросов не от себя, также должно быть разрешение `edit_other_users`. Для ботов: Должен быть владельцем бота и иметь разрешение `manage_bots` или иметь разрешение `manage_others_bots`. operationId: RevokeUserAccessToken requestBody: content: application/json: schema: type: object required: - token_id properties: token_id: description: GUID токена доступа пользователя для отзыва type: string required: true responses: "200": description: Успешный отзыв токена доступа пользователя content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/tokens/{token_id}: get: tags: - Users summary: Получить токен доступа пользователя description: > Получить токен доступа пользователя. Не включает фактический токен аутентификации. __Минимальная версия сервера__: 4.1 ##### Разрешения Должно быть разрешение `read_user_access_token`. Для запросов не от себя, также должно быть разрешение `edit_other_users`. operationId: GetUserAccessToken parameters: - name: token_id in: path description: GUID токена доступа пользователя required: true schema: type: string responses: "200": description: Успешное получение токена доступа пользователя content: application/json: schema: $ref: "#/components/schemas/UserAccessTokenSanitized" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /users/tokens/disable: post: tags: - Users summary: Отключить персональный токен доступа description: > Отключить персональный токен доступа и удалить все сессии, использующие этот токен. Токен может быть повторно включен с помощью `/users/tokens/enable`. __Минимальная версия сервера__: 4.4 ##### Разрешения Для пользователей: Должно быть разрешение `revoke_user_access_token`. Для запросов не от себя, также должно быть разрешение `edit_other_users`. Для ботов: Должен быть владельцем бота и иметь разрешение `manage_bots` или иметь разрешение `manage_others_bots`. operationId: DisableUserAccessToken requestBody: content: application/json: schema: type: object required: - token_id properties: token_id: description: GUID персонального токена доступа для отключения type: string required: true responses: "200": description: Успешное отключение персонального токена доступа content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/tokens/enable: post: tags: - Users summary: Включить персональный токен доступа description: > Повторно включить персональный токен доступа, который был отключен. __Минимальная версия сервера__: 4.4 ##### Разрешения Для пользователей: Должно быть разрешение `create_user_access_token`. Для запросов не от себя, также должно быть разрешение `edit_other_users`. Для ботов: Должен быть владельцем бота и иметь разрешение `manage_bots` или иметь разрешение `manage_others_bots`. operationId: EnableUserAccessToken requestBody: content: application/json: schema: type: object required: - token_id properties: token_id: description: GUID персонального токена доступа для включения type: string required: true responses: "200": description: Успешное включение персонального токена доступа content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/tokens/search: post: tags: - Users summary: Поиск токенов description: > Получите список токенов на основе критериев поиска, предоставленных в теле запроса. Поиск осуществляется по идентификатору токена, идентификатору пользователя и имени пользователя. __Минимальная версия сервера__: 4.7 ##### Разрешения Должно быть разрешение `manage_system`. operationId: SearchUserAccessTokens requestBody: content: application/json: schema: type: object required: - term properties: term: description: > Поисковый запрос для сопоставления с идентификатором токена, идентификатором пользователя или именем пользователя. type: string description: Критерии поиска required: true responses: "200": description: Успешный поиск персонального токена доступа content: application/json: schema: type: array items: $ref: "#/components/schemas/UserAccessTokenSanitized" /users/{user_id}/auth: put: tags: - Users summary: Обновить метод аутентификации пользователя description: > Обновляет метод аутентификации пользователя. Это может быть использовано для изменения на/с ldap/saml/openid/gitlab/google аутентификации. Если вы хотите изменить аутентификацию на электронную почту, используйте POST /users/login/switch. __Минимальная версия сервера__: 4.6 ##### Разрешения Должно быть разрешение `edit_other_users`. operationId: UpdateUserAuth parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string requestBody: content: application/json: schema: $ref: "#/components/schemas/UserAuthData" required: true responses: "200": description: Успешное обновление аутентификации пользователя content: application/json: schema: $ref: "#/components/schemas/UserAuthData" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /users/{user_id}/terms_of_service: post: tags: - Users - Terms of service summary: > Записывает действие пользователя при принятии или отклонении пользовательских условий использования description: > Записывает действие пользователя при принятии или отклонении пользовательских условий использования. Записывает действие в таблице аудита. Обновляет последний принятый идентификатор условий использования пользователя, если он их принял. __Минимальная версия сервера__: 5.4 ##### Разрешения Должен быть залогинен как пользователь, на которого направлено действие. operationId: RegisterTermsOfServiceAction parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string requestBody: content: application/json: schema: type: object required: - serviceTermsId - accepted properties: serviceTermsId: description: > Идентификатор условий использования, на которые действует пользователь type: string accepted: description: > true или false, указывает, принял ли пользователь или отклонил условия использования. type: string description: детали условий использования required: true responses: "200": description: Успешная запись действия по условиям использования content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" get: tags: - Users - Terms of service summary: > Получает последнее действие пользователя по условиям использования, если последнее действие было для принятия. description: > Будет устаревшим в версии 6.0 Получает последнее действие пользователя по условиям использования, если последнее действие было для принятия. __Минимальная версия сервера__: 5.6 ##### Разрешения Должен быть залогинен как пользователь, на которого направлено действие. operationId: GetUserTermsOfService parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string responses: "200": description: Принятое действие пользователя по условиям использования content: application/json: schema: $ref: "#/components/schemas/UserTermsOfService" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": description: > Пользователь не совершал действия или последнее действие было отклонением. content: application/json: schema: $ref: "#/components/schemas/AppError" /users/{user_id}/add_channel/possibility: get: tags: - Users summary: Проверка, достиг ли ограниченный гость лимита каналов по лицензии parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string responses: "200": description: Проверка прошла успешно content: application/json: schema: type: object required: - status properties: status: description: > Истина, если пользователь не достиг лимита по количеству каналов и может быть добавлен в канал. type: boolean "403": $ref: "#/components/responses/Forbidden" /users/sessions/revoke/all: post: tags: - Users summary: Отозвать все сессии всех пользователей. description: > Любая сессия, находящаяся на сервере (включая админскую), будет отозвана. Клиенты будут уведомлены о необходимости выхода пользователей. __Минимальная версия сервера__: 5.14 ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: RevokeSessionsFromAllUsers responses: "200": description: Сессии успешно отозваны. "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/{user_id}/typing: post: tags: - Users summary: Опубликовать событие ввода текста пользователем через websocket. description: > Уведомить пользователей в указанном канале через websocket, что данный пользователь вводит текст. __Минимальная версия сервера__: 5.26 ##### Разрешения Необходимо иметь разрешение `manage_system`, чтобы публиковать для любого пользователя, кроме себя. operationId: PublishUserTyping parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string requestBody: content: application/json: schema: type: object required: - channel_id properties: channel_id: description: | ID канала, в который направляется событие ввода текста. type: string parent_id: description: > Необязательный ID корневого сообщения треда, на которое пользователь отвечает. Если не задано, событие ввода текста направляется на весь канал. type: string responses: "200": description: Событие ввода текста пользователем принято для публикации. "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/{user_id}/uploads: get: tags: - Users summary: Получить загрузки для пользователя description: > Получает все сессии загрузки, принадлежащие пользователю. __Минимальная версия сервера__: 5.28 ##### Разрешения Необходимо быть авторизованным как пользователь, создавший сессии загрузки. operationId: GetUploadsForUser parameters: - name: user_id in: path description: > ID пользователя. Это также может быть "me", что указывает на текущего пользователя. required: true schema: type: string responses: "200": description: Успешное получение загрузок пользователя content: application/json: schema: type: array items: $ref: "#/components/schemas/UploadSession" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" x-codeSamples: - lang: Curl source: | curl 'http://localhost:8065/api/v4/users/fc6suoon9pbbpmhrb9c967paxe/uploads' \ -H 'Authorization: Bearer 9kg8nqrnxprd9jbykqeg4r51hw' /users/{user_id}/channel_members: get: tags: - Users summary: Получить всех участников каналов из всех команд для пользователя description: | Получить всех участников каналов из всех команд для пользователя. __Минимальная версия сервера__: 6.2.0 ##### Разрешения Авторизован как пользователь или имеет разрешение `edit_other_users`. operationId: GetChannelMembersWithTeamDataForUser parameters: - name: user_id in: path description: > ID пользователя. Это также может быть "me", что указывает на текущего пользователя. required: true schema: type: string - name: page in: query description: > Страница указывает, какую часть результатов вернуть, по размеру страницы. required: false schema: type: integer - name: pageSize in: query description: | Размер страницы указывает размер возвращаемого блока результатов. required: false schema: type: integer responses: "200": description: Успешное получение загрузок пользователя content: application/json: schema: type: array items: $ref: "#/components/schemas/ChannelMemberWithTeamData" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" x-codeSamples: - lang: Curl source: | curl 'http://localhost:8065/api/v4/users/me/channel_members?page=0&per_page=2' \ -H 'Authorization: Bearer 9kg8nqrnxprd9jbykqeg4r51hw' /users/migrate_auth/ldap: post: tags: - Users - Migrate - LDAP summary: Миграция типа аутентификации учетных записей пользователей на LDAP. description: > Миграция учетных записей от одного провайдера аутентификации к другому. Например, вы можете обновить своего провайдера аутентификации с электронной почты на LDAP. __Минимальная версия сервера__: 5.28 ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: MigrateAuthToLdap requestBody: content: application/json: schema: type: object required: - from - match_field - force properties: from: description: | Текущий тип аутентификации для совпадающих пользователей. type: string enum: - email - gitlab - saml - google - openid match_field: description: > Совпадение по полю `email` или `username`. Пользователь LDAP будет считаться тем же пользователем, если у него есть аналогичное значение имени пользователя/электронной почты. type: string enum: - username - email force: type: boolean responses: "200": description: Успешная миграция типа аутентификации на LDAP. "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /users/migrate_auth/saml: post: tags: - Users - Migrate - SAML summary: Миграция типа аутентификации учетных записей пользователей на SAML. description: > Миграция учетных записей от одного провайдера аутентификации к другому. Например, вы можете обновить своего провайдера аутентификации с электронной почты на SAML. __Минимальная версия сервера__: 5.28 ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: MigrateAuthToSaml requestBody: content: application/json: schema: type: object required: - from - matches - auto properties: from: description: | Текущий тип аутентификации для совпадающих пользователей. type: string enum: - email - gitlab - ldap - google matches: description: > Карта пользователей: `{"email1" : "authData1", "email2": "authData2}`. Существующий пользователь Time с `email` будет использовать `authData` как идентификатор аутентификации. `AuthData` - это соответствующее значение атрибута `ID` пользователя на странице SAML в системной консоли. type: object auto: description: > Вы можете установить auto в true и передать пустой объект `matches`. В этом случае все пользователи, использующие тип аутентификации `from`, будут обработаны. Имя пользователя будет использоваться как поле authData. Значение атрибута `ID` пользователя на странице SAML в системной консоли должно указывать на имя пользователя. type: boolean responses: "200": description: Успешная миграция типа аутентификации на SAML. "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /users/migrate_auth/openid: post: tags: - Users - Migrate - OpenID summary: Миграция типа аутентификации учетных записей пользователей на OpenID. description: > Миграция учетных записей от одного провайдера аутентификации к другому. Например, вы можете обновить своего провайдера аутентификации с электронной почты на OpenID. ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: MigrateAuthToOpenID requestBody: content: application/json: schema: type: object required: - from - update_auth_data - dry_run properties: from: description: > Пользователи с текущим типом аутентификации будут мигрированы. type: string enum: - email - gitlab - saml - ldap - google update_auth_data: description: Установить AuthData пользователя Time на его имя пользователя. type: boolean dry_run: description: Пробный запуск, не обновлять пользователей. Только возвращать ошибки. type: boolean responses: "200": description: Успешная миграция типа аутентификации на OpenID. "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /users/{user_id}/teams/{team_id}/threads: get: tags: - Threads summary: Получить все треды, которые пользователь отслеживает description: > Получить все треды, которые пользователь отслеживает __Минимальная версия сервера__: 5.29 ##### Разрешения Необходимо быть авторизованным как пользователь или иметь разрешение `edit_other_users`. operationId: GetUserThreads parameters: - name: user_id in: path description: > ID пользователя. Это также может быть "me", что указывает на текущего пользователя. required: true schema: type: string - name: team_id in: path description: ID команды, в которой находится тред. required: true schema: type: string - name: pageSize in: query description: PageSize определяет размер возвращаемого блока результатов. По умолчанию = 30 required: false schema: type: integer format: int64 - name: extended in: query description: Extended добавит в ответ информацию об участниках. По умолчанию = false required: false schema: type: boolean - name: deleted in: query description: Deleted указывает, что также должны быть возвращены удалённые треды. По умолчанию = false required: false schema: type: boolean - name: since in: query description: Since фильтрует треды по их метке времени LastUpdateAt. required: false schema: type: integer format: int64 - name: before in: query description: Before указывает ID треда как курсор для пагинации и возвращает PageSize тредов до этого курсора required: false schema: type: string - name: after in: query description: After указывает ID треда как курсор для пагинации и возвращает PageSize тредов после этого курсора required: false schema: type: string - name: unread in: query description: Unread обеспечивает возврат только тех тредов, в которых есть непрочитанные ответы required: false schema: type: boolean - name: skipTotal in: query description: SkipTotal не будет запрашивать общее количество тредов required: false schema: type: boolean - name: totalsOnly in: query description: TotalsOnly не будет запрашивать треды, а только общее количество required: false schema: type: boolean - name: threadsOnly in: query description: ThreadsOnly вернёт только треды без подсчёта общего количества (будет возвращено 0) required: false schema: type: boolean - name: teamOnly in: query description: TeamOnly вернёт треды и непрочитанные сообщения только для указанной команды, исключая ЛС и группы required: false schema: type: boolean - name: disable_channel_type_group in: query description: > Если установить true, то не будет возвращаться количество непрочитанных сообщений и упоминаний с группировкой по типам каналов required: false schema: type: boolean responses: "200": description: Успешное получение тредов пользователя content: application/json: schema: $ref: "#/components/schemas/UserThreads" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" x-codeSamples: - lang: Curl source: | curl 'http://localhost:8065/api/v4/users/fc6suoon9pbbpmhrb9c967paxe/threads' \ -H 'Authorization: Bearer 9kg8nqrnxprd9jbykqeg4r51hw' /users/{user_id}/teams/{team_id}/threads/stats: get: tags: - Threads summary: Получить флаг непрочитанных тредов и количество непрочитанных упоминаний description: > Получить статистику по тредам, которые пользователь отслеживает __Минимальная версия сервера__: 5.29 ##### Разрешения Необходимо быть авторизованным как пользователь или иметь разрешение `edit_other_users`. operationId: GetThreadsStatsForUser parameters: - name: user_id in: path description: ID пользователя. required: true schema: type: string - name: team_id in: path description: ID команды, в которой находится тред. required: true schema: type: string responses: "200": description: Успешное получение статистики тредов content: application/json: schema: $ref: "#/components/schemas/UserThreadsStats" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" x-codeSamples: - lang: Curl source: | curl 'http://localhost:8065/api/v4/users/fc6suoon9pbbpmhrb9c967paxe/teams/fc6su111111pmhrb9c967paxe/threads/stats' \ -H 'Authorization: Bearer 9kg8nqrnxprd9jbykqeg4r51hw' /users/{user_id}/teams/{team_id}/threads/read: put: tags: - Threads summary: Отметить все треды, которые пользователь отслеживает, как прочитанные description: > Отметить все треды, которые пользователь отслеживает, как прочитанные __Минимальная версия сервера__: 5.29 ##### Разрешения Необходимо быть авторизованным как пользователь или иметь разрешение `edit_other_users`. operationId: UpdateThreadsReadForUser parameters: - name: user_id in: path description: > ID пользователя. Это также может быть "me", что указывает на текущего пользователя. required: true schema: type: string - name: team_id in: path description: ID команды, в которой находится тред. required: true schema: type: string responses: "200": description: Обновление тредов пользователя прошло успешно "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" x-codeSamples: - lang: Curl source: | curl -X PUT 'http://localhost:8065/api/v4/users/fc6suoon9pbbpmhrb9c967paxe/threads/read' \ -H 'Authorization: Bearer 9kg8nqrnxprd9jbykqeg4r51hw' /users/{user_id}/teams/{team_id}/threads/{thread_id}/read/{timestamp}: put: tags: - Threads summary: Установить состояние прочтения треда, который пользователь отслеживает, на указанную временную метку description: > Отметить тред, который пользователь отслеживает, как прочитанный __Минимальная версия сервера__: 5.29 ##### Разрешения Необходимо быть авторизованным как пользователь или иметь разрешение `edit_other_users`. operationId: UpdateThreadReadForUser parameters: - name: user_id in: path description: > ID пользователя. Это также может быть "me", что указывает на текущего пользователя. required: true schema: type: string - name: team_id in: path description: ID команды, в которой находится тред. required: true schema: type: string - name: thread_id in: path description: ID треда для обновления required: true schema: type: string - name: timestamp in: path description: > Временная метка, до которой будет сброшено состояние "последнего прочтения" треда. required: true schema: type: string responses: "200": description: Обновление тредов пользователя прошло успешно "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" x-codeSamples: - lang: Curl source: | curl -X PUT 'http://localhost:8065/api/v4/users/fc6suoon9pbbpmhrb9c967paxe/threads/f96345234975624/read' \ -H 'Authorization: Bearer 9kg8nqrnxprd9jbykqeg4r51hw' /users/{user_id}/teams/{team_id}/threads/{thread_id}/following: put: tags: - Threads summary: Начать отслеживание треда description: > Начать отслеживание треда __Минимальная версия сервера__: 5.29 ##### Разрешения Необходимо быть авторизованным как пользователь или иметь разрешение `edit_other_users`. operationId: StartFollowingThread parameters: - name: user_id in: path description: ID пользователя. Это также может быть "me", что указывает на текущего пользователя. required: true schema: type: string - name: team_id in: path description: ID команды, в которой находится тред. required: true schema: type: string - name: thread_id in: path description: ID треда для отслеживания required: true schema: type: string responses: "200": description: Обновление тредов пользователя прошло успешно "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" x-codeSamples: - lang: Curl source: | curl -X PUT 'http://localhost:8065/api/v4/users/fc6suoon9pbbpmhrb9c967paxe/threads/f96345234975624/followin' \ -H 'Authorization: Bearer 9kg8nqrnxprd9jbykqeg4r51hw' delete: tags: - Threads summary: Прекратить отслеживание треда description: > Прекратить отслеживание треда __Минимальная версия сервера__: 5.29 ##### Разрешения Необходимо быть авторизованным как пользователь или иметь разрешение `edit_other_users`. operationId: StopFollowingThread parameters: - name: user_id in: path description: > ID пользователя. Это также может быть "me", что указывает на текущего пользователя. required: true schema: type: string - name: team_id in: path description: ID команды, в которой находится тред. required: true schema: type: string - name: thread_id in: path description: ID треда для обновления required: true schema: type: string responses: "200": description: Обновление тредов пользователя прошло успешно "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" x-codeSamples: - lang: Curl source: | curl -X DELETE 'http://localhost:8065/api/v4/users/fc6suoon9pbbpmhrb9c967paxe/threads/f96345234975624/following' \ -H 'Authorization: Bearer 9kg8nqrnxprd9jbykqeg4r51hw' /users/{user_id}/teams/{team_id}/threads/{thread_id}: get: tags: - Threads summary: Получить тред, отслеживаемый пользователем description: > Получить тред __Минимальная версия сервера__: 5.29 ##### Разрешения Необходимо быть авторизованным как пользователь или иметь разрешение `edit_other_users`. operationId: GetUserThread parameters: - name: user_id in: path description: ID пользователя. Это также может быть "me", что указывает на текущего пользователя. required: true schema: type: string - name: team_id in: path description: ID команды, в которой находится тред. required: true schema: type: string - name: thread_id in: path description: ID треда для отслеживания required: true schema: type: string - name: extended in: query description: Флаг, указывающий, следует ли возвращать полные объекты участников или только их ID. required: false schema: type: boolean default: false responses: "200": description: Получение прошло успешно content: application/json: schema: $ref: "#/components/schemas/UserThread" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" x-codeSamples: - lang: Curl source: | curl -X GET 'http://localhost:8065/api/v4/users/fc6suoon9pbbpmhrb9c967paxe/threads/f96345234975624' \ -H 'Authorization: Bearer 9kg8nqrnxprd9jbykqeg4r51hw' /users/{user_id}/data_retention/team_policies: get: tags: - Хранение данных summary: Получить политики, применяемые к командам пользователя description: > Получает политики, применяемые ко всем командам, к которым принадлежит пользователь. __Минимальная версия сервера__: 5.35 ##### Разрешения Необходимо быть авторизованным как пользователь или иметь разрешение `manage_system`. ##### Лицензия Требуется лицензия E20. operationId: GetTeamPoliciesForUser parameters: - name: user_id in: path description: > ID пользователя. Это также может быть "me", что указывает на текущего пользователя. required: true schema: type: string - name: page in: query description: Выбираемая страница. schema: type: integer default: 0 - name: per_page in: query description: > Количество политик на странице. Максимальный лимит - 200 на страницу. schema: type: integer default: 60 responses: "200": description: Команды для политики хранения данных успешно получены. content: application/json: schema: $ref: "#/components/schemas/RetentionPolicyForTeamList" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /users/{user_id}/data_retention/channel_policies: get: tags: - Хранение данных summary: Получить политики, применяемые к каналам пользователя description: > Получает политики, применяемые ко всем каналам, к которым принадлежит пользователь. __Минимальная версия сервера__: 5.35 ##### Разрешения Необходимо быть авторизованным как пользователь или иметь разрешение `manage_system`. ##### Лицензия Требуется лицензия E20. operationId: GetChannelPoliciesForUser parameters: - name: user_id in: path description: > ID пользователя. Это также может быть "me", что указывает на текущего пользователя. required: true schema: type: string - name: page in: query description: Выбираемая страница. schema: type: integer default: 0 - name: per_page in: query description: > Количество политик на странице. Максимальный лимит - 200 на страницу. schema: type: integer default: 60 responses: "200": description: Каналы для политики хранения данных успешно получены. content: application/json: schema: $ref: "#/components/schemas/RetentionPolicyForChannelList" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /users/{user_id}/sidebar/activity: get: tags: - Users summary: Получить сообщения с активностью для пользователя description: | Получить сообщения с упоминаниями и реакциями ##### Разрешения Авторизован как пользователь или имеет разрешение `edit_other_users`. operationId: GetActivityFeed parameters: - name: user_id in: path description: > ID пользователя. Это также может быть "me", что указывает на текущего пользователя. required: true schema: type: string - name: limit in: query description: Лимит сообщений на странице. schema: type: integer default: 20 maximum: 50 - name: sort_by in: query description: > Установите "posted_at" для сортировки по времени создания сообщения или "activity_at" для сортировки по времени реакции или времени создания сообщения для упоминаний. schema: type: string enum: - posted_at - activity_at - name: page_token in: query description: > Токен для выбора следующего сообщения. Берется из ответа, поле "next_page_token". schema: type: string responses: "200": description: Сообщения успешно получены. content: application/json: schema: $ref: "#/components/schemas/ActivityFeed" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" /users/{user_id}/status: get: tags: - Status summary: Получить статус пользователя description: | Получить статус пользователя по идентификатору с сервера. ##### Разрешения Необходимо быть аутентифицированным. operationId: GetUserStatus parameters: - name: user_id in: path description: Идентификатор пользователя required: true schema: type: string responses: "200": description: Успешное получение статуса пользователя content: application/json: schema: $ref: "#/components/schemas/Status" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" put: tags: - Status summary: Обновить статус пользователя description: > Вручную установить статус пользователя. При установке статуса пользователя, статус останется таким, пока не будет снова установлен "online", что вернет статус к автоматическому обновлению на основе активности пользователя. ##### Разрешения Необходимо иметь разрешение `edit_other_users` для команды. operationId: UpdateUserStatus parameters: - name: user_id in: path description: Идентификатор пользователя required: true schema: type: string requestBody: content: application/json: schema: type: object required: - status - user_id properties: user_id: type: string description: Идентификатор пользователя status: $ref: "#/components/schemas/UserStatus" description: > Статус пользователя, может быть `online`, `away`, `offline` и `dnd` dnd_end_time: type: integer format: int64 description: | Время в секундах эпохи, когда статус dnd будет снят. description: | Объект статуса, который нужно обновить required: true responses: "200": description: Успешное обновление статуса пользователя content: application/json: schema: $ref: "#/components/schemas/Status" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" /users/status/ids: post: tags: - Status summary: Получить статусы пользователей по идентификатору description: | Получить список статусов пользователей по идентификатору с сервера. ##### Разрешения Необходимо быть аутентифицированным. operationId: GetUsersStatusesByIds requestBody: content: application/json: schema: type: array items: type: string description: Список идентификаторов пользователей для получения required: true responses: "200": description: Успешное получение статусов пользователей content: application/json: schema: type: array items: $ref: "#/components/schemas/Status" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" /users/{user_id}/status/custom: put: tags: - Status summary: Обновить пользовательский статус description: | Обновляет пользовательский статус, устанавливая значение в свойствах пользователя и обновляет пользователя. Также сохраняет данный пользовательский статус в недавние пользовательские статусы в свойствах пользователя. ##### Разрешения Необходимо войти в систему как пользователь, чей пользовательский статус обновляется. operationId: UpdateUserCustomStatus parameters: - name: user_id in: path description: Идентификатор пользователя required: true schema: type: string requestBody: content: application/json: schema: $ref: "#/components/schemas/UserCustomStatus" description: Объект пользовательского статуса, который нужно обновить required: true responses: "200": description: Успешное обновление пользовательского статуса "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" delete: tags: - Status summary: Снять пользовательский статус description: | Снимает пользовательский статус, обновляя свойства пользователя и обновляет пользователя. ##### Разрешения Необходимо войти в систему как пользователь, чей пользовательский статус удаляется. operationId: UnsetUserCustomStatus parameters: - name: user_id in: path description: Идентификатор пользователя required: true schema: type: string responses: "200": description: Успешное удаление пользовательского статуса "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" /users/{user_id}/status/custom/recent: delete: tags: - Status summary: Удалить недавний пользовательский статус description: > Удаляет недавний пользовательский статус, удаляя конкретный статус из recentCustomStatuses в свойствах пользователя и обновляет пользователя. ##### Разрешения Необходимо войти в систему как пользователь, чей недавний пользовательский статус удаляется. operationId: RemoveRecentCustomStatus parameters: - name: user_id in: path description: Идентификатор пользователя required: true schema: type: string requestBody: content: application/json: schema: $ref: "#/components/schemas/UserCustomStatus" description: > Объект пользовательского статуса, который нужно удалить из недавних пользовательских статусов. required: true responses: "200": description: Успешное удаление недавнего пользовательского статуса "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" /users/{user_id}/status/custom/recent/delete: post: tags: - Status summary: Удалить недавний пользовательский статус description: > Удаляет недавний пользовательский статус, удаляя конкретный статус из recentCustomStatuses в свойствах пользователя и обновляет пользователя. ##### Разрешения Необходимо войти в систему как пользователь, чей недавний пользовательский статус удаляется. operationId: PostUserRecentCustomStatusDelete parameters: - name: user_id in: path description: Идентификатор пользователя required: true schema: type: string requestBody: content: application/json: schema: $ref: "#/components/schemas/UserCustomStatus" description: > Объект пользовательского статуса, который нужно удалить из недавних пользовательских статусов. required: true responses: "200": description: Успешное удаление недавнего пользовательского статуса "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" /teams: post: tags: - Teams summary: Создать команду description: | Создать новую команду в системе. ##### Разрешения Должен быть аутентифицирован и иметь разрешение `create_team`. operationId: CreateTeam requestBody: content: application/json: schema: type: object required: - name - display_name - type properties: name: type: string description: > Уникальный идентификатор команды, будет присутствовать в URL команды display_name: type: string description: Неуникальное имя для отображения команды в интерфейсе type: type: string description: "`'O'` для открытой, `'I'` для только по приглашению" description: Команда, которую нужно создать required: true responses: "201": description: Успешное создание команды content: application/json: schema: $ref: "#/components/schemas/Team" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" get: tags: - Teams summary: Получить команды description: > Для обычных пользователей возвращаются только открытые команды. Пользователи с разрешением "manage_system" могут видеть команды независимо от типа. Результат основан на параметрах строки запроса - page и per_page. ##### Разрешения Должен быть аутентифицирован. Разрешение "manage_system" требуется для отображения всех команд. operationId: GetAllTeams parameters: - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: Количество команд на странице. schema: type: integer default: 60 - name: include_total_count in: query schema: type: boolean default: false - name: exclude_policy_constrained in: query schema: type: boolean default: false description: > Если установлено значение true, команды, которые являются частью политики сохранения данных, будут исключены. Разрешение `sysconsole_read_compliance` требуется для использования этого параметра. __Минимальная версия сервера__: 5.35 - name: can_join in: query description: > Этот параметр используется для фильтрации команд, к которым пользователь не может присоединиться. (уже вошел, фильтр по электронной почте) schema: type: boolean default: false responses: "200": description: Успешное получение списка команд content: application/json: schema: oneOf: - type: array items: $ref: "#/components/schemas/Team" description: Возвращается, если `include_total_count=false` или не указано. - type: object properties: total_count: type: integer description: Общее количество элементов. items: type: array items: $ref: "#/components/schemas/Team" has_next: type: boolean description: > Указывает, есть ли еще одна страница команд, которую можно получить. description: Возвращается, если `include_total_count=true`. required: - total_count - items - has_next "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" /teams/{team_id}: get: tags: - Teams summary: Получить команду description: | Получить команду в системе. ##### Разрешения Должен быть аутентифицирован и иметь разрешение `view_team`. operationId: GetTeam parameters: - name: team_id in: path description: GUID команды required: true schema: type: string responses: "200": description: Успешное получение команды content: application/json: schema: $ref: "#/components/schemas/Team" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" put: tags: - Teams summary: Обновить команду description: > Обновите команду, предоставив объект команды. Поля, которые можно обновить, определены в теле запроса, все остальные предоставленные поля будут проигнорированы. ##### Разрешения Должен иметь разрешение `manage_team`. operationId: UpdateTeam parameters: - name: team_id in: path description: GUID команды required: true schema: type: string requestBody: content: application/json: schema: type: object required: - id - display_name - description - company_name - allowed_domains - invite_id - allow_open_invite properties: id: type: string display_name: type: string description: type: string company_name: type: string allowed_domains: type: string invite_id: type: string allow_open_invite: type: string description: Команда для обновления required: true responses: "200": description: Успешное обновление команды content: application/json: schema: $ref: "#/components/schemas/Team" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" delete: tags: - Teams summary: Удалить команду description: > Мягкое удаление команды, путем пометки команды как удаленной в базе данных. Мягко удаленные команды не будут доступны в пользовательском интерфейсе. Опционально используйте параметр запроса permanent для жесткого удаления команды по причинам соответствия. Начиная с версии сервера 5.0, для использования этой функции `ServiceSettings.EnableAPITeamDeletion` должен быть установлен в `true` в конфигурации сервера. ##### Разрешения Должен иметь разрешение `manage_team`. operationId: SoftDeleteTeam parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: permanent in: query description: > Постоянно удалить команду, использовать только по причинам соответствия. Начиная с версии сервера 5.0, `ServiceSettings.EnableAPITeamDeletion` должен быть установлен в `true` в конфигурации сервера. required: false schema: type: boolean default: false responses: "200": description: Успешное удаление команды content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /teams/{team_id}/patch: put: tags: - Teams summary: Частичное обновление команды description: > Частично обновите команду, предоставив только поля, которые вы хотите обновить. Пропущенные поля не будут обновлены. Поля, которые можно обновить, определены в теле запроса, все остальные предоставленные поля будут проигнорированы. ##### Разрешения Должен иметь разрешение `manage_team`. operationId: PatchTeam parameters: - name: team_id in: path description: GUID команды required: true schema: type: string requestBody: content: application/json: schema: type: object properties: display_name: type: string description: type: string company_name: type: string invite_id: type: string allow_open_invite: type: boolean description: Объект команды, который нужно обновить required: true responses: "200": description: Успешное частичное обновление команды content: application/json: schema: $ref: "#/components/schemas/Team" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /teams/{team_id}/privacy: put: tags: - Teams summary: Обновить конфиденциальность команды description: > Обновляет конфиденциальность команды, позволяя изменять команду с публичной (открытой) на приватную (только по приглашению) и обратно. __Минимальная версия сервера__: 5.24 ##### Разрешения Разрешение `manage_team` для команды. operationId: UpdateTeamPrivacy parameters: - name: team_id in: path description: GUID команды required: true schema: type: string requestBody: content: application/json: schema: type: object required: - privacy properties: privacy: type: string description: > Настройка конфиденциальности команды: 'O' для публичной (открытой) команды, 'I' для приватной (только по приглашению) команды required: true responses: "200": description: Успешное изменение конфиденциальности команды content: application/json: schema: $ref: "#/components/schemas/Team" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /teams/{team_id}/restore: post: tags: - Teams summary: Восстановить команду description: | Восстановить команду, которая была ранее мягко удалена. __Минимальная версия сервера__: 5.24 ##### Разрешения Должен иметь разрешение `manage_team`. operationId: RestoreTeam parameters: - name: team_id in: path description: GUID команды required: true schema: type: string responses: "200": description: Успешное восстановление команды content: application/json: schema: $ref: "#/components/schemas/Team" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /teams/name/{name}: get: tags: - Teams summary: Получить команду по имени description: > Получить команду на основе предоставленной строки имени ##### Разрешения Должен быть аутентифицирован, тип команды открыт и иметь разрешение `view_team`. operationId: GetTeamByName parameters: - name: name in: path description: Имя команды required: true schema: type: string responses: "200": description: Успешное получение команды content: application/json: schema: $ref: "#/components/schemas/Team" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /teams/search: post: tags: - Teams summary: Поиск команд description: > Поиск команд на основе поискового термина и параметров, предоставленных в теле запроса. ##### Разрешения Вошедший в систему пользователь видит только открытые команды Вошедший в систему пользователь с разрешением "manage_system" видит все команды operationId: SearchTeams requestBody: content: application/json: schema: type: object properties: term: description: > Поисковый термин для сопоставления с именем или отображаемым именем команд type: string page: type: string description: > Номер страницы для возврата, если используется пагинация. Если этот параметр отсутствует вместе с параметром `per_page`, результаты будут возвращены без пагинации. per_page: type: string description: > Количество записей для возврата на страницу, если используется пагинация. Если этот параметр отсутствует вместе с параметром `page`, результаты будут возвращены без пагинации. allow_open_invite: type: boolean description: > Фильтрует результаты для команд, где `allow_open_invite` установлен в true или false, исключает каналы с ограничениями группы, если этот параметр фильтрации передан. Если этот параметр фильтрации не передан, запрос останется неизменным. __Минимальная версия сервера__: 5.28 group_constrained: type: boolean description: > Фильтрует результаты для команд, где `group_constrained` установлен в true или false, возвращает объединение результатов при использовании с `allow_open_invite` Если параметр фильтрации не передан, запрос останется неизменным. __Минимальная версия сервера__: 5.28 exclude_policy_constrained: type: boolean default: false description: > Если установлено значение true, будут возвращены только команды, которым не назначена детализированная политика хранения. Разрешение `sysconsole_read_compliance_data_retention` требуется для использования этого параметра. __Минимальная версия сервера__: 5.35 description: Критерии поиска required: true responses: "200": description: > Ответ с пагинацией команд. (Обратите внимание, что непагинированный ответ — возвращается, если тело запроса не содержит полей `page` и `per_page` — это простой массив команд.) content: application/json: schema: type: object properties: teams: type: array description: Команды, соответствующие запросу. items: $ref: "#/components/schemas/Team" total_count: type: integer description: > Общее количество результатов, независимо от запрошенных page и per_page. "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /teams/name/{name}/exists: get: tags: - Teams summary: Проверить, существует ли команда description: | Проверить, существует ли команда на основе имени команды. ##### Разрешения Должен быть аутентифицирован. operationId: TeamExists parameters: - name: name in: path description: Имя команды required: true schema: type: string responses: "200": description: Успешное получение команды content: application/json: schema: $ref: "#/components/schemas/TeamExists" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" /users/{user_id}/teams: get: tags: - Teams summary: Получить команды пользователя description: > Получить список команд, в которых состоит пользователь. ##### Разрешения Должен быть аутентифицирован как пользователь или иметь разрешение `manage_system`. operationId: GetTeamsForUser parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string responses: "200": description: Успешное получение списка команд content: application/json: schema: type: array items: $ref: "#/components/schemas/Team" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /teams/{team_id}/members: get: tags: - Teams summary: Получить участников команды description: > Получить список участников команды на странице на основе параметров строки запроса — id команды, страница и количество на странице. ##### Разрешения Должен быть аутентифицирован и иметь разрешение `view_team`. operationId: GetTeamMembers parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: Количество пользователей на странице. schema: type: integer default: 60 responses: "200": description: Успешное получение участников команды content: application/json: schema: type: array items: $ref: "#/components/schemas/TeamMember" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" post: tags: - Teams summary: Добавить пользователя в команду description: > Добавить пользователя в команду по user_id. ##### Разрешения Должен быть аутентифицирован, и команда должна быть открыта для добавления себя. Для добавления другого пользователя аутентифицированный пользователь должен иметь разрешение `add_user_to_team`. operationId: AddTeamMember parameters: - name: team_id in: path description: GUID команды required: true schema: type: string requestBody: content: application/json: schema: type: object properties: team_id: type: string user_id: type: string required: true responses: "201": description: Успешное создание участника команды content: application/json: schema: $ref: "#/components/schemas/TeamMember" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /teams/members/invite: post: tags: - Teams summary: Добавить пользователя в команду по приглашению description: > Используя либо id приглашения, либо пару hash/data из ссылки приглашения по электронной почте, добавьте пользователя в команду. ##### Разрешения Должен быть аутентифицирован. operationId: AddTeamMemberFromInvite parameters: - name: token in: query description: ID токена из приглашения required: true schema: type: string responses: "201": description: Успешное создание участника команды content: application/json: schema: $ref: "#/components/schemas/TeamMember" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /teams/{team_id}/members/batch: post: tags: - Teams summary: Добавить нескольких пользователей в команду description: > Добавить нескольких пользователей в команду по user_id. ##### Разрешения Должен быть аутентифицирован. Аутентифицированный пользователь должен иметь разрешение `add_user_to_team`. operationId: AddTeamMembers parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: graceful in: query description: > Вместо прерывания операции, если пользователя нельзя добавить, вернуть массив, который будет содержать как успешных, так и добавленных участников, так и тех, у кого возникла ошибка, в виде `[{"member": {...}, "user_id", "...", "error": {...}}]` required: false schema: type: boolean requestBody: content: application/json: schema: type: array items: $ref: "#/components/schemas/TeamMember" required: true responses: "201": description: Участники команды успешно созданы. content: application/json: schema: type: array items: $ref: "#/components/schemas/TeamMemberWithError" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /users/{user_id}/teams/members: get: tags: - Teams summary: Получить участников команды для пользователя description: > Получить список участников команды для пользователя. Полезно для получения id команд, в которых пользователь состоит, и ролей, которые у него есть в этих командах. ##### Разрешения Должен быть залогинен как пользователь или иметь разрешение `edit_other_users`. operationId: GetTeamMembersForUser parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string responses: "200": description: Успешное получение участников команды content: application/json: schema: type: array items: $ref: "#/components/schemas/TeamMember" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /teams/{team_id}/members/{user_id}: get: tags: - Teams summary: Получить участника команды description: | Получить участника команды в системе. ##### Разрешения Должен быть аутентифицирован и иметь разрешение `view_team`. operationId: GetTeamMember parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: user_id in: path description: GUID пользователя required: true schema: type: string responses: "200": description: Успешное получение участника команды content: application/json: schema: $ref: "#/components/schemas/TeamMember" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" delete: tags: - Teams summary: Удалить пользователя из команды description: > Удалить объект участника команды для пользователя, фактически удалив его из команды. ##### Разрешения Должен быть залогинен как пользователь или иметь разрешение `remove_user_from_team`. operationId: RemoveTeamMember parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: user_id in: path description: GUID пользователя required: true schema: type: string responses: "200": description: Успешное удаление участника команды content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /teams/{team_id}/members/ids: post: tags: - Teams summary: Получить участников команды по id description: > Получить список участников команды на основе предоставленного массива id пользователей. ##### Разрешения Должен иметь разрешение `view_team` для команды. operationId: GetTeamMembersByIds parameters: - name: team_id in: path description: GUID команды required: true schema: type: string requestBody: content: application/json: schema: type: array items: type: string description: Список id пользователей required: true responses: "200": description: Успешное получение участников команды content: application/json: schema: type: array items: $ref: "#/components/schemas/TeamMember" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /teams/{team_id}/stats: get: tags: - Teams summary: Получить статистику команды description: | Получить статистику команды в системе. ##### Разрешения Должен быть аутентифицирован и иметь разрешение `view_team`. operationId: GetTeamStats parameters: - name: team_id in: path description: GUID команды required: true schema: type: string responses: "200": description: Успешное получение статистики команды content: application/json: schema: $ref: "#/components/schemas/TeamStats" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /teams/{team_id}/regenerate_invite_id: post: tags: - Teams summary: Перегенерировать ID приглашения команды description: > Перегенерирует ID приглашения, используемый в ссылках приглашения команды ##### Разрешения Должен быть аутентифицирован и иметь разрешение `manage_team`. operationId: RegenerateTeamInviteId parameters: - name: team_id in: path description: GUID команды required: true schema: type: string responses: "200": description: ID приглашения команды перегенерирован content: application/json: schema: $ref: "#/components/schemas/Team" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /teams/{team_id}/image: get: tags: - Teams summary: Получить иконку команды description: > Получить иконку команды. __Минимальная версия сервера__: 4.9 ##### Разрешения Пользователь должен быть аутентифицирован. Кроме того, команда должна быть открыта или пользователь должен иметь разрешение `view_team`. operationId: GetTeamIcon parameters: - name: team_id in: path description: GUID команды required: true schema: type: string responses: "200": description: Успешное получение иконки команды "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" post: tags: - Teams summary: Установить иконку команды description: | Установить иконку команды. __Минимальная версия сервера__: 4.9 ##### Разрешения Должен быть аутентифицирован и иметь разрешение `manage_team`. operationId: SetTeamIcon parameters: - name: team_id in: path description: GUID команды required: true schema: type: string requestBody: content: multipart/form-data: schema: type: object properties: image: description: Изображение для загрузки type: string format: binary required: - image responses: "200": description: Иконка команды успешно установлена content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" delete: tags: - Teams summary: Удалить иконку команды description: | Удалить иконку команды. __Минимальная версия сервера__: 4.10 ##### Разрешения Должен быть аутентифицирован и иметь разрешение `manage_team`. operationId: RemoveTeamIcon parameters: - name: team_id in: path description: GUID команды required: true schema: type: string responses: "200": description: Иконка команды успешно удалена content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /teams/{team_id}/members/{user_id}/roles: put: tags: - Teams summary: Обновить роли участника команды description: > Обновить роли участника команды. Допустимые роли команды: "team_user", "team_admin" или обе. Перезаписывает любые ранее назначенные роли команды. ##### Разрешения Должен быть аутентифицирован и иметь разрешение `manage_team_roles`. operationId: UpdateTeamMemberRoles parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: user_id in: path description: GUID пользователя required: true schema: type: string requestBody: content: application/json: schema: type: object required: - roles properties: roles: type: string description: Роли команды, разделенные пробелами, для назначения пользователю required: true responses: "200": description: Успешное обновление ролей участника команды content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /teams/invite-info: get: tags: - Teams summary: > Получить краткую информацию о приглашении участника и гостя, отправленном по электронной почте description: > Возвращает упрощенную информацию о приглашении участника и гостя. Упрощает информацию о токенах и приглашениях до легко понимаемых статусов. ##### Разрешения Аутентификация не требуется. operationId: GetInviteBriefInfo parameters: - name: t in: path description: ID токена приглашения required: true schema: type: string responses: "200": description: Успешное получение информации о приглашении content: application/json: schema: type: object properties: invite_id: type: string description: Заполняется только для приглашения типа guest-invite invite_type: type: string enum: - guest-invite - member-invite restricted_guest: type: boolean description: Заполняется только для приглашения типа guest-invite team_display_name: type: string team_name: type: string email_masked: type: string invite_status: type: string enum: - valid - expired - used - revoked invited_user_status: type: string enum: - active - inactive required: - invite_type - team_display_name - team_name - email_masked - invite_status "500": $ref: "#/components/responses/InternalServerError" /teams/{team_id}/members/{user_id}/schemeRoles: put: tags: - Teams summary: Обновить роли участника команды, полученные из схемы. description: > Обновите свойства scheme_admin/scheme_user участника команды. Обычно это должно быть `scheme_admin=false, scheme_user=true` для обычного участника канала или `scheme_admin=true, scheme_user=true` для администратора канала, или `scheme_guest=true` для гостя команды. __Минимальная версия сервера__: 5.0 ##### Разрешения Должен быть аутентифицирован и иметь разрешение `manage_team_roles`. operationId: UpdateTeamMemberSchemeRoles parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: user_id in: path description: GUID пользователя required: true schema: type: string requestBody: content: application/json: schema: type: object properties: scheme_admin: type: boolean scheme_user: type: boolean scheme_guest: type: boolean description: Свойства схемы. required: true responses: "200": description: Роли участника команды, полученные из схемы, успешно обновлены. content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /users/{user_id}/teams/unread: get: tags: - Teams summary: Получить непрочитанные сообщения в командах для пользователя description: > Получить количество непрочитанных сообщений и упоминаний в командах, в которых пользователь является участником. ##### Разрешения Должен быть залогинен. operationId: GetTeamsUnreadForUser parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string - name: exclude_team in: query description: Необязательный id команды, которую нужно исключить из результатов schema: type: string - name: include_collapsed_threads in: query description: | Булево значение, определяющее, следует ли включать свернутые потоки required: false schema: type: boolean default: false responses: "200": description: Успешное получение непрочитанных сообщений в командах content: application/json: schema: type: array items: $ref: "#/components/schemas/TeamUnread" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/{user_id}/teams/{team_id}/unread: get: tags: - Teams summary: Получить непрочитанные сообщения для команды description: > Получить количество непрочитанных упоминаний и сообщений для команды для указанного пользователя. ##### Разрешения Должен быть пользователем или иметь разрешение `edit_other_users` и разрешение `view_team` для команды. operationId: GetTeamUnread parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string - name: team_id in: path description: GUID команды required: true schema: type: string - name: include_collapsed_threads in: query description: | Булево значение, определяющее, следует ли включать свернутые потоки required: false schema: type: boolean default: false responses: "200": description: Успешное получение количества непрочитанных сообщений команды content: application/json: schema: $ref: "#/components/schemas/TeamUnread" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /teams/{team_id}/invite/email: post: tags: - Teams summary: Пригласить пользователей в команду по электронной почте description: > Пригласить пользователей в существующую команду, используя электронную почту пользователя. Количество отправляемых писем ограничено до 20 в час с возможностью отправки 20 писем за раз. Если лимит превышен, сообщение об ошибке содержит информацию о том, когда можно повторить попытку и когда таймер будет сброшен. ##### Разрешения Должен иметь разрешения `invite_user` и `add_user_to_team` для команды. operationId: InviteUsersToTeam parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: graceful in: query description: > Вернуть массив, который будет содержать как успешных, так и приглашенных пользователей, так и тех, у кого возникла ошибка, в виде `[{"user_id": "", "email": "",..., "error": {...}}]`. Должно быть `true`. required: true schema: type: boolean - name: dry_run in: query description: | Только проверяет приглашения без отправки писем. required: false schema: type: boolean default: false requestBody: content: application/json: schema: type: array items: type: string description: Список электронных адресов пользователей required: true responses: "200": description: Успешное приглашение пользователей content: application/json: schema: $ref: "#/components/schemas/EmailInviteWithErrorList" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "413": $ref: "#/components/responses/TooLarge" /teams/{team_id}/invite-guests/email: post: tags: - Teams summary: Пригласить гостей в команду по электронной почте description: > Пригласить гостей в существующие каналы команды, используя электронную почту пользователя. Количество отправляемых писем ограничено до 20 в час с возможностью отправки 20 писем за раз. Если лимит превышен, сообщение об ошибке содержит информацию о том, когда можно повторить попытку и когда таймер будет сброшен. __Минимальная версия сервера__: 5.16 ##### Разрешения Должен иметь разрешение `invite_guest` для команды. operationId: InviteGuestsToTeam parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: graceful in: query description: > Вернуть массив, который будет содержать как успешных, так и приглашенных пользователей, так и тех, у кого возникла ошибка, в виде `[{"user_id": "", "email": "",..., "error": {...}}]`. Должно быть `true`. required: true schema: type: boolean - name: dry_run in: query description: | Только проверяет приглашения без отправки писем. required: false schema: type: boolean default: false requestBody: content: application/json: schema: type: object required: - emails - channels properties: emails: type: array items: type: string description: Список электронных адресов channels: type: array items: type: string description: Список id каналов message: type: string description: Сообщение, включаемое в приглашение restricted: type: boolean default: false description: Является ли приглашение для ограниченных гостей description: Информация о приглашении гостей required: true responses: "200": description: Успешное приглашение гостей content: application/json: schema: $ref: "#/components/schemas/EmailInviteWithErrorList" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "413": $ref: "#/components/responses/TooLarge" /teams/invites/email: delete: tags: - Teams summary: Аннулировать активные приглашения по электронной почте description: > Аннулировать активные приглашения по электронной почте, которые не были приняты пользователем. ##### Разрешения Должен иметь разрешение `sysconsole_write_authentication_email`. operationId: InvalidateEmailInvites responses: "200": description: Приглашения по электронной почте успешно аннулированы content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /teams/{team_id}/import: post: tags: - Teams summary: Импортировать команду из другого приложения description: > Импортировать команду в существующую команду. Импортировать пользователей, каналы, сообщения, хуки. ##### Разрешения Должен иметь разрешение `permission_import_team`. operationId: ImportTeam parameters: - name: team_id in: path description: GUID команды required: true schema: type: string requestBody: content: multipart/form-data: schema: type: object properties: file: description: Файл для загрузки в формате zip. type: string format: binary filesize: description: Размер zip-файла для импорта. type: integer importFrom: description: > Строка, определяющая, из какого приложения команда была экспортирована для импорта в Time. type: string required: - file - filesize - importFrom responses: "200": description: > JSON-объект, содержащий текстовый файл с логами импорта в формате base64 в свойстве `results`. content: application/json: schema: type: object properties: results: type: string "400": $ref: "#/components/responses/BadRequest" "403": $ref: "#/components/responses/Forbidden" /teams/invite/{invite_id}: get: tags: - Teams summary: Получить информацию о приглашении в команду description: > Получить `name`, `display_name`, `description` и `id` команды по id приглашения. __Минимальная версия сервера__: 4.0 ##### Разрешения Аутентификация не требуется. operationId: GetTeamInviteInfo parameters: - name: invite_id in: path description: ID приглашения для команды required: true schema: type: string responses: "200": description: Успешное получение информации о приглашении в команду content: application/json: schema: type: object properties: id: type: string name: type: string display_name: type: string description: type: string "400": $ref: "#/components/responses/BadRequest" /teams/{team_id}/scheme: put: tags: - Teams summary: Установить схему команды description: > Установить схему команды, более конкретно установить значение scheme_id записи команды. ##### Разрешения Должен иметь разрешение `manage_system`. __Минимальная версия сервера__: 5.0 operationId: UpdateTeamScheme parameters: - name: team_id in: path description: GUID команды required: true schema: type: string requestBody: content: application/json: schema: type: object required: - scheme_id properties: scheme_id: type: string description: ID схемы. description: GUID схемы required: true responses: "200": description: Успешное обновление схемы команды content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" x-codeSamples: - lang: curl source: > curl -X PUT \ https://time-url.domain/api/v4/teams/4xp9fdt77pncbef59f4k1qe83o/scheme \ -H 'Authorization: Bearer frn8fu5rtpyc5m4xy6q3oj4yur' \ -H 'Content-Type: application/json' \ -d '{"scheme_id": "qjda3stwafbgpqjaxej3k76sga"}' /teams/{team_id}/members_minus_group_members: get: tags: - Teams summary: Участники команды за вычетом участников группы. description: > Получить набор пользователей, которые являются участниками команды, за вычетом набора пользователей, которые являются участниками указанных групп. Каждый объект пользователя содержит массив объектов группы, представляющих членство в группах для этого пользователя. Каждый объект пользователя содержит булевы поля `scheme_guest`, `scheme_user` и `scheme_admin`, представляющие роли, которые пользователь имеет для данной команды. ##### Разрешения Должен иметь разрешение `manage_system`. __Минимальная версия сервера__: 5.14 operationId: TeamMembersMinusGroupMembers parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: group_ids in: query description: Список id групп, разделенных запятыми. required: true schema: type: string default: "" - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: Количество пользователей на странице. schema: type: integer default: 0 responses: "200": description: > Успешно возвращает пользователей, указанных пагинацией, и общее количество. "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" x-codeSamples: - lang: curl source: | curl 'https://time-url.domain/api/v4/teams/fcnst115y3y7xmzzp5uq34u8ce/members_minus_group_members?group_ids=eoezijg8zffgjmch8icy5bjd1e,ugaw6wjc3tfxpcr1eq5u5k8dhe&page=0&per_page=100' \ -H 'Authorization: Bearer mq8rrfxpdfyafbnw3qfmhwkx6c' \ -H 'Content-Type: application/json' \ -H 'X-Requested-With: XMLHttpRequest' /teams/invites/revoke/emails: post: tags: - Teams summary: Отозвать приглашения по электронной почте description: | Отозвать приглашения по указанным электронным адресам, которые не были приняты пользователями. ##### Разрешения Должен иметь разрешение `sysconsole_write_authentication_email`. operationId: InvalidateEmailsInvites requestBody: content: application/json: schema: type: array items: type: string description: Список электронных адресов required: true responses: "200": description: Приглашения по электронной почте успешно отозваны content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /teams/{team_id}/default_channels: put: tags: - Teams summary: Изменить каналы по умолчанию description: > Изменить каналы по умолчанию для команды. Максимальное количество каналов по умолчанию для команды без учёта primary канала - 5 ### Разрешения Должен иметь разрешение `modify_default_channels` operationId: ModifyDefaultChannels requestBody: content: application/json: schema: type: array items: type: string description: Список id каналов required: true responses: "200": description: Каналы по умолчанию успешно изменены content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" x-codeSamples: - lang: curl source: | curl 'https://time-url.domain/api/v4/teams/fcnst115y3y7xmzzp5uq34u8ce/default_channels' \ -H 'Authorization: Bearer mq8rrfxpdfyafbnw3qfmhwkx6c' \ -H 'Content-Type: application/json' \ -d '["qjda3stwafbgpqjaxej3k76sga","frn8fu5rtpyc5m4xy6q3oj4yur"]' /channels: get: tags: - Channels summary: Получить список всех каналов description: | ##### Разрешения `manage_system` operationId: GetAllChannels parameters: - name: not_associated_to_group in: query description: > ID группы для исключения каналов, связанных с этой группой через записи GroupChannel. Это также может быть оставлено пустым с `not_associated_to_group=`. schema: type: string - name: page in: query schema: type: integer default: 0 - name: per_page in: query schema: type: integer default: 0 - name: include_deleted in: query description: > Включить каналы, которые были архивированы. Это соответствует установке флага `DeleteAt` в базе данных. schema: type: boolean default: false - name: include_total_count in: query description: 'Добавляет общее количество возвращенных каналов в объект ответа - например: `{ "channels": [], "total_count" : 0 }`.' schema: type: boolean default: false - name: exclude_policy_constrained in: query schema: type: boolean default: false description: >- Если установлено в true, каналы, которые являются частью политики сохранения данных, будут исключены. Для использования этого параметра требуется разрешение `sysconsole_read_compliance`. __Минимальная версия сервера__: 5.35 responses: "200": description: Успешное получение списка каналов content: application/json: schema: $ref: "#/components/schemas/ChannelListWithTeamData" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" post: tags: - Channels summary: Создать канал description: > Создать новый канал. ##### Разрешения Если создается публичный канал, требуется разрешение `create_public_channel`. Если создается частный канал, требуется разрешение `create_private_channel`. operationId: CreateChannel requestBody: content: application/json: schema: type: object required: - name - display_name - type - team_id properties: team_id: type: string description: | ID команды, на которой создается канал name: type: string description: > Уникальный идентификатор канала, будет присутствовать в URL канала display_name: type: string description: Неуникальное имя для отображения канала purpose: type: string description: | Краткое описание цели канала header: type: string description: | Текст в формате Markdown для отображения в заголовке канала type: $ref: "#/components/schemas/NewChannelType" description: | 'O' для публичного канала, 'P' для частного канала description: Объект канала, который будет создан required: true responses: "201": description: Успешное создание канала content: application/json: schema: $ref: "#/components/schemas/Channel" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" delete: tags: - Channels summary: Удалить каналы description: > Архивирует канал. Это установит `deleteAt` на текущее время в базе данных. Мягко удаленные каналы могут быть недоступны в пользовательском интерфейсе. Они могут быть просмотрены и восстановлены в **Системной консоли > Управление пользователями > Каналы** в зависимости от вашей лицензии. Прямые и групповые каналы сообщений не могут быть удалены. ##### Разрешения Разрешение `delete_public_channel`, если канал публичный, разрешение `delete_private_channel`, если канал частный, или иметь разрешение `manage_system`. operationId: DeleteChannels requestBody: content: application/json: schema: type: array items: type: string minItems: 1 maxItems: 100 description: ID каналов, которые будут удалены required: true responses: "200": description: Успешное удаление канала content: application/json: schema: $ref: "#/components/schemas/IDWithErrorList" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /channels/direct: post: tags: - Channels summary: Создать канал для личных сообщений description: > Создать новый канал для личных сообщений между двумя пользователями. ##### Разрешения Должен быть одним из двух пользователей и иметь разрешение `create_direct_channel`. Наличие разрешения `manage_system` аннулирует предыдущие требования. operationId: CreateDirectChannel requestBody: content: application/json: schema: type: array items: type: string minItems: 2 maxItems: 2 description: Два идентификатора пользователей для личного сообщения required: true responses: "201": description: Успешное создание канала для личных сообщений content: application/json: schema: $ref: "#/components/schemas/Channel" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /channels/direct/{channel_id}/close: post: tags: - Channels summary: Закрыть DM или GM чат description: > При получении сайдбар категорий, канал больше не будет отображаться если его не открыть заново. Дополнительно, рассылается веб-сокет событие `sidebar_category_updated`, которое содержит в себе список обновленных категорий __Минимальная версия сервера__: 6.273 operationId: CloseDirectChannel parameters: - name: channel_id in: path description: ID канала required: true schema: type: string responses: "200": description: Успешное закрытие канала content: application/json: schema: type: array items: $ref: "#/components/schemas/SidebarCategoryWithChannels" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /channels/group: post: tags: - Channels summary: Создать канал для групповых сообщений description: > Создать новый канал для групповых сообщений для группы пользователей. Если идентификатор вошедшего в систему пользователя не включен в список, он будет добавлен в конец. ##### Разрешения Необходимо иметь разрешение `create_group_channel`. operationId: CreateGroupChannel requestBody: content: application/json: schema: type: array items: type: string description: Идентификаторы пользователей для канала групповых сообщений required: true responses: "201": description: Успешное создание канала для групповых сообщений content: application/json: schema: $ref: "#/components/schemas/Channel" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /channels/search: post: tags: - Channels summary: Поиск всех приватных и открытых каналов во всех командах description: > Возвращает все приватные и открытые каналы, где 'term' совпадает с именем, отображаемым именем или целью канала. Каналы, связанные (через записи GroupChannel) с данной группой, могут быть исключены из результатов с помощью параметра `not_associated_to_group` и строки идентификатора группы. operationId: SearchAllChannels parameters: - name: system_console in: query description: > Является ли запрос из system_console. Если установлено значение true, фильтрует каналы по вошедшему в систему пользователю. required: false schema: type: boolean default: true - name: boost in: query description: > Если установлено значение true, каналы, посещенные пользователем, размещаются в начале [0; boost_limit) ответа поиска, а другие каналы размещаются в [boost_limit; search_limit). Сейчас boost_limit == search_limit, мы пытаемся повысить все каналы, если можем. __Минимальная версия сервера__: 6.56 required: false schema: type: boolean default: false requestBody: content: application/json: schema: type: object required: - term properties: term: type: string description: | Строка для поиска в имени канала, отображаемом имени и цели. not_associated_to_group: type: string description: > Идентификатор группы для исключения каналов, связанных с этой группой через записи GroupChannel. team_ids: type: array items: type: string description: > Фильтрует результаты для каналов, принадлежащих указанным идентификаторам команд. __Минимальная версия сервера__: 5.26 group_constrained: type: boolean description: > Фильтрует результаты, чтобы возвращать только каналы, ограниченные группой. __Минимальная версия сервера__: 5.26 exclude_group_constrained: type: boolean description: > Фильтрует результаты, чтобы исключить каналы, ограниченные группой. __Минимальная версия сервера__: 5.26 public: type: boolean description: > Фильтрует результаты, чтобы возвращать только публичные / открытые каналы, может использоваться вместе с `private` для возврата как `public`, так и `private` каналов. __Минимальная версия сервера__: 5.26 private: type: boolean description: > Фильтрует результаты, чтобы возвращать только приватные каналы, может использоваться вместе с `public` для возврата как `private`, так и `public` каналов. __Минимальная версия сервера__: 5.26 deleted: type: boolean description: > Фильтрует результаты, чтобы возвращать только удаленные / архивированные каналы. __Минимальная версия сервера__: 5.26 page: type: string description: > Номер страницы для возврата, если используется пагинация. Если этот параметр отсутствует вместе с параметром `per_page`, то результаты будут возвращены без пагинации. per_page: type: string description: > Количество записей для возврата на странице, если используется пагинация. Если этот параметр отсутствует вместе с параметром `page`, то результаты будут возвращены без пагинации. exclude_policy_constrained: type: boolean default: false description: > Если установлено значение true, будут возвращены только каналы, к которым не применена детализированная политика хранения. Для использования этого параметра требуется разрешение `sysconsole_read_compliance_data_retention`. __Минимальная версия сервера__: 5.35 include_search_by_id: type: boolean default: false description: > Если установлено значение true, возвращает каналы, где указанный поисковый 'term' совпадает с идентификатором канала. __Минимальная версия сервера__: 5.35 description: Поисковые термины и логика для использования в поиске. required: true responses: "200": description: Успешный поиск каналов (WithBoost) content: application/json: schema: $ref: "#/components/schemas/ChannelListWithTeamData" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" /channels/group/search: post: tags: - Channels summary: Поиск групповых каналов description: > Получить список групповых каналов для пользователя, чьи имена пользователей участников совпадают с поисковым термином. __Минимальная версия сервера__: 5.14 operationId: SearchGroupChannels requestBody: content: application/json: schema: type: object required: - term properties: term: description: > Поисковый термин для сопоставления с именами пользователей участников групповых каналов. type: string description: Критерии поиска required: true responses: "200": description: Успешный поиск каналов content: application/json: schema: type: array items: $ref: "#/components/schemas/Channel" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" /teams/{team_id}/channels/ids: post: tags: - Channels summary: Получить список каналов по идентификаторам description: | Получить список публичных каналов в команде по идентификаторам. ##### Разрешения `view_team` для команды, в которой находятся каналы. operationId: GetPublicChannelsByIdsForTeam parameters: - name: team_id in: path description: GUID команды required: true schema: type: string requestBody: content: application/json: schema: type: array items: type: string description: Список идентификаторов каналов required: true responses: "200": description: Успешное получение списка каналов content: application/json: schema: type: array items: $ref: "#/components/schemas/Channel" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" /teams/{team_id}/channels/names: post: tags: - Channels summary: Получить список каналов по именам description: | Получить список публичных каналов в команде по именам. ##### Разрешения `view_team` для команды, в которой находятся каналы. operationId: GetPublicChannelsByNamesForTeam parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: include_deleted in: query description: Включить удаленные каналы required: false schema: type: boolean default: false requestBody: content: application/json: schema: type: array items: type: string description: Список имен каналов required: true responses: "200": description: Успешное получение списка каналов content: application/json: schema: type: array items: $ref: "#/components/schemas/Channel" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" /channels/{channel_id}/timezones: get: tags: - Channels summary: Получить часовые пояса в канале description: > Получить список часовых поясов для пользователей, находящихся в этом канале. __Минимальная версия сервера__: 5.6 ##### Разрешения Необходимо иметь разрешение `read_channel`. operationId: GetChannelMembersTimezones parameters: - name: channel_id in: path description: GUID канала required: true schema: type: string responses: "200": description: Успешное получение часовых поясов content: application/json: schema: type: array items: type: string "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /channels/{channel_id}: get: tags: - Channels summary: Получить канал description: | Получить канал по предоставленному идентификатору канала. ##### Разрешения Разрешение `read_channel` для канала. operationId: GetChannel parameters: - name: channel_id in: path description: GUID канала required: true schema: type: string responses: "200": description: Успешное получение канала content: application/json: schema: $ref: "#/components/schemas/Channel" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" put: tags: - Channels summary: Обновить канал description: > Обновить канал. Поля, которые можно обновить, перечислены в качестве параметров. Пропущенные поля будут рассматриваться как пустые. ##### Разрешения Если обновляется публичный канал, требуется разрешение `manage_public_channel_members`. Если обновляется приватный канал, требуется разрешение `manage_private_channel_members`. operationId: UpdateChannel parameters: - name: channel_id in: path description: GUID канала required: true schema: type: string requestBody: content: application/json: schema: type: object required: - id properties: id: type: string description: Идентификатор канала, не подлежит обновлению name: type: string description: > Уникальный идентификатор для канала, будет присутствовать в URL канала display_name: type: string description: Неуникальное имя для отображения канала в UI purpose: type: string description: | Краткое описание цели канала header: type: string description: | Текст в формате Markdown для отображения в заголовке канала description: Объект канала для обновления required: true responses: "200": description: Успешное обновление канала content: application/json: schema: $ref: "#/components/schemas/Channel" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" delete: tags: - Channels summary: Удалить канал description: > Архивирует канал. Это установит `deleteAt` на текущее время в базе данных. Мягко удаленные каналы могут быть недоступны в пользовательском интерфейсе. Они могут быть просмотрены и восстановлены в **Консоль системы > Управление пользователями > Каналы** в зависимости от вашей лицензии. Каналы личных и групповых сообщений не могут быть удалены. Начиная с версии сервера 5.28, можно использовать параметр запроса `permanent=true` для окончательного удаления канала по причинам соответствия. Для использования этой функции `ServiceSettings.EnableAPIChannelDeletion` должен быть установлен в `true` в конфигурации сервера. Если вы окончательно удалите канал, это действие не может быть восстановлено за пределами резервной копии базы данных. ##### Разрешения Разрешение `delete_public_channel`, если канал является публичным, Разрешение `delete_private_channel`, если канал является приватным, или иметь разрешение `manage_system`. operationId: DeleteChannel parameters: - name: channel_id in: path description: GUID канала required: true schema: type: string responses: "200": description: Успешное удаление канала content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /channels/{channel_id}/patch: put: tags: - Channels summary: Частичное обновление канала description: > Частично обновите канал, указав только те поля, которые вы хотите обновить. Пропущенные поля не будут обновлены. Поля, которые можно обновить, определены в теле запроса, все остальные предоставленные поля будут проигнорированы. ##### Разрешения Если обновляется публичный канал, требуется разрешение `manage_public_channel_members`. Если обновляется приватный канал, требуется разрешение `manage_private_channel_members`. operationId: PatchChannel parameters: - name: channel_id in: path description: GUID канала required: true schema: type: string requestBody: content: application/json: schema: type: object properties: name: type: string description: > Уникальный идентификатор для канала, будет присутствовать в URL канала display_name: type: string description: Неуникальное имя для отображения канала в UI purpose: type: string description: Краткое описание цели канала header: type: string description: | Текст в формате Markdown для отображения в заголовке канала description: Объект канала для обновления required: true responses: "200": description: Успешное частичное обновление канала content: application/json: schema: $ref: "#/components/schemas/Channel" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /channels/{channel_id}/privacy: put: tags: - Channels summary: Обновить конфиденциальность канала description: > Обновляет конфиденциальность канала, позволяя изменять канал с публичного на приватный и обратно. __Минимальная версия сервера__: 5.16 ##### Разрешения Разрешение `manage_team` для команды канала на версии < 5.28. Разрешение `convert_public_channel_to_private` для канала, если обновляется конфиденциальность на 'P' на версии >= 5.28. Разрешение `convert_private_channel_to_public` для канала, если обновляется конфиденциальность на 'O' на версии >= 5.28. operationId: UpdateChannelPrivacy parameters: - name: channel_id in: path description: GUID канала required: true schema: type: string requestBody: content: application/json: schema: type: object required: - privacy properties: privacy: type: string description: > Настройка конфиденциальности канала: 'O' для публичного канала, 'P' для приватного канала required: true responses: "200": description: Успешное преобразование канала content: application/json: schema: $ref: "#/components/schemas/Channel" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /channels/{channel_id}/transform: post: tags: - Channels summary: Преобразовать групповой канал в приватный канал description: | Преобразует групповой канал в приватный канал __Минимальная версия сервера__: 5.16 ##### Разрешения Требуется разрешение `create_private_channel`. operationId: TransformChannel parameters: - name: channel_id in: path description: GUID канала required: true schema: type: string requestBody: content: application/json: schema: type: object required: - team_id - name - display_name properties: team_id: type: string description: GUID команды name: type: string description: > Уникальный идентификатор для канала, будет присутствовать в URL канала display_name: type: string description: Неуникальное имя для отображения канала в UI required: true responses: "200": description: Успешное преобразование канала content: application/json: schema: $ref: "#/components/schemas/Channel" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /channels/{channel_id}/restore: post: tags: - Channels summary: Восстановить канал description: | Восстановить канал по предоставленному идентификатору канала. __Минимальная версия сервера__: 3.10 ##### Разрешения Разрешение `manage_team` для команды канала. operationId: RestoreChannel parameters: - name: channel_id in: path description: GUID канала required: true schema: type: string responses: "200": description: Успешное восстановление канала content: application/json: schema: $ref: "#/components/schemas/Channel" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /channels/{channel_id}/move: post: tags: - Channels summary: Переместить канал description: | Переместить канал в другую команду. В случае достаточных разрешений канал будет перемещен в новую команду. Все рабочие процессы будут перенесены вместе с каналом. Напоминания и отложенные сообщения не будут доставлены, если они были созданы кем-то, кто не является членом новой команды. __Минимальная версия сервера__: 5.26 ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: MoveChannel parameters: - name: channel_id in: path description: GUID канала required: true schema: type: string requestBody: content: application/json: schema: type: object required: - team_id properties: team_id: type: string force: description: > Удалить участников, которые не являются членами целевой команды перед перемещением канала. type: boolean required: true responses: "200": description: Успешное перемещение канала content: application/json: schema: $ref: "#/components/schemas/Channel" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /channels/{channel_id}/stats: get: tags: - Channels summary: Получить статистику канала description: | Получить статистику для канала. ##### Разрешения Необходимо иметь разрешение `read_channel`. operationId: GetChannelStats parameters: - name: channel_id in: path description: GUID канала required: true schema: type: string responses: "200": description: Успешное получение статистики канала content: application/json: schema: $ref: "#/components/schemas/ChannelStats" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /teams/{team_id}/channels: get: tags: - Channels summary: Получить публичные каналы description: > Получить страницу публичных каналов в команде на основе параметров строки запроса - page и per_page. ##### Разрешения Необходимо быть аутентифицированным и иметь разрешение `list_team_channels`. operationId: GetPublicChannelsForTeam parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: page in: query description: Выбираемая страница. schema: type: integer default: 0 - name: per_page in: query description: Количество публичных каналов на странице. schema: type: integer default: 60 responses: "200": description: Успешное получение каналов content: application/json: schema: type: array items: $ref: "#/components/schemas/Channel" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /teams/{team_id}/channels/private: get: tags: - Channels summary: Получить приватные каналы description: | Получить страницу приватных каналов в команде на основе параметров строки запроса - team_id, page и per_page. __Минимальная версия сервера__: 5.26 ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: GetPrivateChannelsForTeam parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: page in: query description: Выбираемая страница. schema: type: integer default: 0 - name: per_page in: query description: Количество приватных каналов на странице. schema: type: integer default: 60 responses: "200": description: Успешное получение каналов content: application/json: schema: type: array items: $ref: "#/components/schemas/Channel" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /teams/{team_id}/channels/deleted: get: tags: - Channels summary: Получить удаленные каналы description: > Получить страницу удаленных каналов в команде на основе параметров строки запроса - team_id, page и per_page. __Минимальная версия сервера__: 3.10 operationId: GetDeletedChannelsForTeam parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: page in: query description: Выбираемая страница. schema: type: integer default: 0 - name: per_page in: query description: Количество публичных каналов на странице. schema: type: integer default: 60 responses: "200": description: Успешное получение каналов content: application/json: schema: type: array items: $ref: "#/components/schemas/Channel" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /teams/{team_id}/channels/primary: get: tags: - Channels summary: Получить основной канал description: > Основной канал в команде на основе параметров строки запроса. Основной канал - это канал, в который пользователь присоединяется впервые. ##### Разрешения Необходимо иметь разрешение `view_team` для команды. operationId: GetPrimaryChannelForTeam parameters: - name: team_id in: path description: GUID команды required: true schema: type: string responses: "200": description: Успешное получение основного канала content: application/json: schema: $ref: "#/components/schemas/Channel" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /teams/{team_id}/channels/autocomplete: get: tags: - Channels summary: Автозаполнение каналов description: > Автозаполнение публичных каналов в команде на основе поискового термина, указанного в URL запроса. __Минимальная версия сервера__: 4.7 ##### Разрешения Необходимо быть членом команды. Результаты поиска ограничены каналами, к которым пользователь имеет доступ. operationId: AutocompleteChannelsForTeam parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: name in: query description: Имя или отображаемое имя required: true schema: type: string - name: channel_types in: query description: | Массив типов каналов. Тип канала - одно из возможных значений: 'G'-групповой канал, 'P'-приватный канал, 'O'-открытый канал schema: type: array items: $ref: "#/components/schemas/ChannelTypeForTeam" - name: archived in: query description: > Если установлено значение true, результат будет содержать только архивированные каналы. Если установлено значение false, результат будет содержать только неархивированные каналы. Если не установлено, результат будет содержать как архивированные, так и неархивированные каналы. required: false schema: type: boolean - name: boost in: query description: > Если установлено значение true, каналы, посещенные пользователем, размещаются в начале [0; boost_limit) ответа поиска. Сейчас boost_limit == search_limit. required: false schema: type: boolean default: false responses: "200": description: Успешное автозаполнение каналов content: application/json: schema: $ref: "#/components/schemas/ChannelList" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" /teams/{team_id}/channels/search_autocomplete: get: tags: - Channels summary: Автозаполнение каналов для поиска description: > Автозаполнение ваших каналов в команде на основе поискового термина, указанного в URL запроса. __Минимальная версия сервера__: 5.4 ##### Разрешения Необходимо быть членом команды. Результаты поиска ограничены каналами, к которым пользователь имеет доступ. operationId: AutocompleteChannelsForTeamForSearch parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: name in: query description: Имя или отображаемое имя required: true schema: type: string responses: "200": description: Успешное автозаполнение каналов content: application/json: schema: type: array items: $ref: "#/components/schemas/Channel" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /teams/{team_id}/channels/search: post: tags: - Channels summary: Поиск каналов description: > Поиск публичных каналов в команде на основе поискового термина, указанного в теле запроса. ##### Разрешения Необходимо иметь разрешение `list_team_channels`. В версии сервера 5.16 и позже пользователь без разрешения `list_team_channels` сможет использовать эту конечную точку, с ограничением результатов поиска каналами, членом которых является пользователь. operationId: SearchChannels parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: name in: query description: Имя или отображаемое имя required: true schema: type: string - name: boost in: query description: > Если установлено значение true, каналы, посещенные пользователем, размещаются в начале [0; boost_limit) ответа поиска. Сейчас boost_limit == search_limit. __Минимальная версия сервера__: 6.56 required: false schema: type: boolean default: false requestBody: content: application/json: schema: type: object required: - term properties: term: description: > Поисковый термин для сопоставления с именем или отображаемым именем каналов type: string description: Критерии поиска required: true responses: "200": description: Успешный поиск каналов content: application/json: schema: type: array items: $ref: "#/components/schemas/Channel" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /teams/{team_id}/channels/search_archived: post: tags: - Channels summary: Поиск архивированных каналов description: > Поиск архивированных каналов в команде на основе поискового термина, указанного в теле запроса. __Минимальная версия сервера__: 5.18 ##### Разрешения Необходимо иметь разрешение `list_team_channels`. В версии сервера 5.18 и позже пользователь без разрешения `list_team_channels` сможет использовать эту конечную точку, с ограничением результатов поиска каналами, членом которых является пользователь. operationId: SearchArchivedChannels parameters: - name: team_id in: path description: GUID команды required: true schema: type: string requestBody: content: application/json: schema: type: object required: - term properties: term: description: > Поисковый термин для сопоставления с именем или отображаемым именем архивированных каналов type: string description: Критерии поиска required: true responses: "201": description: Успешный поиск каналов content: application/json: schema: type: array items: $ref: "#/components/schemas/Channel" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /teams/{team_id}/channels/name/{channel_name}: get: tags: - Channels summary: Получить канал по имени description: > Получить канал по предоставленным строкам идентификатора команды и имени канала. ##### Разрешения Разрешение `read_channel` для канала. operationId: GetChannelByName parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: channel_name in: path description: Имя канала required: true schema: type: string - name: include_deleted in: query description: Определяет, следует ли возвращать удаленные каналы schema: type: boolean default: false responses: "200": description: Успешное получение канала content: application/json: schema: $ref: "#/components/schemas/Channel" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /teams/name/{team_name}/channels/name/{channel_name}: get: tags: - Channels summary: Получить канал по имени и имени команды description: | Получить канал по предоставленным строкам имени команды и имени канала. ##### Разрешения Разрешение `read_channel` для канала. operationId: GetChannelByNameForTeamName parameters: - name: team_name in: path description: Имя команды required: true schema: type: string - name: channel_name in: path description: Имя канала required: true schema: type: string - name: include_deleted in: query description: Определяет, следует ли возвращать удаленные каналы schema: type: boolean default: false responses: "200": description: Успешное получение канала content: application/json: schema: $ref: "#/components/schemas/Channel" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /channels/{channel_id}/members: get: tags: - Channels summary: Получить участников канала description: | Получить страницу участников канала. ##### Разрешения Разрешение `read_channel` для канала. operationId: GetChannelMembers parameters: - name: channel_id in: path description: GUID канала required: true schema: type: string - name: page in: query description: Выбираемая страница. schema: type: integer default: 0 - name: per_page in: query description: > Количество участников на странице. Максимальное ограничение - 200 участников. schema: type: integer default: 60 responses: "200": description: Успешное получение участников канала content: application/json: schema: type: array items: $ref: "#/components/schemas/ChannelMember" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" post: tags: - Channels summary: Добавить пользователя в канал description: Добавить пользователя в канал, создав объект участника канала. operationId: AddChannelMember parameters: - name: channel_id in: path description: Идентификатор канала required: true schema: type: string requestBody: content: application/json: schema: type: object required: - user_id properties: user_id: type: string description: Идентификатор пользователя для добавления в канал post_root_id: type: string description: > Идентификатор корневого сообщения, откуда исходит ссылка на добавление участника канала required: true responses: "201": description: Успешное создание участника канала content: application/json: schema: $ref: "#/components/schemas/ChannelMember" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /channels/{channel_id}/members/batch: post: tags: - Channels summary: Добавить нескольких пользователей в канал description: > Добавляет нескольких пользователей в канал, создавая объекты участников канала. Список идентификаторов пользователей должен быть предоставлен в теле запроса. ##### Разрешения В зависимости от типа канала: - Для публичных каналов пользователь должен иметь разрешение `manage_public_channel_members`. - Для приватных каналов пользователь должен иметь разрешение `manage_private_channel_members`. operationId: AddChannelMembers parameters: - name: post_root_id in: query description: > Идентификатор корневого сообщения, откуда исходит ссылка на добавление участника канала required: false schema: type: string - name: channel_id in: path description: Идентификатор канала required: true schema: type: string requestBody: content: application/json: schema: type: array items: type: string minItems: 1 maxItems: 256 required: true responses: "201": description: Успешное создание участников канала content: application/json: schema: type: array items: $ref: "#/components/schemas/ChannelMemberWithError" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /channels/{channel_id}/members/ids: post: tags: - Channels summary: Получить участников канала по идентификаторам description: > Получить список участников канала на основе предоставленных идентификаторов пользователей. ##### Разрешения Необходимо иметь разрешение `read_channel`. operationId: GetChannelMembersByIds parameters: - name: channel_id in: path description: GUID канала required: true schema: type: string requestBody: content: application/json: schema: type: array items: type: string description: Список идентификаторов пользователей required: true responses: "200": description: Успешное получение списка участников канала content: application/json: schema: type: array items: $ref: "#/components/schemas/ChannelMember" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /channels/{channel_id}/members/{user_id}: get: tags: - Channels summary: Получить участника канала description: | Получить участника канала. ##### Разрешения Разрешение `read_channel` для канала. operationId: GetChannelMember parameters: - name: channel_id in: path description: GUID канала required: true schema: type: string - name: user_id in: path description: GUID пользователя required: true schema: type: string responses: "200": description: Успешное получение участника канала content: application/json: schema: $ref: "#/components/schemas/ChannelMember" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" delete: tags: - Channels summary: Удалить пользователя из канала description: > Удалить участника канала, фактически удалив его из канала. В версии сервера 5.3 и позже участники канала могут быть удалены только из публичных или приватных каналов. ##### Разрешения Разрешение `manage_public_channel_members`, если канал является публичным. Разрешение `manage_private_channel_members`, если канал является приватным. operationId: RemoveUserFromChannel parameters: - name: channel_id in: path description: GUID канала required: true schema: type: string - name: user_id in: path description: GUID пользователя required: true schema: type: string responses: "200": description: Успешное удаление участника канала content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /channels/{channel_id}/members/{user_id}/roles: put: tags: - Channels summary: Обновить роли канала description: > Обновить роли пользователя для канала. Обычно это должно быть либо `channel_user` для обычного участника канала, либо `channel_admin channel_user` для администратора канала. ##### Разрешения Необходимо иметь разрешение `manage_channel_roles` для канала. operationId: UpdateChannelRoles parameters: - name: channel_id in: path description: GUID канала required: true schema: type: string - name: user_id in: path description: GUID пользователя required: true schema: type: string requestBody: content: application/json: schema: type: object required: - roles properties: roles: type: string description: Роли канала, разделенные пробелами, для назначения пользователю required: true responses: "200": description: Успешное обновление ролей канала content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /channels/{channel_id}/members/{user_id}/schemeRoles: put: tags: - Channels summary: Обновить роли участника канала, определенные схемой. description: > Обновите свойства scheme_admin/scheme_user участника канала. Обычно это должно быть `scheme_admin=false, scheme_user=true` для обычного участника канала, или `scheme_admin=true, scheme_user=true` для администратора канала, или `scheme_guest=true` для гостя канала. __Минимальная версия сервера__: 5.0 ##### Разрешения Необходимо быть аутентифицированным и иметь разрешение `manage_channel_roles`. operationId: UpdateChannelMemberSchemeRoles parameters: - name: channel_id in: path description: GUID канала required: true schema: type: string - name: user_id in: path description: GUID пользователя required: true schema: type: string requestBody: content: application/json: schema: type: object properties: scheme_admin: type: boolean scheme_user: type: boolean scheme_guest: type: boolean description: Свойства схемы. required: true responses: "200": description: | Роли участника канала, определенные схемой, успешно обновлены. content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /channels/{channel_id}/members/{user_id}/notify_props: put: tags: - Channels summary: Обновить уведомления канала description: > Обновите свойства уведомлений пользователя для канала. Обновляются только предоставленные поля. ##### Разрешения Необходимо войти в систему как пользователь или иметь разрешение `edit_other_users`. operationId: UpdateChannelNotifyProps parameters: - name: channel_id in: path description: GUID канала required: true schema: type: string - name: user_id in: path description: GUID пользователя required: true schema: type: string requestBody: content: application/json: schema: $ref: "#/components/schemas/ChannelNotifyProps" required: true responses: "200": description: Успешное обновление свойств уведомлений канала content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /channels/members/{user_id}/view: post: tags: - Channels summary: Просмотр канала description: > Выполните все действия, связанные с просмотром канала. Это включает пометку каналов как прочитанных, очистку push-уведомлений и обновление активного канала. ##### Разрешения Необходимо войти в систему как пользователь или иметь разрешение `edit_other_users`. __Ответ включает только `last_viewed_at_times`.__ operationId: ViewChannel parameters: - in: path name: user_id description: Идентификатор пользователя для выполнения действия просмотра required: true schema: type: string requestBody: content: application/json: schema: type: object required: - channel_id properties: channel_id: type: string description: > Идентификатор канала, который просматривается. Используйте пустую строку, чтобы указать, что все каналы потеряли фокус. prev_channel_id: type: string description: > Идентификатор предыдущего канала, используется при переключении каналов. Предоставление этого идентификатора приведет к очистке push-уведомлений на канале, на который переключаются. collapsed_threads_supported: type: boolean default: false description: Параметры, влияющие на то, как и какие каналы просматривать required: true responses: "200": description: Успешный просмотр канала content: application/json: schema: type: object properties: status: type: string description: Значение должно быть "OK", если успешно last_viewed_at_times: type: object description: > JSON-объект, сопоставляющий идентификаторы каналов с временем просмотра канала "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/{user_id}/teams/{team_id}/channels/members: get: tags: - Channels summary: Получить членство и роли в канале для пользователя description: > Получите все членства в каналах и связанные с ними роли членства (например, `channel_user`, `channel_admin`) для пользователя в конкретной команде. ##### Разрешения Войти в систему как пользователь и иметь разрешение `view_team` для команды. Наличие разрешения `manage_system` аннулирует предыдущие требования. operationId: GetChannelMembersForUser parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string - name: team_id in: path description: GUID команды required: true schema: type: string responses: "200": description: Успешное получение участников канала content: application/json: schema: type: array items: $ref: "#/components/schemas/ChannelMember" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/{user_id}/teams/{team_id}/channels: get: tags: - Channels summary: Получить каналы для пользователя description: > Получите все каналы в команде для пользователя. ##### Разрешения Войти в систему как пользователь или иметь разрешение `edit_other_users`, и разрешение `view_team` для команды. operationId: GetChannelsForTeamForUser parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string - name: team_id in: path description: GUID команды required: true schema: type: string - name: include_deleted in: query description: Определяет, следует ли возвращать удаленные каналы schema: type: boolean default: false - name: last_delete_at in: query description: > Фильтрует удаленные каналы по этому времени в формате эпохи. Не имеет никакого эффекта, если include_deleted установлено в false. schema: type: integer default: 0 responses: "200": description: Успешное получение каналов content: application/json: schema: type: array items: $ref: "#/components/schemas/Channel" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /users/{user_id}/channels: get: tags: - Channels summary: Получить все каналы из всех команд description: > Получите все каналы из всех команд, в которых пользователь является участником. __Минимальная версия сервера__: 6.1 ##### Разрешения Войти в систему как пользователь или иметь разрешение `edit_other_users`. operationId: GetChannelsForUser parameters: - name: user_id in: path description: > Идентификатор пользователя. Это также может быть "me", что будет указывать на текущего пользователя. required: true schema: type: string - name: last_delete_at in: query description: > Фильтрует удаленные каналы по этому времени в формате эпохи. Не имеет никакого эффекта, если include_deleted установлено в false. schema: type: integer default: 0 - name: include_deleted in: query description: Определяет, следует ли возвращать удаленные каналы schema: type: boolean default: false responses: "200": description: Успешное получение каналов content: application/json: schema: type: array items: $ref: "#/components/schemas/Channel" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" x-codeSamples: - lang: Curl source: | curl -X GET 'http://localhost:8065/api/v4/users/fc6suoon9pbbpmhrb9c967paxe/channels' \ -H 'Authorization: Bearer 9kg8nqrnxprd9jbykqeg4r51hw' /users/{user_id}/channels/{channel_id}/unread: get: tags: - Channels summary: Получить непрочитанные сообщения description: > Получите общее количество непрочитанных сообщений и упоминаний для канала для пользователя. ##### Разрешения Необходимо войти в систему как пользователь и иметь разрешение `read_channel`, или иметь разрешение `edit_other_users`. operationId: GetChannelUnread parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string - name: channel_id in: path description: GUID канала required: true schema: type: string responses: "200": description: Успешное получение непрочитанных сообщений канала content: application/json: schema: $ref: "#/components/schemas/ChannelUnread" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /channels/{channel_id}/scheme: put: tags: - Channels summary: Установить схему канала description: > Установите схему канала, более конкретно установите значение scheme_id записи канала. ##### Разрешения Необходимо иметь разрешение `manage_system`. __Минимальная версия сервера__: 4.10 operationId: UpdateChannelScheme parameters: - name: channel_id in: path description: GUID канала required: true schema: type: string requestBody: content: application/json: schema: type: object required: - scheme_id properties: scheme_id: type: string description: Идентификатор схемы. description: GUID схемы required: true responses: "200": description: Успешное обновление схемы канала content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" x-codeSamples: - lang: curl source: > curl -X PUT \ https://time-url.domain/api/v4/channels/4xp9fdt77pncbef59f4k1qe83o/scheme \ -H 'Authorization: Bearer frn8fu5rtpyc5m4xy6q3oj4yur' \ -H 'Content-Type: application/json' \ -d '{"scheme_id": "qjda3stwafbgpqjaxej3k76sga"}' /channels/{channel_id}/members_minus_group_members: get: tags: - Channels summary: Участники канала за вычетом участников группы. description: > Получите набор пользователей, которые являются участниками канала, за вычетом набора пользователей, которые являются участниками указанных групп. Каждый объект пользователя содержит массив объектов группы, представляющих членство в группе для этого пользователя. Каждый объект пользователя содержит булевые поля `scheme_guest`, `scheme_user` и `scheme_admin`, представляющие роли, которые пользователь имеет для данного канала. ##### Разрешения Необходимо иметь разрешение `manage_system`. __Минимальная версия сервера__: 5.14 operationId: ChannelMembersMinusGroupMembers parameters: - name: channel_id in: path description: GUID канала required: true schema: type: string - name: group_ids in: query description: Список идентификаторов групп, разделенных запятыми. required: true schema: type: string default: "" - name: page in: query description: Выбираемая страница. schema: type: integer default: 0 - name: per_page in: query description: Количество пользователей на странице. schema: type: integer default: 0 responses: "200": description: > Успешно возвращает пользователей, указанных пагинацией, и общее количество. "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" x-codeSamples: - lang: curl source: > curl -X GET \ 'https://time-url.domain/api/v4/channels/3wyp678obid8pggjmhmhwpah1r/members_minus_group_members?group_ids=eoezijg8zffgjmch8icy5bjd1e,ugaw6wjc3tfxpcr1eq5u5k8dhe&page=0&per_page=100' \ -H 'Authorization: Bearer kno8tcdotpbx3dj1gzcbx9jrqy' \ -H 'Content-Type: application/json' \ -H 'X-Requested-With: XMLHttpRequest' /channels/{channel_id}/member_counts_by_group: get: tags: - Channels summary: > Количество участников канала для каждой группы, в которой есть хотя бы один участник в канале description: > Возвращает набор объектов ChannelMemberCountByGroup, которые содержат `group_id`, `channel_member_count` и `channel_member_timezones_count`. ##### Разрешения Необходимо иметь разрешение `read_channel` для данного канала. __Минимальная версия сервера__: 5.24 operationId: GetChannelMemberCountsByGroup parameters: - name: channel_id in: path description: GUID канала required: true schema: type: string - name: include_timezones in: query description: > Определяет, следует ли возвращать количество часовых поясов участников schema: type: boolean default: false responses: "200": description: > Успешно возвращает количество участников по группам для данного канала. content: application/json: schema: type: array items: $ref: "#/components/schemas/ChannelMemberCountByGroup" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" x-codeSamples: - lang: curl source: > curl -X GET \ 'https://time-url.domain/api/v4/channels/3wyp678obid8pggjmhmhwpah1r/member_counts_by_group?include_timezones=true' \ -H 'Authorization: Bearer kno8tcdotpbx3dj1gzcbx9jrqy' \ -H 'Content-Type: application/json' \ -H 'X-Requested-With: XMLHttpRequest' /channels/{channel_id}/groups/members/counts: post: tags: - Channels summary: > Количество участников канала для переданных групп, в которых есть хотя бы один участник в канале description: > Возвращает набор объектов ChannelMemberCountByGroup, которые содержат `group_id`, `channel_member_count` и `channel_member_timezones_count`. ##### Разрешения Необходимо иметь разрешение `read_channel` для данного канала. operationId: GetChannelMemberCountsByGroupIDs parameters: - name: channel_id in: path description: GUID канала required: true schema: type: string requestBody: content: application/json: schema: type: object required: - group_ids properties: include_timezones: description: > Определяет, следует ли возвращать количество часовых поясов участников type: boolean group_ids: type: array items: type: string responses: "200": description: > Успешно возвращает количество участников по идентификаторам групп для данного канала. content: application/json: schema: type: array items: $ref: "#/components/schemas/ChannelMemberCountByGroup" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /channels/{channel_id}/moderations: get: tags: - Channels summary: Получить информацию о модерации канала. description: | ##### Разрешения Необходимо иметь разрешение `read_channels_moderations`. __Минимальная версия сервера__: 5.22 operationId: GetChannelModerations parameters: - name: channel_id in: path description: GUID канала required: true schema: type: string responses: "200": description: Успешно получено content: application/json: schema: type: array items: $ref: "#/components/schemas/ChannelModeration" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /channels/{channel_id}/moderations/patch: put: tags: - Channels summary: Обновить настройки модерации канала. description: | ##### Разрешения Необходимо иметь разрешение `patch_channels_moderations`. __Минимальная версия сервера__: 5.22 operationId: PatchChannelModerations requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/ChannelModerationPatch" parameters: - name: channel_id in: path description: GUID канала required: true schema: type: string responses: "200": description: Успешно обновлено content: application/json: schema: type: array items: $ref: "#/components/schemas/ChannelModeration" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/{user_id}/teams/{team_id}/channels/categories: get: tags: - Channels summary: Получить категории боковой панели пользователя description: > Получить список категорий боковой панели, которые будут отображаться в боковой панели пользователя на указанной команде, включая список идентификаторов каналов в каждой категории. __Минимальная версия сервера__: 5.26 ##### Разрешения Необходимо быть аутентифицированным и иметь разрешение `list_team_channels`. operationId: GetSidebarCategoriesForTeamForUser parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: user_id in: path description: GUID пользователя required: true schema: type: string responses: "200": description: Успешное получение категорий content: application/json: schema: $ref: "#/components/schemas/OrderedSidebarCategories" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" post: tags: - Channels summary: Создать категорию боковой панели пользователя description: > Создать пользовательскую категорию боковой панели для пользователя на указанной команде. __Минимальная версия сервера__: 5.26 ##### Разрешения Необходимо быть аутентифицированным и иметь разрешение `list_team_channels`. operationId: CreateSidebarCategoryForTeamForUser parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: user_id in: path description: GUID пользователя required: true schema: type: string requestBody: content: application/json: schema: $ref: "#/components/schemas/SidebarCategory" required: true responses: "200": description: Успешное создание категории content: application/json: schema: $ref: "#/components/schemas/SidebarCategory" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" put: tags: - Channels summary: Обновить категории боковой панели пользователя description: > Обновить любое количество категорий боковой панели для пользователя на указанной команде. Это может быть использовано для изменения порядка каналов в этих категориях. __Минимальная версия сервера__: 5.26 ##### Разрешения Необходимо быть аутентифицированным и иметь разрешение `list_team_channels`. operationId: UpdateSidebarCategoriesForTeamForUser parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: user_id in: path description: GUID пользователя required: true schema: type: string requestBody: content: application/json: schema: type: array items: $ref: "#/components/schemas/SidebarCategory" required: true responses: "200": description: Успешное обновление категории content: application/json: schema: $ref: "#/components/schemas/SidebarCategory" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /users/{user_id}/teams/{team_id}/channels/categories/order: get: tags: - Channels summary: Получить порядок категорий боковой панели пользователя description: > Возвращает порядок категорий боковой панели для пользователя на указанной команде в виде массива идентификаторов. __Минимальная версия сервера__: 5.26 ##### Разрешения Необходимо быть аутентифицированным и иметь разрешение `list_team_channels`. operationId: GetSidebarCategoryOrderForTeamForUser parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: user_id in: path description: GUID пользователя required: true schema: type: string responses: "200": description: Успешное получение порядка content: application/json: schema: type: array items: type: string "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" put: tags: - Channels summary: Обновить порядок категорий боковой панели пользователя description: > Обновляет порядок категорий боковой панели для пользователя на указанной команде. Предоставленный массив должен включать идентификаторы всех категорий на команде. __Минимальная версия сервера__: 5.26 ##### Разрешения Необходимо быть аутентифицированным и иметь разрешение `list_team_channels`. operationId: UpdateSidebarCategoryOrderForTeamForUser parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: user_id in: path description: GUID пользователя required: true schema: type: string requestBody: content: application/json: schema: type: array items: type: string required: true responses: "200": description: Успешное обновление порядка content: application/json: schema: type: array items: type: string "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /users/{user_id}/teams/{team_id}/channels/categories/{category_id}: get: tags: - Channels summary: Получить категорию боковой панели description: > Возвращает одну категорию боковой панели для пользователя на указанной команде. __Минимальная версия сервера__: 5.26 ##### Разрешения Необходимо быть аутентифицированным и иметь разрешение `list_team_channels`. operationId: GetSidebarCategoryForTeamForUser parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: user_id in: path description: GUID пользователя required: true schema: type: string - name: category_id in: path description: GUID категории required: true schema: type: string responses: "200": description: Успешное получение категории content: application/json: schema: $ref: "#/components/schemas/SidebarCategoryWithChannels" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" put: tags: - Channels summary: Обновить категорию боковой панели description: > Обновляет одну категорию боковой панели для пользователя на указанной команде. __Минимальная версия сервера__: 5.26 ##### Разрешения Необходимо быть аутентифицированным и иметь разрешение `list_team_channels`. operationId: UpdateSidebarCategoryForTeamForUser parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: user_id in: path description: GUID пользователя required: true schema: type: string - name: category_id in: path description: GUID категории required: true schema: type: string requestBody: content: application/json: schema: $ref: "#/components/schemas/SidebarCategoryWithChannels" required: true responses: "200": description: Успешное обновление категории content: application/json: schema: $ref: "#/components/schemas/SidebarCategoryWithChannels" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" delete: tags: - Channels summary: Удалить категорию боковой панели description: > Удаляет одну категорию боковой панели для пользователя на указанной команде. Только пользовательские категории могут быть удалены. __Минимальная версия сервера__: 5.26 ##### Разрешения Необходимо быть аутентифицированным и иметь разрешение `list_team_channels`. operationId: RemoveSidebarCategoryForTeamForUser parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: user_id in: path description: GUID пользователя required: true schema: type: string - name: category_id in: path description: GUID категории required: true schema: type: string responses: "200": description: Успешное удаление категории content: application/json: schema: $ref: "#/components/schemas/SidebarCategory" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /teams/{team_id}/channels/suggestion: get: tags: - Channels summary: Получить предложения каналов description: | Возвращает каналы и пользователей для предложений поиска. Поле `user` присутствует, когда type="user". Поле `channel` может отсутствовать, когда type="user". ##### Разрешения Необходимо быть членом команды operationId: ChannelsSuggestionForTeam parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: channel_types in: query description: | Массив типов каналов. Тип канала - одно из возможных значений: 'D'-прямой канал, 'G'-групповой канал, 'P'-приватный канал, 'O'-открытый канал schema: type: array items: $ref: "#/components/schemas/ChannelType" - name: participant_types in: query description: Массив типов участников dm канала ('user', 'bot') schema: type: array items: $ref: "#/components/schemas/ParticipantType" - name: limit in: query description: Лимит элементов на странице. schema: type: integer default: 20 maximum: 100 minimum: 1 - name: with_profiles in: query description: | Определяет, будут ли возвращены профили найденных пользователей. required: false schema: type: boolean responses: "200": description: Успешное получение предложений content: application/json: schema: $ref: "#/components/schemas/ChannelSuggestionList" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" /teams/{team_id}/channels/conversations/suggestion: get: tags: - Channels summary: Получить предложения разговоров description: > Возвращает групповые, прямые каналы и пользователей для предложений поиска Поле `user` присутствует, когда type="user". Поле `channel` может отсутствовать, когда type="user". ##### Разрешения Необходимо быть членом команды operationId: ConversationsSuggestionForTeam parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: limit in: query description: Лимит элементов на странице. schema: type: integer default: 20 maximum: 100 minimum: 1 - name: with_profiles in: query description: | Определяет, будут ли возвращены профили найденных пользователей. required: false schema: type: boolean default: false responses: "200": description: Успешное получение предложений content: application/json: schema: $ref: "#/components/schemas/ChannelSuggestionList" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" /posts: post: tags: - Posts summary: Создать пост description: > Создайте новый пост в канале. Чтобы создать пост как комментарий к другому посту, укажите `root_id`. ##### Разрешения Должно быть разрешение `create_post` для канала, в котором создается пост. operationId: CreatePost parameters: - name: set_online in: query description: Установить статус пользователя как онлайн или нет. required: false schema: type: boolean requestBody: content: application/json: schema: type: object required: - channel_id - message properties: channel_id: type: string description: ID канала для публикации. peer: type: string description: > Объект, в котором будет создан пост. `channel_id` имеет более высокий приоритет и не будет перезаписан, если он присутствует. Если peer имеет префикс `@`, сообщение будет отправлено в личный канал пользователя по имени пользователя. Префикс `U:` - сообщение будет отправлено в личный канал пользователя по UserID. В любом другом случае будет иметь тот же эффект, что и `channel_id`. Пример использования: - `@yoona`. (Сообщение будет отправлено пользователю `yoona` по имени пользователя) - `U:9ayyzd4nciyc3ptamsk6g4s3dy`. (Сообщение будет отправлено пользователю `yoona` по UserID) - `ztxuytftsprjub9pxx81byjosy`. (Сообщение будет отправлено в канал, используя ChannelID) message: type: string description: > Содержимое сообщения, может быть отформатировано с помощью Markdown root_id: type: string description: ID поста для комментария file_ids: type: array description: > Список ID файлов для ассоциации с постом. Обратите внимание, что посты ограничены максимум 5 файлами. Пожалуйста, используйте дополнительные посты для большего количества файлов. items: type: string props: description: | Общий JSON-свойств для прикрепления к посту type: object $ref: "#/components/schemas/PostProps" pending_post_id: type: string description: > Ключ идемпотентности. Уникальный идентификатор, позволяющий клиенту повторять запрос без создания дублирующих постов. Он гарантирует, что даже если запрос отправляется несколько раз, операция будет обработана на стороне сервера только один раз. Алгоритм генерации ключа идемпотентности лежит на стороне клиента. Так-же, клиент обязан не использовать один и тот же ключ идемпотентности для разных запросов. Ключ инвалидируется на сервере через 30 секунд после первичного использования. Примеры: - `2fa41c7f-12f1-4b4b-9d55-af4c2869c07c` - `1752482846000` description: Объект поста для создания required: true responses: "201": description: Успешное создание поста content: application/json: schema: $ref: "#/components/schemas/Post" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /posts/ephemeral: post: tags: - Posts summary: Создать эфемерный пост description: > Создайте новый эфемерный пост в канале. ##### Разрешения Должно быть разрешение `create_post_ephemeral` (в настоящее время только для системного администратора) operationId: CreatePostEphemeral requestBody: content: application/json: schema: type: object required: - user_id - post properties: user_id: type: string description: ID целевого пользователя для эфемерного поста post: type: object required: - channel_id - message description: Объект поста для создания properties: channel_id: type: string description: ID канала для публикации message: type: string description: > Содержимое сообщения, может быть отформатировано с помощью Markdown description: Эфемерный объект поста для отправки required: true responses: "201": description: Успешное создание поста content: application/json: schema: $ref: "#/components/schemas/Post" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" x-codeSamples: - lang: Go source: | client := model.NewAPIv4Client("https://time-url.domain") client.Login("email@domain.com", "Password1") ephemeralPost := &model.PostEphemeral{ UserID: "", Post: &model.Post{ ChannelId: "", Message: "", }, } createdPost, response := client.CreatePostEphemeral(ephemeralPost) /posts/{post_id}: get: tags: - Posts summary: Получить пост description: > Получить один пост. ##### Разрешения Должно быть разрешение `read_channel` для канала, в котором находится пост, или если канал публичный, иметь разрешение `read_public_channels` для команды. operationId: GetPost parameters: - name: post_id in: path description: ID поста для получения required: true schema: type: string responses: "200": description: Успешное получение поста content: application/json: schema: $ref: "#/components/schemas/Post" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" delete: tags: - Posts summary: Удалить пост description: > Мягкое удаление поста, путем пометки поста как удаленного в базе данных. Мягко удаленные посты не будут возвращены в запросах постов. ##### Разрешения Должен быть авторизован как пользователь или иметь разрешение `delete_others_posts`. operationId: DeletePost parameters: - name: post_id in: path description: ID поста для удаления required: true schema: type: string responses: "200": description: Успешное удаление поста content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" put: tags: - Posts summary: Обновить пост description: > Обновить пост. Только перечисленные ниже поля могут быть обновлены, пропущенные поля будут считаться пустыми. ##### Разрешения Должно быть разрешение `edit_post` для канала, в котором находится пост. operationId: UpdatePost parameters: - name: post_id in: path description: ID поста для обновления required: true schema: type: string requestBody: content: application/json: schema: type: object required: - id properties: id: description: ID поста для обновления type: string is_pinned: description: > Установите значение `true`, чтобы закрепить пост в канале, в котором он находится type: boolean message: description: Текст сообщения поста type: string has_reactions: description: | Установите значение `true`, если у поста есть реакции type: boolean props: description: | Общий JSON-свойств для прикрепления к посту type: object $ref: "#/components/schemas/PostProps" description: Объект поста для обновления required: true responses: "200": description: Успешное обновление поста content: application/json: schema: $ref: "#/components/schemas/Post" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/{user_id}/posts/{post_id}/set_unread: post: tags: - Posts summary: Пометить как непрочитанное с поста. description: > Пометить канал как непрочитанный с указанного поста. ##### Разрешения Должно быть разрешение `read_channel` для канала, в котором находится пост, или если канал публичный, иметь разрешение `read_public_channels` для команды. Должно быть разрешение `edit_other_users`, если пользователь не тот, кто помечает пост для себя. operationId: SetPostUnread parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string - name: post_id in: path description: GUID поста required: true schema: type: string responses: "200": description: Пост успешно помечен как непрочитанный content: application/json: schema: $ref: "#/components/schemas/ChannelUnreadAt" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /posts/{post_id}/patch: put: tags: - Posts summary: Частично обновить пост description: > Частично обновить пост, предоставив только поля, которые вы хотите обновить. Пропущенные поля не будут обновлены. Поля, которые могут быть обновлены, определены в теле запроса, все другие предоставленные поля будут проигнорированы. ##### Разрешения Должно быть разрешение `edit_post`. operationId: PatchPost parameters: - name: post_id in: path description: GUID поста required: true schema: type: string requestBody: content: application/json: schema: type: object properties: is_pinned: description: > Установите значение `true`, чтобы закрепить пост в канале, в котором он находится type: boolean message: description: Текст сообщения поста type: string file_ids: description: Список файлов, прикрепленных к этому посту type: array items: type: string has_reactions: description: Установите значение `true`, если у поста есть реакции type: boolean props: description: | Общий JSON-свойств для прикрепления к посту type: object $ref: "#/components/schemas/PostProps" description: Объект поста для обновления required: true responses: "200": description: Успешное частичное обновление поста content: application/json: schema: $ref: "#/components/schemas/Post" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /posts/{post_id}/thread: get: tags: - Posts summary: Получить ветку description: > Получить пост и остальные посты в той же ветке. ##### Разрешения Должно быть разрешение `read_channel` для канала, в котором находится пост, или если канал публичный, иметь разрешение `read_public_channels` для команды. operationId: GetPostThread parameters: - name: post_id in: path description: ID поста в ветке required: true schema: type: string - name: perPage in: query description: Количество постов на странице schema: type: integer default: 0 - name: fromPost in: query description: ID поста для возврата следующей страницы постов schema: type: string default: "" - name: fromCreateAt in: query description: | Временная метка create_at для возврата следующей страницы постов schema: type: integer format: int64 default: 0 - name: direction in: query description: Направление возврата постов. Либо вверх, либо вниз. schema: type: string default: "" - name: skipFetchThreads in: query description: Пропустить ли получение веток или нет schema: type: boolean default: false - name: collapsedThreads in: query description: Использует ли клиент CRT или нет schema: type: boolean default: false - name: collapsedThreadsExtended in: query description: | Возвращать ли связанных пользователей как часть ответа или нет schema: type: boolean default: false responses: "200": description: Успешное получение списка постов content: application/json: schema: $ref: "#/components/schemas/PostList" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/{user_id}/posts/flagged: get: tags: - Posts summary: Получить список отмеченных постов description: > Получить страницу отмеченных постов пользователя по предоставленной строке ID пользователя. Выбирает из канала, команды или всех отмеченных постов пользователя. Будут возвращены только посты из каналов, в которых пользователь является участником. ##### Разрешения Должен быть пользователем или иметь разрешение `manage_system`. operationId: GetFlaggedPostsForUser parameters: - name: user_id in: path description: ID пользователя required: true schema: type: string - name: team_id in: query description: ID команды schema: type: string - name: channel_id in: query description: ID канала schema: type: string - name: page in: query description: Выбранная страница schema: type: integer default: 0 - name: per_page in: query description: Количество постов на странице schema: type: integer default: 60 responses: "200": description: Успешное получение списка постов content: application/json: schema: type: array items: $ref: "#/components/schemas/PostList" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /posts/{post_id}/files/info: get: tags: - Posts summary: Получить информацию о файлах для поста description: > Получить список объектов информации о файлах, прикрепленных к посту. ##### Разрешения Должно быть разрешение `read_channel` для канала, в котором находится пост. operationId: GetFileInfosForPost parameters: - name: post_id in: path description: ID поста required: true schema: type: string responses: "200": description: Успешное получение информации о файлах content: application/json: schema: type: array items: $ref: "#/components/schemas/FileInfo" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /channels/{channel_id}/posts: get: tags: - Posts summary: Получить посты для канала description: > Получить страницу постов в канале. Используйте параметры запроса для изменения поведения этой конечной точки. Параметр `since` не должен использоваться с любыми из параметров `before`, `after`, `page` и `per_page`. Если используется `since`, он всегда будет возвращать все посты, измененные с того времени, упорядоченные по времени их создания, ограниченные до 1000. Ограничение этого параметра заключается в том, что нет гарантии, что возвращенные посты будут последовательными. Клиентам оставлено поддержание состояния и заполнение любых пропущенных дыр в порядке постов. ##### Разрешения Должно быть разрешение `read_channel` для канала. operationId: GetPostsForChannel parameters: - name: channel_id in: path description: ID канала для получения постов required: true schema: type: string - name: page in: query description: Выбранная страница schema: type: integer default: 0 - name: per_page in: query description: Количество постов на странице schema: type: integer default: 60 - name: since in: query description: > Укажите ненулевое значение в миллисекундах Unix времени для выбора постов, измененных после этого времени schema: type: integer format: int64 - name: before in: query description: ID поста для выбора постов, которые были до этого schema: type: string - name: after in: query description: ID поста для выбора постов, которые были после этого schema: type: string - name: skipFetchThreads in: query description: Пропустить ли получение веток или нет schema: type: boolean default: false - name: collapsedThreads in: query description: Использует ли клиент CRT или нет schema: type: boolean default: false - name: collapsedThreadsExtended in: query description: | Возвращать ли связанных пользователей как часть ответа или нет schema: type: boolean default: false responses: "200": description: Успешное получение списка постов content: application/json: schema: $ref: "#/components/schemas/PostList" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /channels/{channel_id}/pinned: get: tags: - Posts summary: Получить закрепленные посты канала description: Получить список закрепленных постов для канала. operationId: GetPinnedPosts parameters: - name: channel_id in: path description: GUID канала required: true schema: type: string responses: "200": description: Список закрепленных постов канала content: application/json: schema: $ref: "#/components/schemas/PostList" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/{user_id}/channels/{channel_id}/posts/unread: get: tags: - Posts summary: Получить посты вокруг самого старого непрочитанного description: > Получить самый старый непрочитанный пост в канале для указанного пользователя, а также посты вокруг него. Возвращенный список отсортирован в порядке убывания (самый последний пост первым). ##### Разрешения Должен быть авторизован как пользователь или иметь разрешение `edit_other_users`, и должен иметь разрешение `read_channel` для канала. operationId: GetPostsAroundLastUnread parameters: - name: user_id in: path description: ID пользователя required: true schema: type: string - name: channel_id in: path description: ID канала для получения постов required: true schema: type: string - name: limit_before in: query description: > Количество постов до самого старого непрочитанного поста. Максимум 200 постов, если лимит установлен больше этого. schema: type: integer default: 60 maximum: 200 minimum: 0 - name: limit_after in: query description: > Количество постов после и включая самый старый непрочитанный пост. Максимум 200 постов, если лимит установлен больше этого. schema: type: integer default: 60 maximum: 200 minimum: 1 - name: skipFetchThreads in: query description: Пропустить ли получение веток или нет schema: type: boolean default: false - name: collapsedThreads in: query description: Использует ли клиент CRT или нет schema: type: boolean default: false - name: collapsedThreadsExtended in: query description: | Возвращать ли связанных пользователей как часть ответа или нет schema: type: boolean default: false responses: "200": description: Успешное получение списка постов content: application/json: schema: $ref: "#/components/schemas/PostList" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /teams/{team_id}/posts/search: post: tags: - Posts summary: Поиск постов команды description: | Поиск постов в команде и по предоставленной строке условий. ##### Разрешения Должен быть авторизован и иметь разрешение `view_team`. operationId: SearchPosts parameters: - name: team_id in: path description: GUID команды required: true schema: type: string requestBody: content: application/json: schema: type: object required: - terms - is_or_search properties: terms: type: string description: > Условия поиска, введенные пользователем. Чтобы искать посты от пользователя, включите `from:someusername`, используя имя пользователя. Чтобы искать в конкретном канале, включите `in:somechannel`, используя имя канала (не отображаемое имя). is_or_search: type: boolean description: > Установите значение true, если должен быть выполнен поиск по OR, а не по AND. time_zone_offset: type: integer default: 0 description: > Смещение от UTC временной зоны пользователя для поиска по датам. include_deleted_channels: type: boolean description: > Установите значение true, если удаленные каналы должны быть включены в поиск. (архивированные каналы) page: type: integer default: 0 description: | Выбранная страница. (Работает только с Elasticsearch) per_page: type: integer default: 60 description: > Количество постов на странице. (Работает только с Elasticsearch) description: Условия поиска и логика для использования в поиске. required: true responses: "200": description: Успешное получение списка постов content: application/json: schema: $ref: "#/components/schemas/PostSearchResults" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /posts/{post_id}/pin: post: tags: - Posts summary: Закрепить пост в канале description: > Закрепить пост в канале, в котором он находится, на основе предоставленной строки ID поста. ##### Разрешения Должен быть авторизован и иметь разрешение `read_channel` для канала, в котором находится пост. operationId: PinPost parameters: - name: post_id in: path description: GUID поста required: true schema: type: string responses: "200": description: Успешное закрепление поста content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /posts/{post_id}/unpin: post: tags: - Posts summary: Открепить пост в канале description: > Открепить пост в канале, в котором он находится, на основе предоставленной строки ID поста. ##### Разрешения Должен быть авторизован и иметь разрешение `read_channel` для канала, в котором находится пост. operationId: UnpinPost parameters: - name: post_id in: path description: GUID поста required: true schema: type: string responses: "200": description: Успешное открепление поста content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /posts/{post_id}/actions/{action_id}: post: tags: - Posts summary: Выполнить действие поста description: > Выполнить действие поста, которое позволяет пользователям взаимодействовать с интеграциями через посты. ##### Разрешения Должен быть авторизован и иметь разрешение `read_channel` для канала, в котором находится пост. operationId: DoPostAction parameters: - name: post_id in: path description: GUID поста required: true schema: type: string - name: action_id in: path description: GUID действия required: true schema: type: string responses: "200": description: Успешное выполнение действия поста content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /posts/ids: post: tags: - Posts summary: Получить посты по списку ID description: > Получить список постов на основе предоставленных postIDs ##### Разрешения Должно быть разрешение `read_channel` для канала, в котором находится пост, или если канал публичный, иметь разрешение `read_public_channels` для команды. operationId: getPostsByIds requestBody: content: application/json: schema: type: array items: type: string description: Список ID постов required: true responses: "200": description: Успешное получение списка постов content: application/json: schema: type: array items: $ref: "#/components/schemas/Post" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/{user_id}/preferences: get: tags: - Preferences summary: Получить настройки пользователя description: > Получить список настроек пользователя. ##### Разрешения Должен быть авторизован как пользователь, чьи данные обновляются, или иметь разрешение `edit_other_users`. operationId: GetPreferences parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string responses: "200": description: Успешное получение настроек пользователя content: application/json: schema: type: array items: $ref: "#/components/schemas/Preference" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" put: tags: - Preferences summary: Сохранить настройки пользователя description: > Сохранить список настроек пользователя. ##### Разрешения Должен быть авторизован как пользователь, чьи данные обновляются, или иметь разрешение `edit_other_users`. operationId: UpdatePreferences parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string requestBody: description: Список объектов настроек required: true content: application/json: schema: type: array items: $ref: "#/components/schemas/Preference" responses: "200": description: Успешное сохранение настроек пользователя content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /users/{user_id}/preferences/delete: post: tags: - Preferences summary: Удалить настройки пользователя description: > Удалить список настроек пользователя. ##### Разрешения Должен быть авторизован как пользователь, чьи данные обновляются, или иметь разрешение `edit_other_users`. operationId: DeletePreferences parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string requestBody: description: Список объектов настроек required: true content: application/json: schema: type: array items: $ref: "#/components/schemas/Preference" responses: "200": description: Успешное удаление настроек пользователя content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/{user_id}/preferences/{category}: get: tags: - Preferences summary: Список настроек пользователя по категории description: > Список сохраненных настроек текущего пользователя в указанной категории. ##### Разрешения Должен быть авторизован как пользователь, чьи данные обновляются, или иметь разрешение `edit_other_users`. operationId: GetPreferencesByCategory parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string - name: category in: path description: Категория группы настроек required: true schema: type: string responses: "200": description: | Список всех настроек текущего пользователя в указанной категории content: application/json: schema: type: array items: $ref: "#/components/schemas/Preference" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/{user_id}/preferences/{category}/name/{preference_name}: get: tags: - Preferences summary: Получить конкретную настройку пользователя description: > Получить одну настройку для текущего пользователя с указанной категорией и именем. ##### Разрешения Должен быть авторизован как пользователь, чьи данные обновляются, или иметь разрешение `edit_other_users`. operationId: GetPreferencesByCategoryByName parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string - name: category in: path description: Категория группы настроек required: true schema: type: string - name: preference_name in: path description: Имя настройки required: true schema: type: string responses: "200": description: > Единственная настройка для текущего пользователя в текущей категории, содержащее список всех настроек текущего пользователя в данной категории. content: application/json: schema: $ref: "#/components/schemas/Preference" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" /files: post: tags: - Files summary: Загрузить файл description: > Загружает файл, который позже может быть прикреплен к сообщению. Этот запрос может быть либо запросом multipart/form-data с channel_id, файлами и необязательными client_ids, определенными в FormData, либо это может быть запрос с channel_id и именем файла, определенными как параметры запроса с содержимым одного файла в теле запроса. Только запросы multipart/form-data поддерживаются серверными версиями до и включая 4.7. Серверные версии 4.8 и выше поддерживают оба типа запросов. Этот ответ может вернуть 400 Bad Request, если файл не прошел проверку ICAP серверов. ##### Разрешения Необходимо иметь разрешение `upload_file`. operationId: UploadFile parameters: - name: channel_id in: query description: | Идентификатор канала, в который будет загружен этот файл required: false schema: type: string - name: filename in: query description: Имя файла для загрузки required: false schema: type: string requestBody: content: multipart/form-data: schema: type: object properties: files: description: Файл для загрузки type: string format: binary channel_id: description: | Идентификатор канала, в который будет загружен этот файл type: string client_ids: description: > Уникальный идентификатор для файла, который будет возвращен в ответе type: string responses: "201": description: > Соответствующие списки предоставленных client_ids и метаданных, которые были сохранены в базе данных для каждого из них content: application/json: schema: type: object properties: file_infos: description: > Список метаданных файла, которые были сохранены в базе данных type: array items: $ref: "#/components/schemas/FileInfo" client_ids: description: | Список client_ids, которые были предоставлены в запросе type: array items: type: string "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "413": $ref: "#/components/responses/TooLarge" "501": $ref: "#/components/responses/NotImplemented" x-codeSamples: - lang: Curl source: | curl -F 'files=@PATH/TO/LOCAL/FILE' \ -F 'channel_id=CHANNEL_ID' \ --header 'authorization: Bearer c49adc55z3f53ck7xtp8ebq1ir' https://time-url.domain/api/v4/files /files/{file_id}: get: tags: - Files summary: Получить файл description: | Получает файл, который был загружен ранее. ##### Разрешения Необходимо иметь разрешение `read_channel` или быть загрузчиком файла. operationId: GetFile parameters: - name: file_id in: path description: Идентификатор файла для получения required: true schema: type: string responses: "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" delete: tags: - Files summary: Удалить файл description: > Удаляет файл, который был загружен ранее. Сообщения с удаленными файлами не будут включать метаданные файлов. ##### Разрешения Необходимо иметь разрешение `delete_others_files` или быть загрузчиком файла. operationId: DeleteFile parameters: - name: file_id in: path description: Идентификатор файла для удаления required: true schema: type: string responses: "200": description: Файл успешно удален "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" /files/{file_id}/thumbnail: get: tags: - Files summary: Получить миниатюру файла description: | Получает миниатюру файла. ##### Разрешения Необходимо иметь разрешение `read_channel` или быть загрузчиком файла. operationId: GetFileThumbnail parameters: - name: file_id in: path description: Идентификатор файла для получения required: true schema: type: string responses: "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" /files/{file_id}/preview: get: tags: - Files summary: Получить предварительный просмотр файла description: | Получает предварительный просмотр файла. ##### Разрешения Необходимо иметь разрешение `read_channel` или быть загрузчиком файла. operationId: GetFilePreview parameters: - name: file_id in: path description: Идентификатор файла для получения required: true schema: type: string responses: "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" /files/{file_id}/link: get: tags: - Files summary: Получить публичную ссылку на файл description: > Получает публичную ссылку на файл, который может быть доступен без входа в Time. ##### Разрешения Необходимо иметь разрешение `read_channel` или быть загрузчиком файла. operationId: GetFileLink parameters: - name: file_id in: path description: Идентификатор файла для получения ссылки required: true schema: type: string responses: "200": description: Публично доступная ссылка на данный файл content: application/json: schema: type: object properties: link: type: string "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" /files/{file_id}/info: get: tags: - Files summary: Получить метаданные файла description: | Получает информацию о файле. ##### Разрешения Необходимо иметь разрешение `read_channel` или быть загрузчиком файла. operationId: GetFileInfo parameters: - name: file_id in: path description: Идентификатор информации о файле для получения required: true schema: type: string responses: "200": description: Сохраненные метаданные для данного файла content: application/json: schema: $ref: "#/components/schemas/FileInfo" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" /files/{file_id}/public: get: tags: - Files summary: Получить публичный файл description: | ##### Разрешения Разрешения не требуются. operationId: GetFilePublic parameters: - name: file_id in: path description: Идентификатор файла для получения required: true schema: type: string - name: h in: query description: Хэш файла required: true schema: type: string responses: "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" /files/{source}/{source_id}: post: tags: - Files summary: Загрузить временный файл description: > Произвольная загрузка временного файла. Каждый источник имеет свою собственную валидацию для source_id. В настоящее время только `invite` может быть передан как `source` и `InviteId` как `source_id`. InviteId можно получить с помощью `GET /teams/invite-info` operationId: UploadTempFile parameters: - name: source in: path description: Тип источника файла для загрузки required: true schema: type: string enum: - invite - name: source_id in: path description: Идентификатор источника файла для загрузки required: true schema: type: string requestBody: content: multipart/form-data: schema: type: object properties: file: description: Файл для загрузки type: string format: binary responses: "201": description: Идентификатор загруженного файла content: application/json: schema: type: object properties: file_id: description: идентификатор type: string "400": $ref: "#/components/responses/BadRequest" "500": $ref: "#/components/responses/InternalServerError" /teams/{team_id}/files/search: post: tags: - Teams - Files - ElasticSearch summary: Поиск файлов в команде description: > Поиск файлов в команде на основе имени файла, расширения и содержимого файла (если извлечение содержимого файла включено и поддерживается для файлов). __Минимальная версия сервера__: 5.34 ##### Разрешения Должен быть аутентифицирован и иметь разрешение `view_team`. operationId: SearchFiles parameters: - name: team_id in: path description: GUID команды required: true schema: type: string requestBody: content: application/json: schema: type: object required: - terms properties: terms: type: string description: > Поисковые термины, введенные пользователем. Чтобы искать файлы от пользователя, включите `from:someusername`, используя имя пользователя. Чтобы искать в конкретном канале, включите `in:somechannel`, используя имя канала (не отображаемое имя). Чтобы искать по конкретным расширениям, включите `ext:extension`. is_or_search: type: boolean description: > Установите значение true, если должен быть выполнен поиск "Или" вместо поиска "И". time_zone_offset: type: integer default: 0 description: > Смещение от UTC часового пояса пользователя для поиска по датам. include_deleted_channels: type: boolean description: > Установите значение true, если удаленные каналы должны быть включены в поиск. (архивированные каналы) page: type: integer default: 0 description: | Выбранная страница. (Работает только с Elasticsearch) per_page: type: integer default: 60 description: > Количество сообщений на странице. (Работает только с Elasticsearch) description: Поисковые термины и логика, используемая в поиске. required: true responses: "200": description: Список файлов успешно получен content: application/json: schema: $ref: "#/components/schemas/FileInfoList" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" x-codeSamples: - lang: curl source: > curl -X POST \ https://time-url.domain/api/v4/teams/zWEyrTZ7GZ22aBSfoX60iWryTY/files/search \ -H 'Authorization: Bearer frn8fu5rtpyc5m4xy6q3oj4yur' \ -H 'Content-Type: application/json' \ -d '{"terms": "filename", "is_or_search": false}' /uploads: post: tags: - Uploads summary: Создать загрузку description: | Создает новую сессию загрузки. __Минимальная версия сервера__: 5.28 ##### Разрешения Должен иметь разрешение `upload_file`. operationId: CreateUpload requestBody: content: application/json: schema: type: object required: - channel_id - filename - file_size properties: channel_id: description: ID канала для загрузки. type: string filename: description: Имя файла для загрузки. type: string file_size: description: Размер файла для загрузки в байтах. type: integer format: int64 required: true responses: "201": description: Загрузка успешно создана. content: application/json: schema: $ref: "#/components/schemas/UploadSession" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "413": $ref: "#/components/responses/TooLarge" "501": $ref: "#/components/responses/NotImplemented" x-codeSamples: - lang: Curl source: > curl 'http://localhost:8065/api/v4/uploads' \ -H 'Authorization: Bearer 9kg8nqrnxprd9jbykqeg4r51hw' \ -H 'Content-Type: application/json' \ --data-binary '{"channel_id": "4i6jn8r483nnuqnibnmgz8jo4o", "filename": "test.png", "file_size": 512000}' /uploads/{upload_id}: get: tags: - Uploads summary: Получить сессию загрузки description: | Получает сессию загрузки, которая была ранее создана. ##### Разрешения Должен быть залогинен как пользователь, который создал сессию загрузки. operationId: GetUpload parameters: - name: upload_id in: path description: ID сессии загрузки для получения. required: true schema: type: string responses: "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" x-codeSamples: - lang: Curl source: > curl 'http://localhost:8065/api/v4/uploads/nuyrh9ymridqmenof7exe3a6aw' \ -H 'Authorization: Bearer 9kg8nqrnxprd9jbykqeg4r51hw' post: tags: - Uploads summary: Выполнить загрузку файла description: > Начинает или возобновляет загрузку файла. Чтобы возобновить существующую (незавершенную) загрузку, данные должны быть отправлены начиная с смещения, указанного в объекте сессии загрузки. Тело запроса может быть в одном из двух форматов: - Двоичное содержимое файла, передаваемое в теле запроса - multipart/form-data ##### Разрешения Должен быть залогинен как пользователь, который создал сессию загрузки. operationId: UploadData parameters: - name: upload_id in: path description: ID сессии загрузки, к которой относятся данные. required: true schema: type: string requestBody: content: application/x-www-form-urlencoded: schema: type: object responses: "201": description: Загрузка успешна content: application/json: schema: $ref: "#/components/schemas/FileInfo" "204": description: Загрузка не завершена "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "413": $ref: "#/components/responses/TooLarge" "501": $ref: "#/components/responses/NotImplemented" x-codeSamples: - lang: Curl source: > # Двоичное содержимое файла в теле запроса curl -X POST 'http://localhost:8065/api/v4/uploads/qyxbzmprrjbdpdaprsxm98m6qe' \ -H 'Authorization: Bearer 9kg8nqrnxprd9jbykqeg4r51hw' --data-binary @file.png # Загрузка multipart/form-data curl 'http://localhost:8065/api/v4/uploads/qyxbzmprrjbdpdaprsxm98m6qe' \ -H 'Authorization: Bearer 9kg8nqrnxprd9jbykqeg4r51hw' -F data=@file.png /jobs: get: tags: - Jobs summary: Получить задачи. description: > Получить страницу задач. Используйте параметры запроса, чтобы изменить поведение этого конечного точки. __Минимальная версия сервера: 4.1__ ##### Разрешения Должно быть разрешение `manage_jobs`. operationId: GetJobs parameters: - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: Количество задач на странице. schema: type: integer default: 60 responses: "200": description: Успешное получение списка задач content: application/json: schema: type: array items: $ref: "#/components/schemas/Job" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" post: tags: - Jobs summary: Создать новую задачу. description: | Создать новую задачу. __Минимальная версия сервера: 4.1__ ##### Разрешения Должно быть разрешение `manage_jobs`. operationId: CreateJob requestBody: content: application/json: schema: type: object required: - type properties: type: type: string description: Тип задачи для создания data: type: object description: > Объект, содержащий любые дополнительные данные, необходимые для этого типа задачи description: Объект задачи для создания required: true responses: "201": description: Успешное создание задачи content: application/json: schema: $ref: "#/components/schemas/Job" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /jobs/{job_id}: get: tags: - Jobs summary: Получить задачу. description: | Получить одну задачу. __Минимальная версия сервера: 4.1__ ##### Разрешения Должно быть разрешение `manage_jobs`. operationId: GetJob parameters: - name: job_id in: path description: GUID задачи required: true schema: type: string responses: "200": description: Успешное получение задачи content: application/json: schema: $ref: "#/components/schemas/Job" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /jobs/{job_id}/download: get: tags: - Jobs summary: Скачать результаты задачи. description: | Скачать результат одной задачи. __Минимальная версия сервера: 5.28__ ##### Разрешения Должно быть разрешение `manage_jobs`. operationId: DownloadJob parameters: - name: job_id in: path description: GUID задачи required: true schema: type: string responses: "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /jobs/{job_id}/cancel: post: tags: - Jobs summary: Отменить задачу. description: | Отменить задачу. __Минимальная версия сервера: 4.1__ ##### Разрешения Должно быть разрешение `manage_jobs`. operationId: CancelJob parameters: - name: job_id in: path description: GUID задачи required: true schema: type: string responses: "200": description: Задача успешно отменена content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /jobs/{job_id}/rerun: post: tags: - Jobs summary: Перезапустить задачу. description: > Перезапустить задачу. Нельзя перезапустить задачу со статусами `in_progress`, `pending`, `cancel_requested`. ##### Разрешения Должно быть разрешение `manage_jobs`. operationId: RerunJob parameters: - name: job_id in: path description: GUID задачи required: true schema: type: string responses: "200": description: Задача успешно перезапущена content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /jobs/type/{type}: get: tags: - Jobs summary: Получить задачи указанного типа. description: > Получить страницу задач указанного типа. Используйте параметры запроса, чтобы изменить поведение этого конечного точки. __Минимальная версия сервера: 4.1__ ##### Разрешения Должно быть разрешение `manage_jobs`. operationId: GetJobsByType parameters: - name: type in: path description: Тип задачи required: true schema: type: string - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: Количество задач на странице. schema: type: integer default: 60 responses: "200": description: Успешное получение списка задач content: application/json: schema: type: array items: $ref: "#/components/schemas/Job" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /system/timezones: get: tags: - System summary: Получить список поддерживаемых часовых поясов description: | __Минимальная версия сервера__: 3.10 ##### Разрешения Необходимо войти в систему. operationId: GetSupportedTimezone responses: "200": description: Успешное получение списка часовых поясов content: application/json: schema: type: array items: type: string "500": $ref: "#/components/responses/InternalServerError" /system/ping: get: tags: - System summary: Проверка состояния системы description: > Проверка, работает ли сервер и находится ли он в хорошем состоянии на основе настройки конфигурации `GoRoutineHealthThreshold`. Если `GoRoutineHealthThreshold` и количество горутин на сервере превышает этот порог, сервер считается нездоровым. Если `GoRoutineHealthThreshold` не установлен или количество горутин ниже порога, сервер считается здоровым. __Минимальная версия сервера__: 3.10 Если в запросе передан "device_id", будет протестирован прокси уведомлений, чтобы определить, может ли устройство получать уведомления. Ответ будет содержать свойство "CanReceiveNotifications" с одним из следующих значений: - true: Может получать уведомления - false: Не может получать уведомления - unknown: Произошла неизвестная ошибка, и неясно, может ли устройство получать уведомления. __Минимальная версия сервера__: 6.5 ##### Разрешения Не требуется. operationId: GetPing parameters: - name: get_server_status in: query description: | Также проверить статус базы данных и файлового хранилища required: false schema: type: boolean - name: readiness in: query description: > Дополнительно проверить статус основной базы данных. Полезно в проверке готовности k8s required: false schema: type: boolean - name: device_id in: query description: > Проверить, может ли этот идентификатор устройства получать push-уведомления required: false schema: type: string responses: "200": description: Статус системы content: application/json: schema: $ref: "#/components/schemas/SystemStatusResponse" "500": $ref: "#/components/responses/InternalServerError" /system/notices/{teamId}: get: tags: - System summary: Получить уведомления для вошедшего пользователя в указанной команде description: > Вернет соответствующие уведомления о продукте для текущего пользователя в команде, указанной параметром teamId. __Минимальная версия сервера__: 5.26 ##### Разрешения Необходимо войти в систему. operationId: GetNotices parameters: - name: clientVersion in: query description: > Версия клиента (настольного/мобильного/веб), который отправляет запрос required: true schema: type: string - name: locale in: query description: Локаль клиента required: false schema: type: string - name: client in: query description: Тип клиента (web/mobile-ios/mobile-android/desktop) required: true schema: type: string - name: teamId in: path description: ID команды required: true schema: type: string responses: "200": description: Успешное получение списка уведомлений content: application/json: schema: type: array items: $ref: "#/components/schemas/Notice" "500": $ref: "#/components/responses/InternalServerError" /system/notices/view: put: tags: - System summary: Обновить уведомления как 'просмотренные' description: > Отметит указанные уведомления как 'просмотренные' вошедшим пользователем. __Минимальная версия сервера__: 5.26 ##### Разрешения Необходимо войти в систему. operationId: MarkNoticesViewed requestBody: content: application/json: schema: type: array items: type: string description: Массив идентификаторов уведомлений required: true responses: "200": description: Успешное обновление content: application/json: schema: $ref: "#/components/schemas/StatusOK" "500": $ref: "#/components/responses/InternalServerError" /system/announcement_banner: get: tags: - System summary: Получить баннер объявления operationId: GetAnnouncementBanner responses: "200": description: Баннер объявления успешно получен content: application/json: schema: $ref: "#/components/schemas/AnnouncementBanner" "500": $ref: "#/components/responses/InternalServerError" /database/recycle: post: tags: - System summary: Перезапустить соединения с базой данных description: > Перезапустить соединения с базой данных, закрыв и переподключив все соединения к основной и реплицированной базам данных. ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: DatabaseRecycle responses: "200": description: Успешный перезапуск базы данных content: application/json: schema: $ref: "#/components/schemas/StatusOK" "403": $ref: "#/components/responses/Forbidden" /email/test: post: tags: - System summary: Отправить тестовое письмо description: > Отправить тестовое письмо, чтобы убедиться, что настройки электронной почты настроены правильно. При необходимости предоставьте конфигурацию в теле запроса для тестирования. Если в теле запроса нет действительной конфигурации, будет протестирована текущая конфигурация сервера. ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: TestEmail requestBody: description: Конфигурация времени required: true content: application/json: schema: $ref: "#/components/schemas/Config" responses: "200": description: Письмо успешно отправлено content: application/json: schema: $ref: "#/components/schemas/StatusOK" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" /site_url/test: post: tags: - System summary: Проверка действительности URL сайта description: | Отправляет запрос Ping на сервер Time, используя указанный URL сайта. ##### Разрешения Необходимо иметь разрешение `manage_system`. __Минимальная версия сервера__: 5.16 operationId: TestSiteURL requestBody: content: application/json: schema: type: object required: - site_url properties: site_url: type: string description: URL сайта для тестирования required: true responses: "200": description: URL сайта действителен content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" /file/s3_test: post: tags: - System summary: Тестирование подключения к AWS S3 description: > Отправить тест для проверки возможности подключения к AWS S3. При необходимости предоставьте конфигурацию в теле запроса для тестирования. Если в теле запроса нет действительной конфигурации, будет протестирована текущая конфигурация сервера. ##### Разрешения Необходимо иметь разрешение `manage_system`. __Минимальная версия сервера__: 4.8 operationId: TestS3Connection requestBody: description: Конфигурация времени required: true content: application/json: schema: $ref: "#/components/schemas/Config" responses: "200": description: Успешное тестирование S3 content: application/json: schema: $ref: "#/components/schemas/StatusOK" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" /config: get: tags: - System summary: Получить конфигурацию description: | Получить текущую конфигурацию сервера ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: GetConfig responses: "200": description: Успешное получение конфигурации content: application/json: schema: $ref: "#/components/schemas/Config" "400": $ref: "#/components/responses/BadRequest" "403": $ref: "#/components/responses/Forbidden" put: tags: - System summary: Обновить конфигурацию description: > Отправить новую конфигурацию для использования сервером. Начиная с версии сервера 4.8, настройка `PluginSettings.EnableUploads` не может быть изменена через этот конечный точку. Обратите внимание, что параметры, которые не установлены в предоставленной вами конфигурации, будут сброшены на значения по умолчанию. Поэтому, если вы хотите изменить параметр конфигурации и оставить остальные неизменными, вам нужно сначала получить существующую конфигурацию, изменить нужное поле, а затем отправить эту новую конфигурацию. ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: UpdateConfig requestBody: description: Конфигурация времени required: true content: application/json: schema: $ref: "#/components/schemas/Config" responses: "200": description: Успешное обновление конфигурации content: application/json: schema: $ref: "#/components/schemas/Config" "400": $ref: "#/components/responses/BadRequest" "403": $ref: "#/components/responses/Forbidden" /config/reload: post: tags: - System summary: Перезагрузить конфигурацию description: > Перезагрузить файл конфигурации, чтобы учесть любые изменения, внесенные в него. ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: ReloadConfig responses: "200": description: Успешная перезагрузка конфигурации content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "403": $ref: "#/components/responses/Forbidden" /config/auth: get: tags: - System summary: Получить конфигурацию аутентификации description: | Получить подмножество конфигурации сервера, необходимое клиенту для описания аутентификации. ##### Разрешения Разрешения не требуются. operationId: GetAuthConfig responses: "200": description: Успешное получение конфигурации content: application/json: schema: $ref: "#/components/schemas/AuthConfig" "400": $ref: "#/components/responses/BadRequest" "501": $ref: "#/components/responses/NotImplemented" /config/client: get: tags: - System summary: Получить конфигурацию клиента description: | Получить подмножество конфигурации сервера, необходимое клиенту. ##### Разрешения Разрешения не требуются. operationId: GetClientConfig parameters: - name: format in: query required: false description: | Может быть `old` или пустым. Если пусто, конечная точка отвечает с типизированной конфигурацией schema: type: string responses: "200": description: Успешное получение конфигурации клиента content: application/json: schema: $ref: "#/components/schemas/ConfigClient" "400": $ref: "#/components/responses/BadRequest" "501": $ref: "#/components/responses/NotImplemented" /config/push: get: tags: - System summary: Получить конфигурацию push-уведомлений description: | Получить подмножество конфигурации сервера, необходимое клиенту для описания аутентификации. ##### Разрешения Разрешения не требуются. operationId: GetPushNotificationConfig responses: "200": description: Успешное получение конфигурации клиента content: application/json: schema: $ref: "#/components/schemas/PushNotificationConfig" "400": $ref: "#/components/responses/BadRequest" "501": $ref: "#/components/responses/NotImplemented" /config/environment: get: tags: - System summary: Получить конфигурацию, сделанную через переменные окружения description: > Получить объект JSON, отражающий конфигурацию сервера, где поля установлены в true, если соответствующая настройка конфигурации установлена через переменную окружения. Настройки, которые не были установлены через переменные окружения, будут отсутствовать в объекте. __Минимальная версия сервера__: 4.10 ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: GetEnvironmentConfig responses: "200": description: Успешное получение конфигурации content: application/json: schema: $ref: "#/components/schemas/EnvironmentConfig" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /config/patch: put: tags: - System summary: Обновить конфигурацию description: > Отправить конфигурацию для обновления. Начиная с версии сервера 4.8, настройка `PluginSettings.EnableUploads` не может быть изменена через этот конечный точку. ##### Разрешения Необходимо иметь разрешение `manage_system`. __Минимальная версия сервера__: 5.20 operationId: PatchConfig requestBody: description: Конфигурация времени required: true content: application/json: schema: $ref: "#/components/schemas/Config" responses: "200": description: Успешное обновление конфигурации content: application/json: schema: $ref: "#/components/schemas/Config" "400": $ref: "#/components/responses/BadRequest" "403": $ref: "#/components/responses/Forbidden" /license: post: tags: - System summary: Загрузить лицензионный файл description: | Загрузить лицензию для включения корпоративных функций. __Минимальная версия сервера__: 4.0 ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: UploadLicenseFile requestBody: content: multipart/form-data: schema: type: object properties: license: description: Лицензия для загрузки type: string format: binary required: - license responses: "201": description: Успешная загрузка лицензионного файла 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: Удалить лицензионный файл description: | Удаление лицензии запрещено operationId: RemoveLicenseFile responses: "400": $ref: "#/components/responses/BadRequest" /license/usage: get: tags: - System summary: Получить использование лицензии description: | Получить статистику использования лицензии для сервера. ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: GetLicenseUsage responses: "200": description: Успешное получение использования лицензии content: application/json: schema: $ref: "#/components/schemas/LicenseUsage" "403": $ref: "#/components/responses/Forbidden" /license/client: get: tags: - System summary: Получить клиентскую лицензию description: > Получить подмножество лицензии сервера, необходимое клиенту. ##### Разрешения Разрешения не требуются, но наличие разрешения `manage_system` возвращает больше информации. operationId: GetClientLicense parameters: - name: format in: query required: true description: Должно быть `old`, другие форматы еще не реализованы schema: type: string responses: "200": description: Успешное получение лицензии "400": $ref: "#/components/responses/BadRequest" "501": $ref: "#/components/responses/NotImplemented" /license/renewal: get: tags: - System summary: Запросить ссылку на продление лицензии description: > Запросить ссылку на продление, которая будет использоваться для начала процесса продления лицензии __Минимальная версия сервера__: 5.32 ##### Разрешения Необходимо иметь разрешение `sysconsole_write_about`. operationId: RequestLicenseRenewalLink responses: "200": description: Ссылка на продление лицензии получена 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" /audits: get: tags: - System summary: Получить аудиты description: > Получить страницу аудитов для всех пользователей в системе, выбранную с помощью параметров запроса `page` и `per_page`. ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: GetAudits parameters: - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: Количество аудитов на странице. schema: type: integer default: 60 responses: "200": description: Успешное получение аудитов content: application/json: schema: type: array items: $ref: "#/components/schemas/Audit" "403": $ref: "#/components/responses/Forbidden" /caches/invalidate: post: tags: - System summary: Аннулировать все кэши description: > Очистить все кэши в памяти для сервера Time. Это может временно негативно сказаться на производительности, пока кэши не будут заново заполнены. ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: InvalidateCaches responses: "200": description: Успешное аннулирование кэшей content: application/json: schema: $ref: "#/components/schemas/StatusOK" "403": $ref: "#/components/responses/Forbidden" /logs: get: tags: - System summary: Получить логи description: > Получить страницу логов сервера, выбранную с помощью параметров запроса `page` и `logs_per_page`. ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: GetLogs parameters: - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: logs_per_page in: query description: > Количество логов на странице. Максимальный лимит составляет 10000 логов на страницу. schema: type: string default: "10000" responses: "200": description: Успешное получение логов content: application/json: schema: type: array items: type: string "403": $ref: "#/components/responses/Forbidden" post: tags: - System summary: Добавить сообщение в лог description: > Добавить сообщения в логи сервера. ##### Разрешения Пользователи с разрешением `manage_system` могут логировать сообщения уровня ERROR или DEBUG. Вошедшие пользователи могут логировать сообщения уровня ERROR или DEBUG, когда `ServiceSettings.EnableDeveloper` установлено в `true`, или только сообщения уровня DEBUG, когда `false`. Не вошедшие пользователи могут логировать сообщения уровня ERROR или DEBUG, когда `ServiceSettings.EnableDeveloper` установлено в `true`, и не могут логировать, когда `false`. operationId: PostLog requestBody: content: application/json: schema: type: object required: - level - message properties: level: type: string description: Уровень ошибки, ERROR или DEBUG message: type: string description: Сообщение для отправки в логи сервера required: true responses: "200": description: Логи успешно отправлены content: application/json: schema: type: object items: type: string "403": $ref: "#/components/responses/Forbidden" /analytics/old: get: tags: - System summary: Получить аналитику description: > Получить некоторые аналитические данные о системе. Этот конечный точка использует старый формат, маршрут `/analytics` зарезервирован для нового формата, когда он будет реализован. Возвращаемый JSON изменяется в зависимости от параметра запроса `name`, но всегда представляет собой пары ключ/значение. __Минимальная версия сервера__: 4.0 ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: GetAnalyticsOld parameters: - name: name in: query required: false description: > Возможные значения: "standard", "bot_post_counts_day", "post_counts_day", "user_counts_with_posts_day" или "extra_counts" schema: type: string default: standard - name: team_id in: query required: false description: ID команды для фильтрации данных schema: type: string responses: "200": description: Успешное получение аналитики "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /server_busy: post: tags: - System summary: Установить флаг высокой нагрузки на сервере description: > Помечает сервер как находящийся под высокой нагрузкой, что отключает некритические службы, такие как поиск, статусы и уведомления о наборе текста. __Минимальная версия сервера__: 5.20 ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: SetServerBusy parameters: - name: seconds in: query required: false description: > Количество секунд до автоматической отмены флага высокой нагрузки на сервере. schema: type: string default: "3600" responses: "200": description: Флаг высокой нагрузки на сервере успешно установлен content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "403": $ref: "#/components/responses/Forbidden" x-codeSamples: - lang: curl source: | curl -X POST \ 'https://time-url.domain/api/v4/server_busy?seconds=3600' \ -H 'Authorization: Bearer kno8tcdotpbx3dj1gzcbx9jrqy' get: tags: - System summary: Получить время истечения флага высокой нагрузки на сервере. description: > Получает временную метку, соответствующую времени, когда флаг высокой нагрузки на сервере будет автоматически снят. __Минимальная версия сервера__: 5.20 ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: GetServerBusyExpires responses: "200": description: Время истечения флага высокой нагрузки на сервере успешно получено content: application/json: schema: $ref: "#/components/schemas/Server_Busy" "403": $ref: "#/components/responses/Forbidden" x-codeSamples: - lang: curl source: | curl -X GET \ 'https://time-url.domain/api/v4/server_busy' \ -H 'Authorization: Bearer kno8tcdotpbx3dj1gzcbx9jrqy' \ -H 'Content-Type: application/json' delete: tags: - System summary: Снять флаг высокой нагрузки на сервере description: > Помечает сервер как не находящийся под высокой нагрузкой, что повторно включает некритические службы, такие как поиск, статусы и уведомления о наборе текста. __Минимальная версия сервера__: 5.20 ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: ClearServerBusy responses: "200": description: Флаг высокой нагрузки на сервере успешно снят content: application/json: schema: $ref: "#/components/schemas/StatusOK" "403": $ref: "#/components/responses/Forbidden" x-codeSamples: - lang: curl source: | curl -X DELETE \ 'https://time-url.domain/api/v4/server_busy' \ -H 'Authorization: Bearer kno8tcdotpbx3dj1gzcbx9jrqy' /notifications/ack: post: tags: - root summary: Подтвердить получение уведомления description: | __Минимальная версия сервера__: 3.10 ##### Разрешения Необходимо войти в систему. operationId: AcknowledgeNotification requestBody: content: application/json: schema: $ref: "#/components/schemas/PushNotificationAck" description: Данные уведомления required: true responses: "200": description: Статус системы content: application/json: schema: $ref: "#/components/schemas/PushNotification" "404": $ref: "#/components/responses/NotFound" /redirect_location: get: tags: - System summary: Получить место перенаправления description: | __Минимальная версия сервера__: 3.10 ##### Разрешения Необходимо войти в систему. operationId: GetRedirectLocation parameters: - name: url in: query required: true description: URL для проверки schema: type: string responses: "200": description: Место перенаправления получено content: image/*: schema: type: object properties: location: type: string "404": $ref: "#/components/responses/NotFound" /image: get: tags: - System summary: Получить изображение по URL description: | Получить изображение через прокси изображений Time. __Минимальная версия сервера__: 3.10 ##### Разрешения Необходимо войти в систему. operationId: GetImageByUrl responses: "200": description: Изображение найдено content: image/*: schema: type: string format: binary "404": $ref: "#/components/responses/NotFound" /restart: post: tags: - System summary: > Перезапустить систему после обновления с Team Edition до Enterprise Edition description: > Перезапускает текущий экземпляр Time для выполнения нового корпоративного бинарного файла. __Минимальная версия сервера__: 5.27 ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: RestartServer responses: "200": description: Перезапуск начат content: application/json: schema: $ref: "#/components/schemas/StatusOK" "403": $ref: "#/components/responses/Forbidden" /integrity: post: tags: - System summary: Выполнить проверку целостности базы данных description: | Выполняет проверку целостности базы данных. __Примечание__: Эта проверка может временно ухудшить производительность системы. __Минимальная версия сервера__: 5.28.0 __Только локальный режим__: Этот конечный точка доступен только в локальном режиме. operationId: CheckIntegrity responses: "200": description: Успешная проверка целостности content: application/json: schema: type: array items: $ref: "#/components/schemas/IntegrityCheckResult" /emoji: post: tags: - Emoji summary: Создать пользовательский эмодзи description: | Создать пользовательский эмодзи для команды. ##### Разрешения Должен быть аутентифицирован. operationId: CreateEmoji requestBody: content: multipart/form-data: schema: type: object properties: image: description: Файл для загрузки type: string format: binary emoji: description: > JSON-объект, содержащий поле `name` с именем эмодзи и поле `creator_id` с идентификатором аутентифицированного пользователя. type: string required: - image - Emoji responses: "201": description: Эмодзи успешно создан content: application/json: schema: $ref: "#/components/schemas/Emoji" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "413": $ref: "#/components/responses/TooLarge" "501": $ref: "#/components/responses/NotImplemented" get: tags: - Emoji summary: Получить список пользовательских эмодзи description: > Получить страницу метаданных для пользовательских эмодзи в системе. Начиная с версии сервера 4.7, сортировка с использованием параметра запроса `sort`. ##### Разрешения Должен быть аутентифицирован. operationId: GetEmojiList parameters: - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: Количество эмодзи на странице. schema: type: integer default: 60 - name: sort in: query description: > Либо пусто для отсутствия сортировки, либо "name" для сортировки по именам эмодзи. Минимальная версия сервера для сортировки - 4.7. schema: type: string default: "" responses: "200": description: Список эмодзи успешно получен content: application/json: schema: type: array items: $ref: "#/components/schemas/Emoji" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /emoji/{emoji_id}: get: tags: - Emoji summary: Получить пользовательский эмодзи description: | Получить метаданные для пользовательского эмодзи. ##### Разрешения Должен быть аутентифицирован. operationId: GetEmoji parameters: - name: emoji_id in: path description: GUID эмодзи required: true schema: type: string responses: "200": description: Эмодзи успешно получен content: application/json: schema: $ref: "#/components/schemas/Emoji" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" delete: tags: - Emoji summary: Удалить пользовательский эмодзи description: > Удалить пользовательский эмодзи. ##### Разрешения Должен иметь разрешения `manage_team` или `manage_system`, или быть пользователем, который создал эмодзи. operationId: DeleteEmoji parameters: - name: emoji_id in: path description: GUID эмодзи required: true schema: type: string responses: "200": description: Эмодзи успешно удален content: application/json: schema: $ref: "#/components/schemas/Emoji" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /emoji/name/{emoji_name}: get: tags: - Emoji summary: Получить пользовательский эмодзи по имени description: | Получить метаданные для пользовательского эмодзи по его имени. ##### Разрешения Должен быть аутентифицирован. __Минимальная версия сервера__: 4.7 operationId: GetEmojiByName parameters: - name: emoji_name in: path description: Имя эмодзи required: true schema: type: string responses: "200": description: Эмодзи успешно получен content: application/json: schema: $ref: "#/components/schemas/Emoji" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" /emoji/{emoji_id}/image: get: tags: - Emoji summary: Получить изображение пользовательского эмодзи description: | Получить изображение для пользовательского эмодзи. ##### Разрешения Должен быть аутентифицирован. operationId: GetEmojiImage parameters: - name: emoji_id in: path description: GUID эмодзи required: true schema: type: string responses: "200": description: Изображение эмодзи успешно получено "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /emoji/search: post: tags: - Emoji summary: Поиск пользовательских эмодзи description: > Поиск пользовательских эмодзи по имени на основе критериев поиска, предоставленных в теле запроса. Возвращается максимум 200 результатов. ##### Разрешения Должен быть аутентифицирован. __Минимальная версия сервера__: 4.7 operationId: SearchEmoji requestBody: content: application/json: schema: type: object required: - term properties: term: description: Термин для сопоставления с именем эмодзи. type: string prefix_only: description: > Установите, чтобы искать только имена, начинающиеся с поискового термина. type: string description: Критерии поиска required: true responses: "200": description: Список эмодзи успешно получен content: application/json: schema: type: array items: $ref: "#/components/schemas/Emoji" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /emoji/autocomplete: get: tags: - Emoji summary: Автозаполнение пользовательских эмодзи description: > Получить список пользовательских эмодзи с именами, начинающимися с или совпадающими с предоставленным именем. Возвращает максимум 100 результатов. ##### Разрешения Должен быть аутентифицирован. __Минимальная версия сервера__: 4.7 operationId: AutocompleteEmoji parameters: - name: name in: query description: Имя эмодзи для поиска. required: true schema: type: string responses: "200": description: Список эмодзи успешно получен content: application/json: schema: type: array items: $ref: "#/components/schemas/Emoji" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /hashtags/autocomplete: get: tags: - Hashtags summary: Автозаполнение хэштегов description: > Получить список хэштегов, имена которых начинаются с указанного имени или совпадают с ним. Возвращает максимум 10 результатов. ##### Разрешения Должен быть аутентифицирован. Должно быть разрешение на просмотр команды (view_team) для команды. __Минимальная версия сервера__: 6.34.1 operationId: AutocompleteHashtags parameters: - name: name in: query description: Имя хэштега для поиска. required: true schema: type: string - name: team_id in: query description: ID команды для поиска в этой команде. required: true schema: type: string responses: "200": description: Успешное получение списка хэштегов content: application/json: schema: type: array items: type: string "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /hooks/incoming: post: tags: - Webhooks summary: Создать входящий вебхук description: > Создать входящий вебхук для канала. ##### Разрешения `manage_webhooks` для команды, в которой находится вебхук. `manage_others_incoming_webhooks` для команды, в которой находится вебхук, если пользователь отличается от запросившего. operationId: CreateIncomingWebhook requestBody: content: application/json: schema: type: object required: - channel_id properties: channel_id: type: string description: > ID публичного канала или приватной группы, которая получает данные вебхука. user_id: type: string description: > ID владельца вебхука, если он отличается от запросившего. Требуется в локальном режиме. display_name: type: string description: | Отображаемое имя для этого входящего вебхука description: type: string description: | Описание для этого входящего вебхука username: type: string description: > Имя пользователя, от которого будет публиковаться этот входящий вебхук. icon_url: type: string description: > URL изображения профиля, которое будет использоваться этим входящим вебхуком при публикации. description: Входящий вебхук для создания required: true responses: "201": description: Входящий вебхук успешно создан content: application/json: schema: $ref: "#/components/schemas/IncomingWebhook" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" get: tags: - Webhooks summary: Список входящих вебхуков description: > Получить страницу со списком входящих вебхуков. Опционально можно отфильтровать по конкретной команде, используя параметры запроса. ##### Разрешения `manage_webhooks` для системы или `manage_webhooks` для конкретной команды. operationId: GetIncomingWebhooks parameters: - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: Количество вебхуков на странице. schema: type: integer default: 60 - name: team_id in: query description: ID команды для получения вебхуков. schema: type: string responses: "200": description: Успешное получение входящих вебхуков content: application/json: schema: type: array items: $ref: "#/components/schemas/IncomingWebhook" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /hooks/incoming/{hook_id}: get: tags: - Webhooks summary: Получить входящий вебхук description: > Получить входящий вебхук по ID вебхука. ##### Разрешения `manage_webhooks` для системы или `manage_webhooks` для конкретной команды или `manage_webhooks` для канала. operationId: GetIncomingWebhook parameters: - name: hook_id in: path description: GUID входящего вебхука required: true schema: type: string responses: "200": description: Успешное получение вебхука content: application/json: schema: $ref: "#/components/schemas/IncomingWebhook" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" delete: tags: - Webhooks summary: Удалить входящий вебхук description: > Удалить входящий вебхук по ID вебхука. ##### Разрешения `manage_webhooks` для системы или `manage_webhooks` для конкретной команды или `manage_webhooks` для канала. operationId: DeleteIncomingWebhook parameters: - name: hook_id in: path description: GUID входящего вебхука required: true schema: type: string responses: "200": description: Успешное удаление вебхука content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" put: tags: - Webhooks summary: Обновить входящий вебхук description: > Обновить входящий вебхук по ID вебхука. ##### Разрешения `manage_webhooks` для системы или `manage_webhooks` для конкретной команды или `manage_webhooks` для канала. operationId: UpdateIncomingWebhook parameters: - name: hook_id in: path description: GUID входящего вебхука required: true schema: type: string requestBody: content: application/json: schema: type: object required: - id - channel_id - display_name - description properties: id: type: string description: GUID входящего вебхука channel_id: type: string description: > ID публичного канала или приватной группы, которая получает данные вебхука. display_name: type: string description: | Отображаемое имя для этого входящего вебхука description: type: string description: | Описание для этого входящего вебхука username: type: string description: > Имя пользователя, от которого будет публиковаться этот входящий вебхук. icon_url: type: string description: > URL изображения профиля, которое будет использоваться этим входящим вебхуком при публикации. description: Входящий вебхук для обновления required: true responses: "200": description: Успешное обновление вебхука content: application/json: schema: $ref: "#/components/schemas/IncomingWebhook" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /hooks/outgoing: post: tags: - Webhooks summary: Создать исходящий вебхук description: > Создать исходящий вебхук для команды. ##### Разрешения `manage_webhooks` для команды, в которой находится вебхук. `manage_others_outgoing_webhooks` для команды, в которой находится вебхук, если пользователь отличается от запросившего. operationId: CreateOutgoingWebhook requestBody: content: application/json: schema: type: object required: - team_id - display_name - trigger_words - callback_urls properties: team_id: description: | ID команды, за которой следит вебхук type: string channel_id: description: | ID публичного канала, за которым следит вебхук type: string creator_id: description: > ID владельца вебхука, если он отличается от запросившего. Требуется в локальном режиме. type: string description: description: | Описание для этого исходящего вебхука type: string display_name: description: | Отображаемое имя для этого исходящего вебхука type: string trigger_words: description: | Список слов, на которые должен срабатывать вебхук type: array items: type: string trigger_when: description: > Когда срабатывать вебхуку, `0` когда триггерное слово присутствует в любом месте и `1` если сообщение начинается с триггерного слова type: integer callback_urls: description: | URL-адреса для отправки данных, когда вебхук срабатывает type: array items: type: string content_type: description: > Формат для отправки данных, либо `application/json`, либо `application/x-www-form-urlencoded` default: application/x-www-form-urlencoded type: string description: Исходящий вебхук для создания required: true responses: "201": description: Исходящий вебхук успешно создан content: application/json: schema: $ref: "#/components/schemas/OutgoingWebhook" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" get: tags: - Webhooks summary: Список исходящих вебхуков description: > Получить страницу со списком исходящих вебхуков. Опционально можно отфильтровать по конкретной команде или каналу, используя параметры запроса. ##### Разрешения `manage_webhooks` для системы или `manage_webhooks` для конкретной команды/канала. operationId: GetOutgoingWebhooks parameters: - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: Количество вебхуков на странице. schema: type: integer default: 60 - name: team_id in: query description: ID команды для получения вебхуков. schema: type: string - name: channel_id in: query description: ID канала для получения вебхуков. schema: type: string responses: "200": description: Успешное получение исходящих вебхуков content: application/json: schema: type: array items: $ref: "#/components/schemas/OutgoingWebhook" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /hooks/outgoing/{hook_id}: get: tags: - Webhooks summary: Получить исходящий вебхук description: > Получить исходящий вебхук по ID вебхука. ##### Разрешения `manage_webhooks` для системы или `manage_webhooks` для конкретной команды или `manage_webhooks` для канала. operationId: GetOutgoingWebhook parameters: - name: hook_id in: path description: GUID исходящего вебхука required: true schema: type: string responses: "200": description: Успешное получение исходящего вебхука content: application/json: schema: $ref: "#/components/schemas/OutgoingWebhook" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" delete: tags: - Webhooks summary: Удалить исходящий вебхук description: > Удалить исходящий вебхук по ID вебхука. ##### Разрешения `manage_webhooks` для системы или `manage_webhooks` для конкретной команды или `manage_webhooks` для канала. operationId: DeleteOutgoingWebhook parameters: - name: hook_id in: path description: GUID исходящего вебхука required: true schema: type: string responses: "200": description: Успешное удаление вебхука content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" put: tags: - Webhooks summary: Обновить исходящий вебхук description: > Обновить исходящий вебхук по ID вебхука. ##### Разрешения `manage_webhooks` для системы или `manage_webhooks` для конкретной команды или `manage_webhooks` для канала. operationId: UpdateOutgoingWebhook parameters: - name: hook_id in: path description: GUID исходящего вебхука required: true schema: type: string requestBody: content: application/json: schema: type: object required: - id - channel_id - display_name - description properties: hook_id: type: string description: GUID исходящего вебхука channel_id: type: string description: > ID публичного канала или приватной группы, которая получает данные вебхука. display_name: type: string description: Отображаемое имя для этого входящего вебхука description: type: string description: Описание для этого входящего вебхука description: Исходящий вебхук для обновления required: true responses: "200": description: Успешное обновление вебхука content: application/json: schema: $ref: "#/components/schemas/OutgoingWebhook" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /hooks/outgoing/{hook_id}/regen_token: post: tags: - Webhooks summary: Перегенерировать токен для исходящего вебхука description: > Перегенерировать токен для исходящего вебхука. ##### Разрешения `manage_webhooks` для системы или `manage_webhooks` для конкретной команды или `manage_webhooks` для канала. operationId: RegenOutgoingHookToken parameters: - name: hook_id in: path description: GUID исходящего вебхука required: true schema: type: string responses: "200": description: Успешное перегенерирование токена вебхука content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /hooks/{hook_id}: post: tags: - Webhooks summary: Использовать входящий вебхук description: > Использовать входящий вебхук с возможностью переопределения определенных полей. operationId: UseIncomingWebhook parameters: - name: hook_id in: path description: ID вебхука required: true schema: type: string requestBody: content: application/json: schema: $ref: "#/components/schemas/IncomingWebhookRequest" responses: "200": description: Запрос входящего вебхука успешно получен и обработан. content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" servers: - &a1 url: "" /hooks/commands/{hook_id}: post: tags: - Webhooks summary: Использовать командный вебхук description: > Использовать командный вебхук с возможностью переопределения определенных полей. operationId: UseCommandWebhook parameters: - name: hook_id in: path description: ID вебхука required: true schema: type: string requestBody: content: application/json: schema: $ref: "#/components/schemas/IncomingWebhookRequest" responses: "200": description: Запрос командного вебхука успешно получен и выполнен. content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" servers: - *a1 /saml/metadata: get: tags: - SAML summary: Получить метаданные description: | Получить SAML метаданные с сервера. SAML должен быть правильно настроен. ##### Разрешения Разрешения не требуются. operationId: GetSamlMetadata responses: "200": description: Успешное получение SAML метаданных content: application/json: schema: type: string "501": $ref: "#/components/responses/NotImplemented" /saml/metadatafromidp: post: tags: - SAML summary: Получить метаданные от провайдера идентификации description: | Получить SAML метаданные от провайдера идентификации. SAML должен быть правильно настроен. ##### Разрешения Разрешения не требуются. operationId: GetSamlMetadataFromIdp requestBody: content: application/json: schema: type: object properties: saml_metadata_url: type: string description: URL, с которого нужно получить данные SAML IDP. responses: "200": description: Успешное получение SAML метаданных content: application/json: schema: type: string "501": $ref: "#/components/responses/NotImplemented" /saml/certificate/idp: post: tags: - SAML summary: Загрузить сертификат IDP description: > Загрузите сертификат IDP для использования с вашей конфигурацией SAML. Сервер выберет жестко заданное имя файла для настройки IdpCertificateFile в вашем `config.json`. ##### Разрешения Необходимо иметь разрешение `sysconsole_write_authentication`. operationId: UploadSamlIdpCertificate requestBody: content: multipart/form-data: schema: type: object properties: certificate: description: Файл сертификата IDP type: string format: binary required: - certificate responses: "200": description: Успешная загрузка сертификата SAML content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" delete: tags: - SAML summary: Удалить сертификат IDP description: > Удалите текущий сертификат IDP, используемый с вашей конфигурацией SAML. Это также отключит SAML в вашей системе, так как этот сертификат необходим для SAML. ##### Разрешения Необходимо иметь разрешение `sysconsole_write_authentication`. operationId: DeleteSamlIdpCertificate responses: "200": description: Успешное удаление сертификата SAML content: application/json: schema: $ref: "#/components/schemas/StatusOK" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /saml/certificate/public: post: tags: - SAML summary: Загрузить публичный сертификат description: > Загрузите публичный сертификат для использования при шифровании с вашей конфигурацией SAML. Сервер выберет жестко заданное имя файла для настройки PublicCertificateFile в вашем `config.json`. ##### Разрешения Необходимо иметь разрешение `sysconsole_write_authentication`. operationId: UploadSamlPublicCertificate requestBody: content: multipart/form-data: schema: type: object properties: certificate: description: Файл публичного сертификата type: string format: binary required: - certificate responses: "200": description: Успешная загрузка сертификата SAML content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" delete: tags: - SAML summary: Удалить публичный сертификат description: > Удалите текущий публичный сертификат, используемый с вашей конфигурацией SAML. Это также отключит шифрование для SAML в вашей системе, так как этот сертификат необходим для этого. ##### Разрешения Необходимо иметь разрешение `sysconsole_write_authentication`. operationId: DeleteSamlPublicCertificate responses: "200": description: Успешное удаление сертификата SAML content: application/json: schema: $ref: "#/components/schemas/StatusOK" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /saml/certificate/private: post: tags: - SAML summary: Загрузить приватный ключ description: > Загрузите приватный ключ для использования при шифровании с вашей конфигурацией SAML. Сервер выберет жестко заданное имя файла для настройки PrivateKeyFile в вашем `config.json`. ##### Разрешения Необходимо иметь разрешение `sysconsole_write_authentication`. operationId: UploadSamlPrivateCertificate requestBody: content: multipart/form-data: schema: type: object properties: certificate: description: Файл приватного ключа type: string format: binary required: - certificate responses: "200": description: Успешная загрузка сертификата SAML content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" delete: tags: - SAML summary: Удалить приватный ключ description: > Удалите текущий приватный ключ, используемый с вашей конфигурацией SAML. Это также отключит шифрование для SAML в вашей системе, так как этот ключ необходим для этого. ##### Разрешения Необходимо иметь разрешение `sysconsole_write_authentication`. operationId: DeleteSamlPrivateCertificate responses: "200": description: Успешное удаление сертификата SAML content: application/json: schema: $ref: "#/components/schemas/StatusOK" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /saml/certificate/status: get: tags: - SAML summary: Получить статус сертификата description: > Получите статус загруженных сертификатов и ключей, используемых вашей конфигурацией SAML. ##### Разрешения Необходимо иметь разрешение `sysconsole_write_authentication`. operationId: GetSamlCertificateStatus responses: "200": description: Успешное получение статуса сертификата SAML content: application/json: schema: $ref: "#/components/schemas/SamlCertificateStatus" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /saml/reset_auth_data: post: tags: - SAML summary: Сбросить AuthData на Email description: > Сбросьте поле AuthData пользователей SAML на их электронную почту. Это предназначено для использования, когда атрибут id установлен в пустое значение из ранее непустого значения. __Минимальная версия сервера__: 5.35 ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: ResetSamlAuthDataToEmail requestBody: content: application/json: schema: type: object properties: include_deleted: type: boolean default: false description: Включать ли удаленных пользователей. dry_run: type: boolean default: false description: > Если установлено в true, возвращается количество пользователей, которые будут затронуты. user_ids: type: array items: type: string default: [] description: > Если установлено в непустой массив, то пользователи, чьи идентификаторы не находятся в массиве, будут исключены. responses: "200": description: AuthData успешно сброшен content: application/json: schema: type: object properties: num_affected: type: integer description: | Количество пользователей, чье поле AuthData было сброшено. "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /compliance/reports: post: tags: - Compliance summary: Создать отчет description: | Создать и сохранить комплаенс отчет. ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: CreateComplianceReport responses: "201": description: Успешное создание комплаенс отчета content: application/json: schema: $ref: "#/components/schemas/Compliance" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" get: tags: - Compliance summary: Получить отчеты description: > Получить список ранее созданных комплаенс отчетов по страницам, выбранным с помощью параметров запроса `page` и `per_page`. ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: GetComplianceReports parameters: - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: Количество отчетов на странице. schema: type: integer default: 60 responses: "200": description: Успешное получение комплаенс отчетов content: application/json: schema: type: array items: $ref: "#/components/schemas/Compliance" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /compliance/reports/{report_id}: get: tags: - Compliance summary: Получить отчет description: | Получить ранее созданный комплаенс отчет. ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: GetComplianceReport parameters: - name: report_id in: path description: GUID комплаенс отчета required: true schema: type: string responses: "200": description: Успешное получение комплаенс отчета content: application/json: schema: $ref: "#/components/schemas/Compliance" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /compliance/reports/{report_id}/download: get: tags: - Compliance summary: Скачать отчет description: | Скачать полный содержимое отчета в виде файла. ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: DownloadComplianceReport parameters: - name: report_id in: path description: GUID комплаенс отчета required: true schema: type: string responses: "200": description: Файл комплаенс отчета "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /ldap/sync: post: tags: - LDAP summary: Синхронизация с LDAP description: > Синхронизировать любые изменения атрибутов пользователя в настроенном сервере AD/LDAP с Time. ##### Разрешения Должно быть разрешение `manage_system`. operationId: SyncLdap responses: "200": description: Успешная синхронизация LDAP content: application/json: schema: $ref: "#/components/schemas/StatusOK" "501": $ref: "#/components/responses/NotImplemented" /ldap/test: post: tags: - LDAP summary: Тест конфигурации LDAP description: > Проверьте текущую конфигурацию AD/LDAP, чтобы убедиться, что сервер AD/LDAP может быть успешно подключен. ##### Разрешения Должно быть разрешение `manage_system`. operationId: TestLdap responses: "200": description: Успешный тест LDAP content: application/json: schema: $ref: "#/components/schemas/StatusOK" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /ldap/groups: get: tags: - LDAP summary: Возвращает список групп LDAP description: | ##### Разрешения Должно быть разрешение `manage_system`. __Минимальная версия сервера__: 5.11 operationId: GetLdapGroups parameters: - name: q in: query description: Поисковый запрос required: false schema: type: string - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: > Количество пользователей на странице. Максимальное количество пользователей на странице - 200. schema: type: integer default: 60 responses: "200": description: Успешное получение страницы групп LDAP content: application/json: schema: type: array items: $ref: "#/components/schemas/LDAPGroupsPaged" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /ldap/groups/{remote_id}/link: post: tags: - LDAP summary: Связать группу LDAP description: | ##### Разрешения Должно быть разрешение `manage_system`. __Минимальная версия сервера__: 5.11 operationId: LinkLdapGroup parameters: - name: remote_id in: path description: GUID группы required: true schema: type: string responses: "201": description: Группа LDAP успешно связана content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" delete: tags: - Группы summary: Удалить связь для группы LDAP description: | ##### Разрешения Должно быть разрешение `manage_system`. __Минимальная версия сервера__: 5.11 operationId: UnlinkLdapGroup parameters: - name: remote_id in: path description: GUID группы required: true schema: type: string responses: "200": description: Успешное удаление связи группы LDAP content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /ldap/migrateid: post: tags: - LDAP summary: Миграция Id LDAP description: | Миграция IdAttribute LDAP на новое значение. ##### Разрешения Должно быть разрешение `manage_system`. __Минимальная версия сервера__: 5.26 operationId: MigrateIdLdap requestBody: content: application/json: schema: type: object required: - toAttribute properties: toAttribute: description: Новое значение IdAttribute type: string required: true responses: "200": description: Успешная миграция content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /ldap/certificate/public: post: tags: - LDAP summary: Загрузить публичный сертификат description: > Загрузите публичный сертификат для использования в проверке TLS. Сервер выберет жестко заданное имя файла для настройки PublicCertificateFile в вашем `config.json`. ##### Разрешения Должно быть разрешение `manage_system`. operationId: UploadLdapPublicCertificate requestBody: content: multipart/form-data: schema: type: object properties: certificate: description: Файл публичного сертификата type: string format: binary required: - certificate responses: "200": description: Успешная загрузка сертификата LDAP content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" delete: tags: - LDAP summary: Удалить публичный сертификат description: | Удалите текущий публичный сертификат, используемый для проверки TLS. ##### Разрешения Должно быть разрешение `manage_system`. operationId: DeleteLdapPublicCertificate responses: "200": description: Успешное удаление сертификата LDAP content: application/json: schema: $ref: "#/components/schemas/StatusOK" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /ldap/certificate/private: post: tags: - LDAP summary: Загрузить приватный ключ description: > Загрузите приватный ключ для использования в проверке TLS. Сервер выберет жестко заданное имя файла для настройки PrivateKeyFile в вашем `config.json`. ##### Разрешения Должно быть разрешение `manage_system`. operationId: UploadLdapPrivateCertificate requestBody: content: multipart/form-data: schema: type: object properties: certificate: description: Файл приватного ключа type: string format: binary required: - certificate responses: "200": description: Успешная загрузка сертификата LDAP content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" delete: tags: - LDAP summary: Удалить приватный ключ description: | Удалите текущий приватный ключ, используемый для проверки TLS. ##### Разрешения Должно быть разрешение `manage_system`. operationId: DeleteLdapPrivateCertificate responses: "200": description: Успешное удаление сертификата LDAP content: application/json: schema: $ref: "#/components/schemas/StatusOK" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /multi_search/users_channels: get: tags: - Multi search summary: Множественный поиск пользователей и каналов description: > Автозаполнение публичных каналов в команде на основе поискового запроса, указанного в URL запроса. __Минимальная версия сервера__: 6.248.0 ##### Разрешения Должен быть участником команды. Результаты поиска ограничены каналами и пользователями, к которым у пользователя есть доступ. operationId: MultiSearchUsersChannels parameters: - name: team_id in: query description: GUID команды required: true schema: type: string - name: term in: query description: Поисковый запрос required: true schema: type: string - name: channel_types in: query description: | Массив типов каналов. Тип канала - одно из возможных значений: 'G'-групповой канал, 'P'-приватный канал, 'O'-открытый канал schema: type: array items: type: string enum: - P - O - G - name: archived_channels in: query description: > Если установлено в false, результат будет содержать только неархивированные каналы. Если не установлено, результат будет содержать архивированные и неархивированные каналы required: false schema: type: boolean - name: archived_users in: query description: > Если установлено в false, результат будет содержать только неархивированных пользователей. Если не установлено, результат будет содержать архивированных и неархивированных пользователей required: false schema: type: boolean - name: limit in: query description: Лимит элементов на странице. schema: type: integer default: 150 maximum: 600 minimum: 1 responses: "200": description: Успешный множественный поиск content: application/json: schema: type: array items: $ref: "#/components/schemas/BoostedUserOrChannel" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" /groups: get: tags: - Groups summary: Получить группы description: > Получить список всех групп, не связанных с определенным каналом или командой. `not_associated_to_team` **ИЛИ** `not_associated_to_channel` обязательно. Если вы используете `not_associated_to_team`, вы должны быть администратором команды для этой конкретной команды (разрешение на управление этой командой). Если вы используете `not_associated_to_channel`, вы должны быть администратором канала для этого конкретного канала (разрешение на управление этим каналом). __Минимальная версия сервера__: 5.11 operationId: GetGroups parameters: - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: Количество групп на странице. schema: type: integer default: 60 - name: q in: query description: > Строка для поиска по шаблону в полях `name` и `display_name`. Вернет все группы, у которых поля `name` и `display_name` соответствуют любому из текста. schema: type: string - name: include_member_count in: query description: > Логическое значение, которое добавляет атрибут `member_count` к каждому объекту JSON группы. schema: type: boolean - name: not_associated_to_team in: query description: > GUID команды, который используется для возврата всех групп, не связанных с этой командой. required: true schema: type: string - name: not_associated_to_channel in: query description: > GUID группы, который используется для возврата всех групп, не связанных с этим каналом. required: true schema: type: string - name: since in: query description: > Возвращать только группы, которые были изменены с указанного Unix-времени (в миллисекундах). Все измененные группы, включая удаленные и созданные, будут возвращены. __Минимальная версия сервера__: 5.24 schema: type: integer format: int64 - name: filter_allow_reference in: query description: > Логическое значение, которое фильтрует записи группы с установленным атрибутом `allow_reference`. schema: type: boolean default: false - name: archived in: query description: > Если установлено значение true, результат будет содержать только архивированные группы. Если установлено значение false, результат будет содержать только неархивированные группы. Если не установлено, результат будет содержать архивированные и неархивированные группы. schema: type: boolean responses: "200": description: Успешное получение списка групп content: application/json: schema: type: array items: $ref: "#/components/schemas/Group" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" post: tags: - Groups summary: Создать пользовательскую группу description: | Создать группу типа `custom`. #### Разрешение Должно быть разрешение `create_custom_group`. __Минимальная версия сервера__: 6.3 operationId: CreateGroup requestBody: content: application/json: schema: type: object required: - name - display_name - source - allow_reference description: Объект группы для создания. properties: name: type: string description: | Уникальное имя группы, используемое для упоминания. display_name: type: string description: | Отображаемое имя группы, которое может включать пробелы. source: type: string description: Должно быть `custom` allow_reference: type: boolean description: Должно быть true user_ids: type: array description: Идентификаторы пользователей, которых нужно добавить в группу. items: type: string description: Объект группы и начальные участники. required: true responses: "201": description: Успешное создание группы и добавление участников. "400": $ref: "#/components/responses/BadRequest" "403": $ref: "#/components/responses/Forbidden" "501": description: | Группа имеет недопустимое значение `source`, или `allow_reference` не равно `true`, или группа имеет `remote_id`. /groups/names: post: tags: - Groups summary: Получить группы по именам description: > Получить группы из предоставленных имен групп. ##### Разрешения Возвращаются только разрешенные группы. См. "Получить группу" для более подробной информации. operationId: GetGroupsByNames requestBody: content: application/json: schema: type: object required: - names properties: names: type: array items: type: string minItems: 1 filter_allow_reference: type: boolean default: true include_member_count: type: boolean default: false responses: "200": description: Успешное получение списка групп content: application/json: schema: type: array items: $ref: "#/components/schemas/Group" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /groups/{group_id}: get: tags: - Groups summary: Получить группу description: | Получить группу по предоставленному идентификатору группы ##### Разрешения Необходимо иметь разрешение `manage_system`. __Минимальная версия сервера__: 5.11 operationId: GetGroup parameters: - name: group_id in: path description: GUID группы required: true schema: type: string responses: "200": description: Успешное получение группы content: application/json: schema: $ref: "#/components/schemas/Group" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" delete: tags: - Groups summary: Удалить пользовательскую группу description: | Мягкое удаление пользовательской группы. ##### Разрешения Необходимо иметь разрешение `custom_group_delete` для данной группы. __Минимальная версия сервера__: 6.3 operationId: DeleteGroup parameters: - name: group_id in: path description: Идентификатор группы. required: true schema: type: string responses: "200": description: Группа успешно удалена. content: application/json: schema: $ref: "#/components/schemas/StatusOK" "403": $ref: "#/components/responses/Forbidden" "404": description: Группа уже удалена или не существует. "501": description: У группы нет значения `source` равного `custom`. /groups/{group_id}/restore: post: tags: - Groups summary: Восстановить удаленную пользовательскую группу description: > Восстановить удаленную пользовательскую группу. ##### Разрешения Необходимо иметь разрешение `sysconsole_write_user_management_groups` для данной группы. __Минимальная версия сервера__: 6.118.5 operationId: RestoreGroup parameters: - name: group_id in: path description: Идентификатор группы. required: true schema: type: string responses: "200": description: Группа успешно восстановлена. content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": description: Предоставленный идентификатор группы не принадлежит пользовательской группе. "403": $ref: "#/components/responses/Forbidden" "404": description: Группа не удалена или не существует. /groups/{group_id}/patch: put: tags: - Groups summary: Изменить группу description: > Частично обновить группу, предоставив только те поля, которые вы хотите обновить. Пропущенные поля не будут обновлены. Поля, которые можно обновить, определены в теле запроса, все остальные предоставленные поля будут проигнорированы. ##### Разрешения Необходимо иметь разрешение `manage_system`. __Минимальная версия сервера__: 5.11 operationId: PatchGroup parameters: - name: group_id in: path description: GUID группы required: true schema: type: string requestBody: content: application/json: schema: type: object properties: name: type: string display_name: type: string description: type: string description: Объект группы, который нужно обновить required: true responses: "200": description: Успешное изменение группы content: application/json: schema: $ref: "#/components/schemas/Group" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /groups/{group_id}/teams/{team_id}/link: post: tags: - Groups summary: Связать команду с группой description: | Связать команду с группой ##### Разрешения Необходимо иметь разрешение `manage_team`. __Минимальная версия сервера__: 5.11 operationId: LinkGroupSyncableForTeam parameters: - name: group_id in: path description: GUID группы required: true schema: type: string - name: team_id in: path description: GUID команды required: true schema: type: string responses: "201": description: Команда успешно связана с группой content: application/json: schema: $ref: "#/components/schemas/GroupSyncableTeam" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" delete: tags: - Groups summary: Удалить связь команды с группой description: | Удалить связь команды с группой ##### Разрешения Необходимо иметь разрешение `manage_team`. __Минимальная версия сервера__: 5.11 operationId: UnlinkGroupSyncableForTeam parameters: - name: group_id in: path description: GUID группы required: true schema: type: string - name: team_id in: path description: GUID команды required: true schema: type: string responses: "200": description: Успешно удалена связь между командой и группой content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /groups/{group_id}/channels/{channel_id}/link: post: tags: - Groups summary: Связать канал с группой description: > Связать канал с группой ##### Разрешения Если канал является приватным, необходимо иметь разрешение `manage_private_channel_members`. В противном случае, необходимо иметь разрешение `manage_public_channel_members`. __Минимальная версия сервера__: 5.11 operationId: LinkGroupSyncableForChannel parameters: - name: group_id in: path description: GUID группы required: true schema: type: string - name: channel_id in: path description: GUID канала required: true schema: type: string responses: "201": description: Канал успешно связан с группой content: application/json: schema: $ref: "#/components/schemas/GroupSyncableChannel" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" delete: tags: - Groups summary: Удалить связь канала с группой description: > Удалить связь канала с группой ##### Разрешения Если канал является приватным, необходимо иметь разрешение `manage_private_channel_members`. В противном случае, необходимо иметь разрешение `manage_public_channel_members`. __Минимальная версия сервера__: 5.11 operationId: UnlinkGroupSyncableForChannel parameters: - name: group_id in: path description: GUID группы required: true schema: type: string - name: channel_id in: path description: GUID канала required: true schema: type: string responses: "200": description: Успешно удалена связь между каналом и группой content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /groups/{group_id}/teams/{team_id}: get: tags: - Groups summary: Получить GroupSyncable по идентификатору команды description: | Получить объект GroupSyncable с group_id и team_id из параметров ##### Разрешения Необходимо иметь разрешение `manage_system`. __Минимальная версия сервера__: 5.11 operationId: GetGroupSyncableForTeamId parameters: - name: group_id in: path description: GUID группы required: true schema: type: string - name: team_id in: path description: GUID команды required: true schema: type: string responses: "200": description: Успешное получение объекта GroupSyncable content: application/json: schema: $ref: "#/components/schemas/GroupSyncableTeam" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /groups/{group_id}/channels/{channel_id}: get: tags: - Groups summary: Получить GroupSyncable по идентификатору канала description: | Получить объект GroupSyncable с group_id и channel_id из параметров ##### Разрешения Необходимо иметь разрешение `manage_system`. __Минимальная версия сервера__: 5.11 operationId: GetGroupSyncableForChannelId parameters: - name: group_id in: path description: GUID группы required: true schema: type: string - name: channel_id in: path description: GUID канала required: true schema: type: string responses: "200": description: Успешное получение объекта GroupSyncable content: application/json: schema: $ref: "#/components/schemas/GroupSyncableChannel" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /groups/{group_id}/teams: get: tags: - Groups summary: Получить команды группы description: | Получить список команд, связанных с группой ##### Разрешения Необходимо иметь разрешение `manage_system`. __Минимальная версия сервера__: 5.11 operationId: GetGroupSyncablesTeams parameters: - name: group_id in: path description: GUID группы required: true schema: type: string responses: "200": description: Успешное получение списка команд content: application/json: schema: type: array items: $ref: "#/components/schemas/GroupSyncableTeams" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /groups/{group_id}/channels: get: tags: - Groups summary: Получить каналы группы description: | Получить список каналов, связанных с группой ##### Разрешения Необходимо иметь разрешение `manage_system`. __Минимальная версия сервера__: 5.11 operationId: GetGroupSyncablesChannels parameters: - name: group_id in: path description: GUID группы required: true schema: type: string responses: "200": description: Успешное получение списка каналов content: application/json: schema: type: array items: $ref: "#/components/schemas/GroupSyncableChannels" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /groups/{group_id}/teams/{team_id}/patch: put: tags: - Groups summary: Изменение GroupSyncable, связанного с командой description: > Частичное обновление GroupSyncable, предоставив только поля, которые вы хотите обновить. Пропущенные поля не будут обновлены. Поля, которые могут быть обновлены, определены в теле запроса, все остальные предоставленные поля будут проигнорированы. ##### Разрешения Должно быть разрешение `manage_system`. __Минимальная версия сервера__: 5.11 operationId: PatchGroupSyncableForTeam parameters: - name: group_id in: path description: GUID группы required: true schema: type: string - name: team_id in: path description: GUID команды required: true schema: type: string requestBody: description: Объект GroupSyncable, который нужно обновить required: true content: application/json: schema: type: object properties: auto_add: type: boolean responses: "200": description: Успешное изменение GroupSyncable content: application/json: schema: $ref: "#/components/schemas/GroupSyncableTeam" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /groups/{group_id}/channels/{channel_id}/patch: put: tags: - Groups summary: Изменение GroupSyncable, связанного с каналом description: > Частичное обновление GroupSyncable, предоставив только поля, которые вы хотите обновить. Пропущенные поля не будут обновлены. Поля, которые могут быть обновлены, определены в теле запроса, все остальные предоставленные поля будут проигнорированы. ##### Разрешения Должно быть разрешение `manage_system`. __Минимальная версия сервера__: 5.11 operationId: PatchGroupSyncableForChannel parameters: - name: group_id in: path description: GUID группы required: true schema: type: string - name: channel_id in: path description: GUID канала required: true schema: type: string requestBody: description: Объект GroupSyncable, который нужно обновить required: true content: application/json: schema: type: object properties: auto_add: type: boolean responses: "200": description: Успешное изменение GroupSyncable content: application/json: schema: $ref: "#/components/schemas/GroupSyncableChannel" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /groups/{group_id}/members: get: tags: - Groups summary: Получить пользователей группы description: | Получить список пользователей, связанных с данной группой. ##### Разрешения Должно быть разрешение `manage_system`. __Минимальная версия сервера__: 5.11 operationId: GetGroupUsers parameters: - name: group_id in: path description: GUID группы required: true schema: type: string - name: page in: query description: Страница для выбора. schema: type: integer default: 0 - name: per_page in: query description: Количество групп на странице. schema: type: integer default: 60 responses: "200": description: Успешное получение списка пользователей content: application/json: schema: type: object properties: members: type: array items: $ref: "#/components/schemas/User" total_member_count: type: integer "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" delete: tags: - Groups summary: Удаление участников из пользовательской группы description: | Мягкое удаление участников пользовательской группы. ##### Разрешения Должно быть разрешение `custom_group_manage_members` для данной группы. __Минимальная версия сервера__: 6.3 operationId: DeleteGroupMembers parameters: - name: group_id in: path description: ID группы для удаления. required: true schema: type: string requestBody: required: true content: application/json: schema: type: object description: > Объект, содержащий идентификаторы пользователей, которых нужно удалить. properties: user_ids: type: array items: type: string responses: "200": description: Успешное удаление участников группы. content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "403": $ref: "#/components/responses/Forbidden" "404": description: Группа не найдена. "501": description: Если у группы нет значения `source` равного `custom`. post: tags: - Groups summary: Добавление участников в пользовательскую группу description: | Добавление участников в пользовательскую группу. ##### Разрешения Должно быть разрешение `custom_group_manage_members` для данной группы. __Минимальная версия сервера__: 6.3 operationId: AddGroupMembers parameters: - name: group_id in: path description: ID группы. required: true schema: type: string requestBody: required: true content: application/json: schema: type: object description: > Объект, содержащий идентификаторы пользователей, которых нужно добавить. properties: user_ids: type: array items: type: string responses: "200": description: Успешное добавление участников группы. content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "403": $ref: "#/components/responses/Forbidden" "404": description: Группа не найдена. "501": description: Если у группы нет значения `source` равного `custom`. /groups/{group_id}/stats: get: tags: - Groups summary: Получить статистику группы description: | Получить статистику данной группы. ##### Разрешения Должно быть разрешение `manage_system`. __Минимальная версия сервера__: 5.26 operationId: GetGroupStats parameters: - name: group_id in: path description: GUID группы required: true schema: type: string responses: "200": description: Успешное получение статистики группы content: application/json: schema: type: object properties: group_id: type: string total_member_count: type: integer "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /channels/{channel_id}/groups: get: tags: - Groups summary: Получить группы канала description: | Получить список групп, связанных с данным каналом. ##### Разрешения Должно быть разрешение `manage_system`. __Минимальная версия сервера__: 5.11 operationId: GetGroupsByChannel parameters: - name: channel_id in: path description: GUID канала required: true schema: type: string - name: page in: query description: Страница для выбора. schema: type: integer default: 0 - name: per_page in: query description: Количество групп на странице. schema: type: integer default: 60 - name: filter_allow_reference in: query description: > Булево значение, которое фильтрует записи групп с установленным атрибутом `allow_reference`. schema: type: boolean default: false responses: "200": description: Успешное получение списка групп content: application/json: schema: type: array items: $ref: "#/components/schemas/Group" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /teams/{team_id}/groups: get: tags: - Groups summary: Получить группы команды description: | Получить список групп, связанных с данной командой. __Минимальная версия сервера__: 5.11 operationId: GetGroupsByTeam parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: page in: query description: Страница для выбора. schema: type: integer default: 0 - name: per_page in: query description: Количество групп на странице. schema: type: integer default: 60 - name: filter_allow_reference in: query description: > Булево значение, которое фильтрует записи групп с установленным атрибутом `allow_reference`. schema: type: boolean default: false responses: "200": description: Успешное получение списка групп content: application/json: schema: type: array items: $ref: "#/components/schemas/Group" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /teams/{team_id}/groups_by_channels: get: tags: - Groups summary: Получить группы команды по каналам description: > Получить набор групп, связанных с каналами в данной команде, сгруппированных по каналу. ##### Разрешения Необходимо иметь разрешение `manage_system` или доступ только для текущего пользователя __Минимальная версия сервера__: 5.11 operationId: GetGroupsAssociatedToChannelsByTeam parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: page in: query description: Выбираемая страница. schema: type: integer default: 0 - name: per_page in: query description: Количество групп на странице. schema: type: integer default: 60 - name: filter_allow_reference in: query description: > Булево значение, которое фильтрует записи групп с установленным атрибутом `allow_reference`. schema: type: boolean default: false - name: paginate in: query description: > Булево значение, определяющее, следует ли применять пагинацию или нет schema: type: boolean default: false responses: "200": description: Успешное получение списка групп content: application/json: schema: type: object items: $ref: "#/components/schemas/GroupsAssociatedToChannels" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /users/{user_id}/groups: get: tags: - Groups summary: Получить группы для userId description: | Получить список групп, связанных с пользователем __Минимальная версия сервера__: 5.24 operationId: GetGroupsByUserId parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string responses: "200": description: Успешное получение списка групп content: application/json: schema: type: array items: $ref: "#/components/schemas/Group" "400": $ref: "#/components/responses/BadRequest" "501": $ref: "#/components/responses/NotImplemented" /cluster/status: get: tags: - Cluster summary: Получить статус кластера description: > Получить набор информации для каждого узла в кластере, полезный для проверки статуса и состояния каждого узла. ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: GetClusterStatus responses: "200": description: Статус кластера успешно получен content: application/json: schema: type: array items: $ref: "#/components/schemas/ClusterInfo" "403": $ref: "#/components/responses/Forbidden" /brand/image: get: tags: - Brand summary: Получить изображение бренда description: > Получить ранее загруженное изображение бренда. Возвращает 404, если изображение бренда не было загружено. ##### Разрешения Разрешения не требуются. operationId: GetBrandImage responses: "200": description: Успешное получение изображения бренда content: application/json: schema: type: string "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" post: tags: - Brand summary: Загрузить изображение бренда description: | Загружает изображение бренда. ##### Разрешения Должно быть разрешение `manage_system`. operationId: UploadBrandImage requestBody: content: multipart/form-data: schema: type: object properties: image: description: Изображение для загрузки type: string format: binary required: - image responses: "201": description: Успешная загрузка изображения бренда 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" "501": $ref: "#/components/responses/NotImplemented" delete: tags: - Brand summary: Удалить текущее изображение бренда description: > Удаляет ранее загруженное изображение бренда. Возвращает 404, если изображение бренда не было загружено. ##### Разрешения Должно быть разрешение `manage_system`. __Минимальная версия сервера: 5.6__ operationId: DeleteBrandImage responses: "200": description: Изображение бренда успешно удалено content: application/json: schema: $ref: "#/components/schemas/StatusOK" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /commands: post: tags: - Commands summary: Создать команду description: | Создать команду для команды. ##### Разрешения `manage_slash_commands` для команды, в которой находится команда. operationId: CreateCommand requestBody: content: application/json: schema: type: object required: - team_id - method - trigger - url properties: team_id: type: string description: ID команды, в которой должна быть создана команда method: type: string description: "`'P'` для POST-запроса, `'G'` для GET-запроса" trigger: type: string description: Слово активации для запуска команды url: type: string description: URL, по которому команда будет делать запрос description: команда для создания required: true responses: "201": description: Команда успешно создана content: application/json: schema: $ref: "#/components/schemas/Command" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" get: tags: - Commands summary: Список команд для команды description: > Список команд для команды. ##### Разрешения `manage_slash_commands`, если нужно получить список пользовательских команд. operationId: ListCommands parameters: - name: team_id in: query description: ID команды. schema: type: string - name: custom_only in: query description: > Чтобы получить только пользовательские команды. Если установлено в false, будут получены пользовательские команды, если у пользователя есть доступ, плюс системные команды, в противном случае только системные команды. schema: type: boolean default: false responses: "200": description: Список команд успешно получен content: application/json: schema: type: array items: $ref: "#/components/schemas/Command" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /teams/{team_id}/commands/autocomplete: get: tags: - Commands summary: Список команд автозаполнения description: | Список команд автозаполнения в команде. ##### Разрешения `view_team` для команды. operationId: ListAutocompleteCommands parameters: - name: team_id in: path description: GUID команды required: true schema: type: string responses: "200": description: Команды автозаполнения успешно получены content: application/json: schema: type: array items: $ref: "#/components/schemas/Command" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /teams/{team_id}/commands/autocomplete_suggestions: get: tags: - Commands summary: Список данных автозаполнения команд description: | Список данных автозаполнения команд для команды. ##### Разрешения `view_team` для команды. __Минимальная версия сервера__: 5.24 operationId: ListCommandAutocompleteSuggestions parameters: - name: team_id in: path description: GUID команды required: true schema: type: string - name: user_input in: query description: Строка, введенная пользователем. required: true schema: type: string - name: channel_id in: query description: ID канала, в котором пользователь вводит сообщение required: false schema: type: string - name: root_id in: query description: ID треда, в котором пользователь вводит сообщение required: false schema: type: string responses: "200": description: Данные автозаполнения команд успешно получены content: application/json: schema: type: array items: $ref: "#/components/schemas/AutocompleteSuggestion" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /commands/{command_id}: get: tags: - Commands summary: Получить команду description: > Получить определение команды по строке идентификатора команды. ##### Разрешения Необходимо иметь разрешение `manage_slash_commands` для команды, в которой находится команда. __Минимальная версия сервера__: 5.22 operationId: GetCommandById parameters: - in: path name: command_id description: ID команды для получения required: true schema: type: string responses: "200": description: Команда успешно получена content: application/json: schema: $ref: "#/components/schemas/Command" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" put: tags: - Commands summary: Обновить команду description: > Обновить одну команду по строке идентификатора команды и структуре команды. ##### Разрешения Необходимо иметь разрешение `manage_slash_commands` для команды, в которой находится команда. operationId: UpdateCommand parameters: - in: path name: command_id description: ID команды для обновления required: true schema: type: string requestBody: content: application/json: schema: $ref: "#/components/schemas/Command" required: true responses: "200": description: Команда успешно обновлена content: application/json: schema: $ref: "#/components/schemas/Command" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" delete: tags: - Commands summary: Удалить команду description: > Удалить команду по строке идентификатора команды. ##### Разрешения Необходимо иметь разрешение `manage_slash_commands` для команды, в которой находится команда. operationId: DeleteCommand parameters: - in: path name: command_id description: ID команды для удаления required: true schema: type: string responses: "200": description: Команда успешно удалена content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /commands/{command_id}/move: put: tags: - Commands summary: Переместить команду description: > Переместить команду в другую команду по строке идентификатора команды. ##### Разрешения Необходимо иметь разрешение `manage_slash_commands` для команды, в которой команда находится в данный момент, и для команды назначения. __Минимальная версия сервера__: 5.22 operationId: MoveCommand parameters: - in: path name: command_id description: ID команды для перемещения required: true schema: type: string requestBody: content: application/json: schema: type: object properties: team_id: type: string description: ID команды назначения required: true responses: "200": description: Команда успешно перемещена content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /commands/{command_id}/regen_token: put: tags: - Commands summary: Сгенерировать новый токен description: > Сгенерировать новый токен для команды по строке идентификатора команды. ##### Разрешения Необходимо иметь разрешение `manage_slash_commands` для команды, в которой находится команда. operationId: RegenCommandToken parameters: - in: path name: command_id description: ID команды для генерации нового токена required: true schema: type: string responses: "200": description: Токен успешно сгенерирован content: application/json: schema: type: object properties: token: description: Новый токен type: string "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /commands/execute: post: tags: - Commands summary: Выполнить команду description: > Выполнить команду в команде. ##### Разрешения Необходимо иметь разрешение `use_slash_commands` для команды, в которой находится команда. operationId: ExecuteCommand requestBody: content: application/json: schema: type: object required: - channel_id - command properties: channel_id: type: string description: ID канала, в котором будет выполнена команда command: type: string description: Слэш-команда для выполнения description: команда для выполнения required: true responses: "200": description: Команда успешно выполнена content: application/json: schema: $ref: "#/components/schemas/CommandResponse" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /commands/{command_id}/assign/{user_id}: post: tags: - Commands summary: Назначить команду пользователю description: > Назначить команду указанному пользователю. ##### Разрешения Необходимо иметь разрешение `manage_slash_commands` для команды, в которой находится команда. __Минимальная версия сервера__: 6.212 operationId: AssignCommand parameters: - name: command_id in: path description: ID команды required: true schema: type: string - name: user_id in: path description: ID пользователя, которому назначается команда. required: true schema: type: string responses: "200": description: Команда успешно назначена. content: application/json: schema: $ref: "#/components/schemas/Command" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /oauth/apps: post: tags: - OAuth summary: Регистрация OAuth приложения description: > Зарегистрируйте клиентское приложение OAuth 2.0 с Time в качестве поставщика услуг. ##### Разрешения Должно быть разрешение `manage_oauth`. operationId: CreateOAuthApp requestBody: content: application/json: schema: type: object required: - name - description - callback_urls - homepage properties: name: type: string description: Имя клиентского приложения description: type: string description: Краткое описание приложения icon_url: type: string description: URL иконки для отображения с приложением callback_urls: type: array items: type: string description: Список URL-адресов обратного вызова для приложения homepage: type: string description: Ссылка на веб-сайт приложения is_trusted: type: boolean description: > Установите значение `true`, чтобы пропустить запрос разрешения у пользователей description: OAuth приложение для регистрации required: true responses: "201": description: Успешная регистрация приложения content: application/json: schema: $ref: "#/components/schemas/OAuthApp" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" get: tags: - OAuth summary: Получить OAuth приложения description: > Получить страницу клиентских приложений OAuth 2.0, зарегистрированных в Time. ##### Разрешения С разрешением `manage_oauth` возвращаются приложения, зарегистрированные вошедшим пользователем. С разрешением `manage_system_wide_oauth` возвращаются все приложения, независимо от создателя. operationId: GetOAuthApps parameters: - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: Количество приложений на странице. schema: type: integer default: 60 responses: "200": description: Успешное получение списка OAuth приложений content: application/json: schema: type: array items: $ref: "#/components/schemas/OAuthApp" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /oauth/apps/{app_id}: get: tags: - OAuth summary: Получить OAuth приложение description: > Получить клиентское приложение OAuth 2.0, зарегистрированное в Time. ##### Разрешения Если создатель приложения, должно быть разрешение `manage_oauth`, в противном случае требуется разрешение `manage_system_wide_oauth`. operationId: GetOAuthApp parameters: - name: app_id in: path description: Идентификатор клиента приложения required: true schema: type: string responses: "200": description: Успешное получение приложения content: application/json: schema: $ref: "#/components/schemas/OAuthApp" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" put: tags: - OAuth summary: Обновить OAuth приложение description: > Обновить клиентское приложение OAuth 2.0 на основе структуры OAuth. ##### Разрешения Если создатель приложения, должно быть разрешение `manage_oauth`, в противном случае требуется разрешение `manage_system_wide_oauth`. operationId: UpdateOAuthApp parameters: - name: app_id in: path description: Идентификатор клиента приложения required: true schema: type: string requestBody: content: application/json: schema: type: object required: - id - name - description - callback_urls - homepage properties: id: type: string description: Идентификатор клиентского приложения name: type: string description: Имя клиентского приложения description: type: string description: Краткое описание приложения icon_url: type: string description: URL иконки для отображения с приложением callback_urls: type: array items: type: string description: Список URL-адресов обратного вызова для приложения homepage: type: string description: Ссылка на веб-сайт приложения is_trusted: type: boolean description: > Установите значение `true`, чтобы пропустить запрос разрешения у пользователей. Будет установлено в false, если значение не предоставлено. description: OAuth приложение для обновления required: true responses: "200": description: Успешное обновление приложения content: application/json: schema: $ref: "#/components/schemas/OAuthApp" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" delete: tags: - OAuth summary: Удалить OAuth приложение description: > Удалить и отменить регистрацию клиентского приложения OAuth 2.0 ##### Разрешения Если создатель приложения, должно быть разрешение `manage_oauth`, в противном случае требуется разрешение `manage_system_wide_oauth`. operationId: DeleteOAuthApp parameters: - name: app_id in: path description: Идентификатор клиента приложения required: true schema: type: string responses: "200": description: Успешное удаление приложения content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" /oauth/apps/{app_id}/regen_secret: post: tags: - OAuth summary: Перегенерировать секрет OAuth приложения description: > Перегенерировать клиентский секрет для клиентского приложения OAuth 2.0, зарегистрированного в Time. ##### Разрешения Если создатель приложения, должно быть разрешение `manage_oauth`, в противном случае требуется разрешение `manage_system_wide_oauth`. operationId: RegenerateOAuthAppSecret parameters: - name: app_id in: path description: Идентификатор клиента приложения required: true schema: type: string responses: "200": description: Успешное перегенерирование секрета content: application/json: schema: $ref: "#/components/schemas/OAuthApp" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" /oauth/apps/{app_id}/info: get: tags: - OAuth summary: Получить информацию о OAuth приложении description: > Получить публичную информацию о клиентском приложении OAuth 2.0, зарегистрированном в Time. Секрет клиента приложения будет скрыт. ##### Разрешения Должен быть аутентифицирован. operationId: GetOAuthAppInfo parameters: - name: app_id in: path description: Идентификатор клиента приложения required: true schema: type: string responses: "200": description: Успешное получение приложения content: application/json: schema: $ref: "#/components/schemas/OAuthApp" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" /users/{user_id}/oauth/apps/authorized: get: tags: - OAuth summary: Получить авторизованные OAuth приложения description: > Получить страницу клиентских приложений OAuth 2.0, авторизованных для доступа к учетной записи пользователя. ##### Разрешения Должен быть аутентифицирован как пользователь или иметь разрешение `edit_other_users`. operationId: GetAuthorizedOAuthAppsForUser parameters: - name: user_id in: path description: GUID пользователя required: true schema: type: string - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: Количество приложений на странице. schema: type: integer default: 60 responses: "200": description: Успешное получение списка OAuth приложений content: application/json: schema: type: array items: $ref: "#/components/schemas/OAuthApp" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /elasticsearch/test: post: tags: - ElasticSearch summary: Тестирование конфигурации Elasticsearch description: > Проверьте текущую конфигурацию Elasticsearch, чтобы убедиться, что сервер Elasticsearch может быть успешно подключен. При необходимости предоставьте конфигурацию в теле запроса для тестирования. Если в теле запроса нет действительной конфигурации, будет протестирована текущая конфигурация сервера. __Минимальная версия сервера__: 4.1 ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: TestElasticsearch responses: "200": description: Тестирование Elasticsearch успешно content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /elasticsearch/purge_indexes: post: tags: - ElasticSearch summary: Очистить все индексы Elasticsearch description: > Удаляет индексы Elasticsearch и их содержимое. После вызова этого конечного пункта необходимо запланировать новую задачу индексирования Elasticsearch для повторного заполнения индексов. __Минимальная версия сервера__: 4.1 ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: PurgeElasticsearchIndexes requestBody: content: application/json: schema: type: array items: $ref: "#/components/schemas/SearchIndexType" description: > Индексы Elasticsearch, которые будут удалены. Если тело запроса или список пуст, все индексы будут удалены responses: "200": description: Индексы успешно очищены. content: application/json: schema: $ref: "#/components/schemas/StatusOK" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /data_retention/policy: get: tags: - Data retention summary: Получить глобальную политику хранения данных description: > Получает текущие детали глобальной политики хранения данных с сервера, включая, какие данные должны быть удалены и крайние сроки для каждого типа данных, которые должны быть удалены. __Минимальная версия сервера__: 4.3 ##### Разрешения Требуется активная сессия, но не требуется других разрешений. ##### Лицензия Требуется лицензия E20. operationId: GetDataRetentionPolicy responses: "200": description: | Детали глобальной политики хранения данных успешно получены. content: application/json: schema: $ref: "#/components/schemas/GlobalDataRetentionPolicy" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /data_retention/policies_count: get: tags: - Data retention summary: Получить количество детализированных политик хранения данных description: > Получает количество детализированных (например, специфичных для команды или канала) политик хранения данных с сервера. __Минимальная версия сервера__: 5.35 ##### Разрешения Необходимо иметь разрешение `sysconsole_read_compliance_data_retention`. ##### Лицензия Требуется лицензия E20. operationId: GetDataRetentionPoliciesCount responses: "200": description: Количество политик хранения данных успешно получено. content: application/json: schema: type: object properties: total_count: type: integer description: Количество детализированных политик хранения данных. "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /data_retention/policies: get: tags: - Data retention summary: Получить детализированные политики хранения данных description: > Получает детали о детализированных (например, специфичных для команды или канала) политиках хранения данных с сервера. __Минимальная версия сервера__: 5.35 ##### Разрешения Необходимо иметь разрешение `sysconsole_read_compliance_data_retention`. ##### Лицензия Требуется лицензия E20. operationId: GetDataRetentionPolicies parameters: - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: > Количество политик на странице. Максимальный лимит - 200 на страницу. schema: type: integer default: 60 responses: "200": description: Детали политик хранения данных успешно получены. content: application/json: schema: type: array items: $ref: "#/components/schemas/DataRetentionPolicyWithTeamAndChannelCounts" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" post: tags: - Data retention summary: Создать новую детализированную политику хранения данных description: > Создает новую детализированную политику хранения данных с указанным отображаемым именем и продолжительностью хранения сообщений. __Минимальная версия сервера__: 5.35 ##### Разрешения Необходимо иметь разрешение `sysconsole_write_compliance_data_retention`. ##### Лицензия Требуется лицензия E20. operationId: CreateDataRetentionPolicy requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/DataRetentionPolicyCreate" responses: "201": description: Политика хранения данных успешно создана. content: application/json: schema: $ref: "#/components/schemas/DataRetentionPolicyWithTeamAndChannelCounts" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /data_retention/policies/{policy_id}: get: tags: - Data retention summary: Получить детализированную политику хранения данных description: | Получает детали о детализированной политике хранения данных по ID. __Минимальная версия сервера__: 5.35 ##### Разрешения Необходимо иметь разрешение `sysconsole_read_compliance_data_retention`. ##### Лицензия Требуется лицензия E20. operationId: GetDataRetentionPolicyByID parameters: - name: policy_id in: path description: ID детализированной политики хранения данных. required: true schema: type: string responses: "200": description: Детали политики хранения данных успешно получены. content: application/json: schema: $ref: "#/components/schemas/DataRetentionPolicyWithTeamAndChannelCounts" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" patch: tags: - Data retention summary: Обновить детализированную политику хранения данных description: > Обновляет (заменяет поля) детализированной политики хранения данных. Если какие-либо поля опущены, они не будут изменены. __Минимальная версия сервера__: 5.35 ##### Разрешения Необходимо иметь разрешение `sysconsole_write_compliance_data_retention`. ##### Лицензия Требуется лицензия E20. operationId: PatchDataRetentionPolicy parameters: - name: policy_id in: path description: ID детализированной политики хранения данных. required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/DataRetentionPolicyWithTeamAndChannelIds" responses: "200": description: Политика хранения данных успешно обновлена. content: application/json: schema: $ref: "#/components/schemas/DataRetentionPolicyWithTeamAndChannelCounts" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" delete: tags: - Data retention summary: Удалить детализированную политику хранения данных description: > Удаляет детализированную политику хранения данных. __Минимальная версия сервера__: 5.35 ##### Разрешения Необходимо иметь разрешение `sysconsole_write_compliance_data_retention`. ##### Лицензия Требуется лицензия E20. operationId: DeleteDataRetentionPolicy parameters: - name: policy_id in: path description: ID детализированной политики хранения данных. required: true schema: type: string responses: "200": description: Политика хранения данных успешно удалена. content: application/json: schema: $ref: "#/components/schemas/StatusOK" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /data_retention/policies/{policy_id}/teams: get: tags: - Data retention summary: Получить команды для детализированной политики хранения данных description: > Получает команды, к которым применяется детализированная политика хранения данных. __Минимальная версия сервера__: 5.35 ##### Разрешения Необходимо иметь разрешение `sysconsole_read_compliance_data_retention`. ##### Лицензия Требуется лицензия E20. operationId: GetTeamsForRetentionPolicy parameters: - name: policy_id in: path description: ID детализированной политики хранения данных. required: true schema: type: string - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: | Количество команд на странице. Максимальный лимит - 200 на страницу. schema: type: integer default: 60 responses: "200": description: Команды для политики хранения данных успешно получены. content: application/json: schema: type: array items: $ref: "#/components/schemas/Team" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" post: tags: - Data retention summary: Добавить команды к детализированной политике хранения данных description: > Добавляет команды к детализированной политике хранения данных. __Минимальная версия сервера__: 5.35 ##### Разрешения Необходимо иметь разрешение `sysconsole_write_compliance_data_retention`. ##### Лицензия Требуется лицензия E20. operationId: AddTeamsToRetentionPolicy parameters: - name: policy_id in: path description: ID детализированной политики хранения данных. required: true schema: type: string requestBody: required: true content: application/json: schema: type: array items: type: string description: ID команд для добавления в политику. responses: "200": description: Команды успешно добавлены к политике хранения данных. content: application/json: schema: $ref: "#/components/schemas/StatusOK" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" delete: tags: - Data retention summary: Удалить команды из детализированной политики хранения данных description: > Удаляет команды из детализированной политики хранения данных. __Минимальная версия сервера__: 5.35 ##### Разрешения Необходимо иметь разрешение `sysconsole_write_compliance_data_retention`. ##### Лицензия Требуется лицензия E20. operationId: RemoveTeamsFromRetentionPolicy parameters: - name: policy_id in: path description: ID детализированной политики хранения данных. required: true schema: type: string requestBody: required: true content: application/json: schema: type: array items: type: string description: ID команд для удаления из политики. responses: "200": description: Команды успешно удалены из политики хранения данных. content: application/json: schema: $ref: "#/components/schemas/StatusOK" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /data_retention/policies/{policy_id}/teams/search: post: tags: - Data retention summary: Поиск команд в детализированной политике хранения данных description: > Выполняет поиск команд, к которым применяется детализированная политика хранения данных. __Минимальная версия сервера__: 5.35 ##### Разрешения Необходимо иметь разрешение `sysconsole_read_compliance_data_retention`. ##### Лицензия Требуется лицензия E20. operationId: SearchTeamsForRetentionPolicy parameters: - name: policy_id in: path description: ID детализированной политики хранения данных. required: true schema: type: string requestBody: required: true content: application/json: schema: type: object properties: term: type: string description: > Поисковый запрос для сопоставления с именем или отображаемым именем команд responses: "200": description: Команды для политики хранения данных успешно найдены. content: application/json: schema: type: array items: $ref: "#/components/schemas/Team" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /data_retention/policies/{policy_id}/channels: get: tags: - Data retention summary: Получить каналы для детализированной политики хранения данных description: > Получает каналы, к которым применяется детализированная политика хранения данных. __Минимальная версия сервера__: 5.35 ##### Разрешения Необходимо иметь разрешение `sysconsole_read_compliance_data_retention`. ##### Лицензия Требуется лицензия E20. operationId: GetChannelsForRetentionPolicy parameters: - name: policy_id in: path description: ID детализированной политики хранения данных. required: true schema: type: string - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: > Количество каналов на странице. Максимальный лимит - 200 на страницу. schema: type: integer default: 60 responses: "200": description: Каналы для политики хранения данных успешно получены. content: application/json: schema: $ref: "#/components/schemas/ChannelListWithTeamData" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" post: tags: - Data retention summary: Добавить каналы к детализированной политике хранения данных description: > Добавляет каналы к детализированной политике хранения данных. __Минимальная версия сервера__: 5.35 ##### Разрешения Необходимо иметь разрешение `sysconsole_write_compliance_data_retention`. ##### Лицензия Требуется лицензия E20. operationId: AddChannelsToRetentionPolicy parameters: - name: policy_id in: path description: ID детализированной политики хранения данных. required: true schema: type: string requestBody: required: true content: application/json: schema: type: array items: type: string description: ID каналов для добавления в политику. responses: "200": description: Каналы успешно добавлены к политике хранения данных. content: application/json: schema: $ref: "#/components/schemas/StatusOK" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" delete: tags: - Data retention summary: Удалить каналы из детализированной политики хранения данных description: > Удаляет каналы из детализированной политики хранения данных. __Минимальная версия сервера__: 5.35 ##### Разрешения Необходимо иметь разрешение `sysconsole_write_compliance_data_retention`. ##### Лицензия Требуется лицензия E20. operationId: RemoveChannelsFromRetentionPolicy parameters: - name: policy_id in: path description: ID детализированной политики хранения данных. required: true schema: type: string requestBody: required: true content: application/json: schema: type: array items: type: string description: ID каналов для удаления из политики. responses: "200": description: Каналы успешно удалены из политики хранения данных. content: application/json: schema: $ref: "#/components/schemas/StatusOK" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /data_retention/policies/{policy_id}/channels/search: post: tags: - Data retention summary: Поиск каналов в детализированной политике хранения данных description: > Выполняет поиск каналов, к которым применяется детализированная политика хранения данных. __Минимальная версия сервера__: 5.35 ##### Разрешения Необходимо иметь разрешение `sysconsole_read_compliance_data_retention`. ##### Лицензия Требуется лицензия E20. operationId: SearchChannelsForRetentionPolicy parameters: - name: policy_id in: path description: ID детализированной политики хранения данных. required: true schema: type: string requestBody: required: true content: application/json: schema: type: object properties: term: type: string description: | Строка для поиска в имени канала, отображаемом имени и цели. team_ids: type: array items: type: string description: > Фильтрует результаты, чтобы вернуть каналы, принадлежащие указанным ID команд public: type: boolean description: > Фильтрует результаты, чтобы вернуть только публичные/открытые каналы, может использоваться вместе с `private`, чтобы вернуть как `public`, так и `private` каналы private: type: boolean description: > Фильтрует результаты, чтобы вернуть только приватные каналы, может использоваться вместе с `public`, чтобы вернуть как `private`, так и `public` каналы deleted: type: boolean description: > Фильтрует результаты, чтобы вернуть только удаленные/архивированные каналы responses: "200": description: Каналы для политики хранения данных успешно найдены. content: application/json: schema: $ref: "#/components/schemas/ChannelListWithTeamData" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /plugins: post: tags: - Plugins summary: Загрузить плагин description: > Загрузите плагин, который содержится в сжатом файле .tar.gz. Плагины и загрузка плагинов должны быть включены в настройках конфигурации сервера. ##### Разрешения Должно быть разрешение `manage_system`. __Минимальная версия сервера__: 4.4 operationId: UploadPlugin requestBody: content: multipart/form-data: schema: type: object properties: plugin: description: Изображение плагина для загрузки type: string format: binary force: description: > Установите значение 'true', чтобы перезаписать ранее установленный плагин с тем же идентификатором, если он есть type: string required: - plugin responses: "201": description: Успешная загрузка плагина 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" "501": $ref: "#/components/responses/NotImplemented" get: tags: - Plugins summary: Получить плагины description: > Получите список неактивных и список активных манифестов плагинов. Плагины должны быть включены в настройках конфигурации сервера. ##### Разрешения Должно быть разрешение `manage_system`. __Минимальная версия сервера__: 4.4 operationId: GetPlugins responses: "200": description: Успешное получение плагинов content: application/json: schema: type: object properties: active: type: array items: $ref: "#/components/schemas/PluginManifest" inactive: type: array items: $ref: "#/components/schemas/PluginManifest" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /plugins/install_from_url: post: tags: - Plugins summary: Установить плагин из URL description: > Укажите URL для плагина, сжатого в файле .tar.gz. Плагины должны быть включены в настройках конфигурации сервера. ##### Разрешения Должно быть разрешение `manage_system`. __Минимальная версия сервера__: 5.14 operationId: InstallPluginFromUrl parameters: - name: plugin_download_url in: query description: URL для загрузки плагина required: true schema: type: string - name: force in: query description: > Установите значение 'true', чтобы перезаписать ранее установленный плагин с тем же идентификатором, если он есть required: false schema: type: string responses: "201": description: Успешная установка плагина content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /plugins/{plugin_id}: delete: tags: - Plugins summary: Удалить плагин description: > Удалите плагин с указанным идентификатором с сервера. Все файлы плагина будут удалены. Плагины должны быть включены в настройках конфигурации сервера. ##### Разрешения Должно быть разрешение `manage_system`. __Минимальная версия сервера__: 4.4 operationId: RemovePlugin parameters: - name: plugin_id in: path required: true schema: type: string responses: "200": description: Плагин успешно удален content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" /plugins/{plugin_id}/enable: post: tags: - Plugins summary: Включить плагин description: > Включите ранее загруженный плагин. Плагины должны быть включены в настройках конфигурации сервера. ##### Разрешения Должно быть разрешение `manage_system`. __Минимальная версия сервера__: 4.4 operationId: EnablePlugin parameters: - name: plugin_id in: path required: true schema: type: string responses: "200": description: Плагин успешно включен content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" /plugins/{plugin_id}/disable: post: tags: - Plugins summary: Отключить плагин description: > Отключите ранее включенный плагин. Плагины должны быть включены в настройках конфигурации сервера. ##### Разрешения Должно быть разрешение `manage_system`. __Минимальная версия сервера__: 4.4 operationId: DisablePlugin parameters: - name: plugin_id in: path required: true schema: type: string responses: "200": description: Плагин успешно отключен content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" /plugins/webapp: get: tags: - Plugins summary: Получить плагины веб-приложения description: > Получите список плагинов веб-приложения, установленных и активированных на сервере. ##### Разрешения Разрешения не требуются. __Минимальная версия сервера__: 4.4 operationId: GetWebappPlugins responses: "200": description: Плагин успешно деактивирован content: application/json: schema: type: array items: $ref: "#/components/schemas/PluginManifestWebapp" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /plugins/statuses: get: tags: - Plugins summary: Получить статус плагинов description: | Возвращает статус плагинов, установленных в любом месте кластера ##### Разрешения Разрешения не требуются. __Минимальная версия сервера__: 4.4 operationId: GetPluginStatuses responses: "200": description: Статус плагина успешно получен content: application/json: schema: type: array items: $ref: "#/components/schemas/PluginStatus" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /plugins/marketplace: post: tags: - Plugins summary: Установить плагин из магазина description: | Установите плагин, перечисленный в сервере магазина. ##### Разрешения Должно быть разрешение `manage_system`. __Минимальная версия сервера__: 5.16 operationId: InstallMarketplacePlugin requestBody: content: application/json: schema: type: object required: - id - version properties: id: type: string description: Идентификатор плагина для установки. description: Метаданные, идентифицирующие плагин для установки. required: true responses: "200": description: Плагин успешно установлен content: application/json: schema: $ref: "#/components/schemas/PluginManifest" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" get: tags: - Plugins summary: Получить все плагины из магазина description: > Получите все плагины с сервера магазина, объединяя данные из локально установленных плагинов, а также предварительно упакованных плагинов, поставляемых с сервером. ##### Разрешения Должно быть разрешение `manage_system`. __Минимальная версия сервера__: 5.16 operationId: GetMarketplacePlugins parameters: - name: page in: query description: Номер страницы для извлечения. (еще не реализовано) required: false schema: type: integer - name: per_page in: query description: Количество элементов на странице. (еще не реализовано) required: false schema: type: integer - name: filter in: query description: Установите для фильтрации плагинов по идентификатору, имени или описанию. required: false schema: type: string - name: server_version in: query description: > Установите для фильтрации минимальной версии сервера плагина. (еще не реализовано) required: false schema: type: string - name: local_only in: query description: Установите true, чтобы извлекать только локальные плагины. required: false schema: type: boolean responses: "200": description: Успешное получение плагинов content: application/json: schema: type: array items: $ref: "#/components/schemas/MarketplacePlugin" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /plugins/marketplace/first_admin_visit: get: tags: - Plugins summary: | Узнать, был ли магазин плагинов посещен хотя бы одним администратором. description: > Извлекает статус, который указывает, что хотя бы один системный администратор посетил встроенный магазин плагинов. __Минимальная версия сервера: 5.33__ ##### Разрешения Должно быть разрешение `manage_system`. operationId: GetMarketplaceVisitedByAdmin responses: "200": description: Извлекает статус на уровне системы content: application/json: schema: $ref: "#/components/schemas/System" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" post: tags: - Система summary: > Сохранить, что магазин плагинов был посещен хотя бы одним администратором. description: > Сохраняет статус на уровне системы, который указывает, что хотя бы один администратор посетил встроенный магазин плагинов. __Минимальная версия сервера: 5.33__ ##### Разрешения Должно быть разрешение `manage_system`. operationId: UpdateMarketplaceVisitedByAdmin requestBody: content: application/json: schema: $ref: "#/components/schemas/System" required: true responses: "200": description: Настройка успешно установлена content: application/json: schema: $ref: "#/components/schemas/StatusOK" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" /roles: get: tags: - Roles summary: Получить список всех ролей description: | ##### Разрешения Требуется разрешение `manage_system`. __Минимальная версия сервера__: 5.33 operationId: GetAllRoles responses: "200": description: Успешное получение ролей content: application/json: schema: type: array items: $ref: "#/components/schemas/Role" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /roles/{role_id}: get: tags: - Roles summary: Получить роль description: | Получить роль по предоставленному идентификатору роли. ##### Разрешения Требуется активная сессия, но не требуется других разрешений. __Минимальная версия сервера__: 4.9 operationId: GetRole parameters: - name: role_id in: path description: GUID роли required: true schema: type: string responses: "200": description: Успешное получение роли content: application/json: schema: $ref: "#/components/schemas/Role" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" /roles/name/{role_name}: get: tags: - Roles summary: Получить роль description: | Получить роль по предоставленному имени роли. ##### Разрешения Требуется активная сессия, но не требуется других разрешений. __Минимальная версия сервера__: 4.9 operationId: GetRoleByName parameters: - name: role_name in: path description: Имя роли required: true schema: type: string responses: "200": description: Успешное получение роли content: application/json: schema: $ref: "#/components/schemas/Role" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" /roles/{role_id}/patch: put: tags: - Roles summary: Частично обновить роль description: > Частично обновите роль, указав только поля, которые вы хотите обновить. Пропущенные поля не будут обновлены. Поля, которые могут быть обновлены, определены в теле запроса, все другие предоставленные поля будут проигнорированы. ##### Разрешения Требуется разрешение `manage_system`. __Минимальная версия сервера__: 4.9 operationId: PatchRole parameters: - name: role_id in: path description: GUID роли required: true schema: type: string requestBody: content: application/json: schema: type: object properties: permissions: type: array items: type: string description: Разрешения, которые должна предоставлять роль. description: Объект роли для обновления required: true responses: "200": description: Успешное частичное обновление роли content: application/json: schema: $ref: "#/components/schemas/Role" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /roles/names: post: tags: - Roles summary: Получить список ролей по имени description: | Получить список ролей по их именам. ##### Разрешения Требуется активная сессия, но не требуется других разрешений. __Минимальная версия сервера__: 4.9 operationId: GetRolesByNames requestBody: content: application/json: schema: type: array items: type: string description: Список имен ролей required: true responses: "200": description: Успешное получение списка ролей content: application/json: schema: type: array items: $ref: "#/components/schemas/Role" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" /schemes: get: tags: - Schemes summary: Получить схемы. description: > Получить страницу схем. Используйте параметры запроса, чтобы изменить поведение этого конечного точки. ##### Разрешения Необходимо иметь разрешение `manage_system`. __Минимальная версия сервера__: 5.0 operationId: GetSchemes parameters: - name: scope in: query description: > Ограничить результаты, возвращаемые указанной областью, либо `team`, либо `channel`. schema: type: string default: "" - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: Количество схем на странице. schema: type: integer default: 60 responses: "200": description: Успешное получение списка схем content: application/json: schema: type: array items: $ref: "#/components/schemas/Scheme" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" post: tags: - Schemes summary: Создать схему description: | Создать новую схему. ##### Разрешения Необходимо иметь разрешение `manage_system`. __Минимальная версия сервера__: 5.0 operationId: CreateScheme requestBody: content: application/json: schema: type: object required: - name - scope properties: name: type: string description: Название схемы description: type: string description: Описание схемы scope: type: string description: Область схемы ("team" или "channel") description: Объект схемы для создания required: true responses: "201": description: Успешное создание схемы content: application/json: schema: $ref: "#/components/schemas/Scheme" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /schemes/{scheme_id}: get: tags: - Schemes summary: Получить схему description: | Получить схему по указанному идентификатору схемы. ##### Разрешения Необходимо иметь разрешение `manage_system`. __Минимальная версия сервера__: 5.0 operationId: GetScheme parameters: - name: scheme_id in: path description: GUID схемы required: true schema: type: string responses: "200": description: Успешное получение схемы content: application/json: schema: $ref: "#/components/schemas/Scheme" "401": $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" delete: tags: - Schemes summary: Удалить схему description: | Мягкое удаление схемы, путем пометки схемы как удаленной в базе данных. ##### Разрешения Необходимо иметь разрешение `manage_system`. __Минимальная версия сервера__: 5.0 operationId: DeleteScheme parameters: - name: scheme_id in: path description: ID схемы для удаления required: true schema: type: string responses: "200": description: Успешное удаление схемы content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "501": $ref: "#/components/responses/NotImplemented" /schemes/{scheme_id}/patch: put: tags: - Schemes summary: Обновить схему description: > Частично обновите схему, предоставив только те поля, которые вы хотите обновить. Пропущенные поля не будут обновлены. Поля, которые можно обновить, определены в теле запроса, все остальные предоставленные поля будут проигнорированы. ##### Разрешения Необходимо иметь разрешение `manage_system`. __Минимальная версия сервера__: 5.0 operationId: PatchScheme parameters: - name: scheme_id in: path description: GUID схемы required: true schema: type: string requestBody: content: application/json: schema: type: object properties: name: type: string description: Читаемое название схемы description: type: string description: Описание схемы description: Объект схемы для обновления required: true responses: "200": description: Успешное обновление схемы content: application/json: schema: $ref: "#/components/schemas/Scheme" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" /schemes/{scheme_id}/teams: get: tags: - Schemes summary: Получить страницу команд, использующих эту схему. description: > Получить страницу команд, использующих эту схему. Указанный идентификатор схемы должен быть для схемы с областью действия "Team". Используйте параметры запроса, чтобы изменить поведение этого конечного точки. ##### Разрешения Необходимо иметь разрешение `manage_system`. __Минимальная версия сервера__: 5.0 operationId: GetTeamsForScheme parameters: - name: scheme_id in: path description: GUID схемы required: true schema: type: string - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: Количество команд на странице. schema: type: integer default: 60 responses: "200": description: Успешное получение списка команд content: application/json: schema: type: array items: $ref: "#/components/schemas/Team" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /schemes/{scheme_id}/channels: get: tags: - Schemes summary: Получить страницу каналов, использующих эту схему. description: > Получить страницу каналов, использующих эту схему. Указанный идентификатор схемы должен быть для схемы с областью действия "Channel". Используйте параметры запроса, чтобы изменить поведение этого конечного точки. ##### Разрешения Необходимо иметь разрешение `manage_system`. __Минимальная версия сервера__: 5.0 operationId: GetChannelsForScheme parameters: - name: scheme_id in: path description: GUID схемы required: true schema: type: string - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: Количество каналов на странице. schema: type: integer default: 60 responses: "200": description: Успешное получение списка каналов content: application/json: schema: type: array items: $ref: "#/components/schemas/Channel" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /terms_of_service: get: tags: - Terms of service summary: Получить последние условия использования description: | Получить последние условия использования с сервера __Минимальная версия сервера__: 5.4 ##### Разрешения Необходимо быть аутентифицированным. operationId: GetTermsOfService responses: "200": description: Условия использования успешно получены content: application/json: schema: $ref: "#/components/schemas/TermsOfService" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" post: tags: - Terms of service summary: Создать новые условия использования description: | Создать новые условия использования __Минимальная версия сервера__: 5.4 ##### Разрешения Необходимо иметь разрешение `manage_system`. operationId: CreateTermsOfService responses: "200": description: Условия использования успешно созданы content: application/json: schema: $ref: "#/components/schemas/TermsOfService" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" /sharedchannels/{team_id}: get: tags: - Shared channels summary: Получить все совместные каналы для команды. description: | Получить все совместные каналы для команды. __Минимальная версия сервера__: 5.50 ##### Разрешения Необходимо быть аутентифицированным. operationId: GetAllSharedChannels parameters: - name: team_id in: path description: Идентификатор команды required: true schema: type: string - name: page in: query schema: type: integer default: 0 - name: per_page in: query schema: type: integer default: 0 responses: "200": description: Успешное получение общих каналов. Результат может быть пустым. 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" x-codeSamples: - lang: curl source: > curl -X POST \ 'https://time-url.domain/api/v4/sharedchannels/4xp9fdt77pncbef59f4k1qe83o' \ -H 'Authorization: Bearer kno8tcdotpbx3dj1gzcbx9jrqy' /sharedchannels/remote_info/{remote_id}: get: tags: - Shared channels summary: Получить информацию о удаленном кластере по ID для пользователя. description: | Получить информацию о удаленном кластере на основе remoteId. __Минимальная версия сервера__: 5.50 ##### Разрешения Необходимо быть аутентифицированным, и пользователь должен принадлежать хотя бы одному каналу, общему с удаленным кластером. operationId: GetRemoteClusterInfo parameters: - name: remote_id in: path description: GUID удаленного кластера required: true schema: type: string responses: "200": description: Успешное получение информации о удаленном кластере 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" x-codeSamples: - lang: curl source: > curl -X POST \ 'https://time-url.domain/api/v4/sharedchannels/getremote/4xp9fdt77pncbef59f4k1qe83o' \ -H 'Authorization: Bearer kno8tcdotpbx3dj1gzcbx9jrqy' /sso/token: post: tags: - SSO summary: Получить токен сессии description: > Получить токен сессии пользователя и CSRF по проверочному коду и токену проверки кода. operationId: loginByCodeVerifier requestBody: content: application/json: schema: type: object properties: code_verifier: type: string description: Проверочный код из нативного приложения code_challenge_token: type: string description: Токен проверки кода required: - code_verifier - code_challenge_token responses: "200": description: Регистрация приложения успешна content: application/json: schema: type: object properties: token: type: string description: Токен сессии csrf: type: string description: CSRF токен "400": $ref: "#/components/responses/BadRequest" "500": $ref: "#/components/responses/InternalServerError" /opengraph: post: tags: - OpenGraph summary: Получить метаданные Open Graph для URL description: > Получить метаданные Open Graph для указанного URL. Используйте протокол Open Graph, чтобы получить общие метаданные о URL. Используется для создания предварительных просмотров ссылок. __Минимальная версия сервера__: 3.10 ##### Разрешения Разрешения не требуются, но необходимо быть авторизованным. operationId: OpenGraph requestBody: content: application/json: schema: type: object required: - url properties: url: type: string description: URL для получения метаданных Open Graph. required: true responses: "200": description: Успешное получение метаданных Open Graph content: application/json: schema: $ref: "#/components/schemas/OpenGraph" "501": $ref: "#/components/responses/NotImplemented" /reactions: post: tags: - Reactions summary: Создать реакцию description: > Создать реакцию. ##### Разрешения Должно быть разрешение `read_channel` для канала, в котором находится пост. operationId: SaveReaction requestBody: content: application/json: schema: $ref: "#/components/schemas/Reaction" description: > Реакция пользователя с установленными полями post_id, user_id и emoji_name required: true responses: "201": description: Успешное создание реакции content: application/json: schema: $ref: "#/components/schemas/Reaction" "400": $ref: "#/components/responses/BadRequest" "403": $ref: "#/components/responses/Forbidden" /posts/{post_id}/reactions: get: tags: - Reactions summary: Получить список реакций на пост description: > Получить список реакций, сделанных всеми пользователями на данный пост. ##### Разрешения Должно быть разрешение `read_channel` для канала, в котором находится пост. operationId: GetReactions parameters: - name: post_id in: path description: ID поста required: true schema: type: string responses: "200": description: Успешное получение списка реакций content: application/json: schema: type: array items: $ref: "#/components/schemas/Reaction" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /posts/{post_id}/reactions/table: get: tags: - Reactions summary: Получить таблицу реакций на пост description: > Получить таблицу реакций, сделанных всеми пользователями на данный пост. ##### Разрешения Должно быть разрешение `read_channel` для канала, в котором находится пост. operationId: GetTableReactions parameters: - name: post_id in: path description: ID поста required: true schema: type: string responses: "200": description: Успешное получение таблицы реакций content: application/octet-stream: schema: type: string format: binary "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /users/{user_id}/posts/{post_id}/reactions/{emoji_name}: delete: tags: - Reactions summary: Удалить реакцию с поста description: | Удаляет реакцию, сделанную пользователем, с указанного поста. ##### Разрешения Должен быть пользователем или иметь разрешение `manage_system`. operationId: DeleteReaction parameters: - name: user_id in: path description: ID пользователя required: true schema: type: string - name: post_id in: path description: ID поста required: true schema: type: string - name: emoji_name in: path description: имя эмодзи required: true schema: type: string responses: "200": description: Успешное удаление реакции content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /posts/ids/reactions: post: tags: - Reactions summary: Массовое получение реакций для постов description: > Получить список реакций, сделанных всеми пользователями на данный пост. ##### Разрешения Должно быть разрешение `read_channel` для канала, в котором находится пост. __Минимальная версия сервера__: 5.8 operationId: GetBulkReactions requestBody: content: application/json: schema: type: array items: type: string description: Массив ID постов required: true responses: "200": description: Успешное получение реакций content: application/json: schema: $ref: "#/components/schemas/PostIdToReactionsMap" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /actions/dialogs/open: post: tags: - Integration actions summary: Открыть диалог description: | Открыть интерактивный диалог, используя ID триггера, предоставленный слэш-командой или другим действием. См. [Admin Guide: Интерактивные диалоги](https://docs.time-messenger.ru/integrations/interactive_dialogs/) для получения дополнительной информации об интерактивных диалогах. __Минимальная версия сервера: 5.6__ operationId: OpenInteractiveDialog requestBody: content: application/json: schema: type: object required: - trigger_id - url - dialog properties: trigger_id: type: string description: ID триггера, предоставленный другим действием url: type: string description: URL для отправки данных диалога dialog: type: object required: - title - elements description: Объект поста для создания properties: callback_id: type: string description: > Установите ID, который будет включен при отправке диалога title: type: string description: Заголовок диалога introduction_text: type: string description: Вводный абзац в формате Markdown elements: type: array description: Элементы ввода items: type: object submit_label: type: string description: Надпись на кнопке отправки notify_on_cancel: type: boolean description: > Установите значение true, чтобы получать данные, когда пользователь отменяет диалог state: type: string description: > Установите состояние, которое будет возвращено с отправкой диалога description: Метаданные для открытия диалога required: true responses: "200": description: Диалог успешно открыт content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" /actions/dialogs/submit: post: tags: - Integration actions summary: Отправить диалог description: | Конечная точка, используемая клиентами Time для отправки диалога. __Минимальная версия сервера: 5.6__ operationId: SubmitInteractiveDialog requestBody: content: application/json: schema: type: object required: - url - submission - channel_id - team_id properties: url: type: string description: URL для отправки данных о диалоге channel_id: type: string description: ID канала, из которого пользователь отправил диалог team_id: type: string description: ID команды, из которой пользователь отправил диалог submission: type: object description: > Карта строк, где ключи - это имена элементов, а значения - значения ввода элемента callback_id: type: string description: ID обратного вызова, отправленный при открытии диалога state: type: string description: Состояние, отправленное при открытии диалога cancelled: type: boolean description: Установите значение true, если диалог был отменен description: Данные о подаче диалога required: true responses: "200": description: Диалог успешно отправлен content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /bots: post: tags: - Bots summary: Создать бота description: > Создать новую учетную запись бота в системе. Необходимое имя пользователя. ##### Разрешения Должно быть разрешение `create_bot`. __Минимальная версия сервера__: 5.10 operationId: CreateBot requestBody: description: Бот, который будет создан required: true content: application/json: schema: type: object required: - username properties: username: type: string display_name: type: string description: type: string responses: "201": description: Успешное создание бота content: application/json: schema: $ref: "#/components/schemas/Bot" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" get: tags: - Bots summary: Получить ботов description: > Получить страницу списка ботов. ##### Разрешения Должно быть разрешение `read_bots` для ботов, которыми вы управляете, и разрешение `read_others_bots` для ботов, которыми управляют другие. __Минимальная версия сервера__: 5.10 operationId: GetBots parameters: - name: page in: query description: Страница для выбора. schema: type: integer default: 0 - name: per_page in: query description: > Количество пользователей на странице. Максимальный лимит - 200 пользователей на страницу. schema: type: integer default: 60 - name: include_deleted in: query description: Если удаленные боты должны быть возвращены. schema: type: boolean - name: only_orphaned in: query description: > Если true, будут возвращены только сиротские боты. Бот считается сиротским, если его владелец был деактивирован. schema: type: boolean responses: "200": description: Успешное получение страницы ботов content: application/json: schema: type: array items: $ref: "#/components/schemas/Bot" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /bots/{bot_user_id}: put: tags: - Bots summary: Обновить бота description: > Частично обновить бота, предоставив только поля, которые вы хотите обновить. Пропущенные поля не будут обновлены. Поля, которые могут быть обновлены, определены в теле запроса, все остальные предоставленные поля будут проигнорированы. ##### Разрешения Должно быть разрешение `manage_bots`. __Минимальная версия сервера__: 5.10 operationId: PatchBot parameters: - name: bot_user_id in: path description: ID пользователя бота required: true schema: type: string requestBody: description: Бот, который будет создан required: true content: application/json: schema: type: object required: - username properties: username: type: string display_name: type: string description: type: string responses: "200": description: Успешное обновление бота content: application/json: schema: $ref: "#/components/schemas/Bot" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" get: tags: - Bots summary: Получить бота description: > Получить бота, указав его ID. ##### Разрешения Должно быть разрешение `read_bots` для ботов, которыми вы управляете, и `read_others_bots` для ботов, которыми управляют другие. __Минимальная версия сервера__: 5.10 operationId: GetBot parameters: - name: bot_user_id in: path description: ID пользователя бота required: true schema: type: string - name: include_deleted in: query description: Если удаленные боты должны быть возвращены. schema: type: boolean responses: "200": description: Бот успешно получен. content: application/json: schema: $ref: "#/components/schemas/Bot" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /bots/{bot_user_id}/disable: post: tags: - Bots summary: Отключить бота description: | Отключить бота. ##### Разрешения Должно быть разрешение `manage_bots`. __Минимальная версия сервера__: 5.10 operationId: DisableBot parameters: - name: bot_user_id in: path description: ID пользователя бота required: true schema: type: string responses: "200": description: Бот успешно отключен. content: application/json: schema: $ref: "#/components/schemas/Bot" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /bots/{bot_user_id}/enable: post: tags: - Bots summary: Включить бота description: | Включить бота. ##### Разрешения Должно быть разрешение `manage_bots`. __Минимальная версия сервера__: 5.10 operationId: EnableBot parameters: - name: bot_user_id in: path description: ID пользователя бота required: true schema: type: string responses: "200": description: Бот успешно включен. content: application/json: schema: $ref: "#/components/schemas/Bot" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /bots/{bot_user_id}/assign/{user_id}: post: tags: - Bots summary: Назначить бота пользователю description: | Назначить бота указанному пользователю. ##### Разрешения Должно быть разрешение `manage_bots`. __Минимальная версия сервера__: 5.10 operationId: AssignBot parameters: - name: bot_user_id in: path description: ID пользователя бота required: true schema: type: string - name: user_id in: path description: ID пользователя, которому будет назначен бот. required: true schema: type: string responses: "200": description: Бот успешно назначен. content: application/json: schema: $ref: "#/components/schemas/Bot" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /bots/{bot_user_id}/icon: get: tags: - Bots summary: Получить иконку бота description: | Получить изображение иконки бота на основе параметра bot_user_id. ##### Разрешения Должно быть выполнено вход в систему. __Минимальная версия сервера__: 5.14 operationId: GetBotIconImage parameters: - name: bot_user_id in: path description: ID пользователя бота required: true schema: type: string responses: "200": description: Изображение иконки бота "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" post: tags: - Bots summary: Установить иконку бота description: > Установить изображение иконки бота на основе параметра bot_user_id. Иконка должна быть в формате SVG, все другие форматы отклоняются. ##### Разрешения Должно быть разрешение `manage_bots`. __Минимальная версия сервера__: 5.14 operationId: SetBotIconImage parameters: - name: bot_user_id in: path description: ID пользователя бота required: true schema: type: string requestBody: content: multipart/form-data: schema: type: object properties: image: description: SVG-изображение иконки для загрузки type: string format: binary required: - image responses: "200": description: Успешная установка SVG-изображения иконки 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" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" delete: tags: - Bots summary: Удалить иконку бота description: | Удалить изображение иконки бота на основе параметра bot_user_id. ##### Разрешения Должно быть разрешение `manage_bots`. __Минимальная версия сервера__: 5.14 operationId: DeleteBotIconImage parameters: - name: bot_user_id in: path description: ID пользователя бота required: true schema: type: string responses: "200": description: Успешное удаление изображения иконки content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "500": $ref: "#/components/responses/InternalServerError" "501": $ref: "#/components/responses/NotImplemented" /bots/{bot_user_id}/convert_to_user: post: tags: - Bots - Users summary: Преобразовать бота в пользователя description: | Преобразовать бота в пользователя. __Минимальная версия сервера__: 5.26 ##### Разрешения Должно быть разрешение `manage_system`. operationId: ConvertBotToUser parameters: - name: bot_user_id in: path description: ID пользователя бота required: true schema: type: string - name: set_system_admin in: query description: Дать ли пользователю роль системного администратора. schema: type: boolean default: false requestBody: content: application/json: schema: type: object properties: email: type: string username: type: string password: type: string first_name: type: string last_name: type: string nickname: type: string locale: type: string position: type: string props: type: object notify_props: $ref: "#/components/schemas/UserNotifyProps" description: Данные, которые будут использованы при создании пользователя required: true responses: "200": description: Бот успешно преобразован content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /cloud/maintenance/jobs: post: tags: - Cloud summary: Создать новую задачу обслуживания description: > Создать новую задачу обслуживания с указанным типом и дополнительными данными. #### Разрешения Для выполнения запроса необходимо передать значение из переменной окружения `TIME_CLOUD_API_KEY` в заголовке `X-Cloud-Token`. __Примечание:__ Этот эндпоинт доступен только в экземпляре Time с Cloud лицензией. operationId: CreateMaintenanceJob requestBody: content: application/json: schema: type: object required: - type properties: type: type: string description: Тип задачи для создания data: type: object description: > Объект, содержащий любые дополнительные данные, необходимые для этого типа задачи description: Объект задачи для создания required: true responses: "201": description: Успешное создание задачи content: application/json: schema: $ref: "#/components/schemas/Job" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /cloud/maintenance/jobs/type/{type}: get: tags: - Cloud summary: Получить задачи обслуживания указанного типа description: > Получить страницу задач обслуживания указанного типа. #### Разрешения Для выполнения запроса необходимо передать значение из переменной окружения `TIME_CLOUD_API_KEY` в заголовке `X-Cloud-Token`. __Примечание:__ Этот эндпоинт доступен только в экземпляре Time с Cloud лицензией. operationId: GetMaintenanceJobsByType parameters: - name: type in: path description: Тип задачи required: true schema: type: string - name: page in: query description: Выбранная страница. schema: type: integer default: 0 - name: per_page in: query description: Количество задач на странице. schema: type: integer default: 60 responses: "200": description: Успешное получение списка задач content: application/json: schema: type: array items: $ref: "#/components/schemas/Job" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /cloud/maintenance/license: post: tags: - Cloud summary: Добавить лицензию клиенту description: > Добавить лицензию клиенту, предоставляя клиенту необходимые права для работы с системой. #### Разрешения Для выполнения запроса необходимо передать значение из переменной окружения `TIME_CLOUD_API_KEY` в заголовке `X-Cloud-Token`. __Примечание:__ Этот эндпоинт доступен только в экземпляре Time с Cloud лицензией. operationId: AddLicenseAsMaintenance requestBody: content: multipart/form-data: schema: type: object properties: license: description: Лицензия для загрузки type: string format: binary required: - license responses: "201": description: Успешная загрузка лицензионного файла 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" /confcall/token: get: tags: - confcalls summary: Получить токен звонка description: | Получить токен для звонка. ##### Разрешения Необходимо иметь разрешение `system_user`. operationId: GetConfcallToken parameters: - schema: type: string name: room_name in: query required: false description: Название комнаты responses: "200": description: Токен звонка успешно получен content: application/json: schema: $ref: "#/components/schemas/ConfcallTokenResponse" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" /plugins/ru.tinkoff.mm.reminder/list/user/{user_id}: get: summary: Список напоминаний пользователя по user_id operationId: ReminderListByUserId parameters: - in: query name: take schema: type: integer - in: query name: skip schema: type: integer - in: path name: user_id required: true schema: type: string tags: - Reminder responses: "200": description: Плагин успешно удален content: application/json: schema: $ref: "#/components/schemas/StatusOK" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" servers: - *a1 /plugins/ru.tinkoff.mm.workflow/{channel_id}: post: summary: Создать новый workflow operationId: WorkflowCreate parameters: - in: path name: channel_id required: true schema: type: string requestBody: content: application/json: schema: $ref: "#/components/schemas/WorkflowCreateRequest" tags: - Workflow responses: "200": description: Успех content: application/json: schema: type: array items: $ref: "#/components/schemas/Workflow" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" servers: - *a1 /plugins/ru.tinkoff.mm.workflow/{channel_id}/{workflow_id}: parameters: - in: path name: channel_id required: true schema: type: string - in: path name: workflow_id required: true schema: type: string get: summary: Получить workflow по ID operationId: WorkflowGetById tags: - Workflow responses: "200": description: Успех content: application/json: schema: $ref: "#/components/schemas/Workflow" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" servers: - *a1 put: summary: Обновить workflow по ID operationId: WorkflowUpdate requestBody: content: application/json: schema: $ref: "#/components/schemas/WorkflowCreateRequest" tags: - Workflow responses: "200": description: Успех content: application/json: schema: $ref: "#/components/schemas/Workflow" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" servers: - *a1 delete: summary: Удалить workflow по ID operationId: WorkflowDelete tags: - Workflow responses: "204": description: Успех "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" servers: - *a1 /plugins/ru.tinkoff.mm.workflow/{channel_id}/{workflow_id}/assign/{user_id}: put: summary: Переназначить workflow новому пользователю operationId: WorkflowReassign parameters: - in: path name: channel_id required: true schema: type: string - in: path name: workflow_id required: true schema: type: string - in: path name: user_id required: true schema: type: string requestBody: description: Нет тела content: application/json: {} tags: - Workflow responses: "200": description: Успех content: application/json: schema: type: array items: $ref: "#/components/schemas/Workflow" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "500": $ref: "#/components/responses/InternalServerError" servers: - *a1 /plugins/ru.tinkoff.mm.workflow/{channel_id}/{workflow_id}/{action}/{step_id}: post: summary: Выполнить шаг operationId: WorkflowExecuteStep parameters: - in: path name: channel_id required: true schema: type: string - in: path name: workflow_id required: true schema: type: string - in: path name: step_id required: true schema: type: string - in: path name: action required: true schema: type: string requestBody: description: > Зависит от типа шага. В большинстве случаев то же самое для: [SubmitInteractiveDialog](../v4/submit-interactive-dialog) content: application/json: schema: type: object properties: url: type: string description: URL для отправки данных диалога state: type: string description: Состояние, отправленное при открытии диалога user_id: type: string description: ID пользователя, отправившего диалог channel_id: type: string description: ID канала, из которого был отправлен диалог team_id: type: string description: ID команды, из которой был отправлен диалог callback_id: type: string description: ID обратного вызова, отправленный при открытии диалога submission: type: object description: > Карта строк, где ключи - это имена элементов, а значения - это значения ввода элементов cancelled: type: boolean description: Установите в true, если диалог был отменен tags: - Workflow responses: "200": description: Успех content: application/json: schema: type: object properties: status: type: integer user_id: type: string channel_id: type: string id: type: string "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" servers: - *a1 /plugins/ru.tinkoff.mm.workflow/list/channel/{channel_id}: get: summary: Словарь рабочих процессов, созданных для канала operationId: WorkflowMapByChannelId parameters: - in: query name: take schema: type: integer - in: query name: skip schema: type: integer - in: path name: channel_id required: true schema: type: string tags: - Workflow responses: "200": description: Успех content: application/json: schema: $ref: "#/components/schemas/WorkflowMap" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" servers: - *a1 /plugins/ru.tinkoff.mm.workflow/list/user/{user_id}: get: summary: Словарь рабочих процессов, созданных пользователем operationId: WorkflowMapByUserId parameters: - in: query name: take schema: type: integer - in: query name: skip schema: type: integer - in: path name: user_id required: true schema: type: string tags: - Workflow responses: "200": description: Успех content: application/json: schema: $ref: "#/components/schemas/WorkflowMap" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" servers: - *a1 /plugins/ru.tinkoff.mm.workflow/workflow/variables: post: summary: Список переменных для описания входного рабочего процесса operationId: WorkflowVariablesByDescription requestBody: content: application/json: schema: $ref: "#/components/schemas/WorkflowCreateRequest" tags: - Workflow responses: "200": description: Успех content: application/json: schema: type: array items: $ref: "#/components/schemas/WorkflowVariable" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "501": $ref: "#/components/responses/NotImplemented" servers: - *a1 /plugins/ru.tinkoff.mm.workflow/workflows/export/task: post: summary: Создать задачу для экспорта ответов рабочего процесса operationId: WorkflowExportTask requestBody: content: application/json: schema: $ref: "#/components/schemas/WorkflowExportTask" tags: - Workflow responses: "201": description: Успех. Результаты задачи будут отправлены личным сообщением. "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" servers: - *a1 /permissions/ancillary: get: tags: - Permissions summary: Возвращает все вспомогательные разрешения подсекций системной консоли description: > Возвращает все вспомогательные разрешения для соответствующих разрешений подсекций системной консоли, добавленных к запрашиваемым подсекциям разрешений. __Минимальная версия сервера__: 5.35 operationId: GetAncillaryPermissions parameters: - name: subsection_permissions in: query description: > Разрешения подсекций для возврата вспомогательных разрешений. Эти значения разделены запятыми. Пример: subsection_permissions=sysconsole_read_reporting_site_statistics, sysconsole_write_reporting_site_statistics, sysconsole_write_user_management_channels schema: type: string responses: "200": description: | Успешно возвращены все вспомогательные и запрашиваемые разрешения content: application/json: schema: type: array items: type: string "400": $ref: "#/components/responses/BadRequest" /imports: get: tags: - Imports summary: Список файлов импорта description: | Перечисляет все доступные файлы импорта. __Минимальная версия сервера__: 5.31 ##### Разрешения Должно быть разрешение `manage_system`. operationId: ListImports responses: "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" x-codeSamples: - lang: Curl source: | curl 'http://localhost:8065/api/v4/imports' \ -H 'Authorization: Bearer 9kg8nqrnxprd9jbykqeg4r51hw' /exports: get: tags: - Exports summary: Список файлов экспорта description: | Перечисляет все доступные файлы экспорта. __Минимальная версия сервера__: 5.33 ##### Разрешения Необходимо иметь разрешения `manage_system`. operationId: ListExports responses: "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" x-codeSamples: - lang: Curl source: | curl 'http://localhost:8065/api/v4/exports' \ -H 'Authorization: Bearer 9kg8nqrnxprd9jbykqeg4r51hw' /exports/{export_name}: get: tags: - Exports summary: Скачать файл экспорта description: | Скачивает файл экспорта. __Минимальная версия сервера__: 5.33 ##### Разрешения Необходимо иметь разрешения `manage_system`. operationId: DownloadExport parameters: - name: export_name in: path description: Имя файла экспорта для скачивания required: true schema: type: string responses: "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "500": $ref: "#/components/responses/InternalServerError" x-codeSamples: - lang: Curl source: | curl 'http://localhost:8065/api/v4/exports/export.zip' \ -H 'Authorization: Bearer 9kg8nqrnxprd9jbykqeg4r51hw' delete: tags: - Exports summary: Удалить файл экспорта description: | Удаляет файл экспорта. __Минимальная версия сервера__: 5.33 ##### Разрешения Необходимо иметь разрешения `manage_system`. operationId: DeleteExport parameters: - name: export_name in: path description: Имя файла экспорта для удаления required: true schema: type: string responses: "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "500": $ref: "#/components/responses/InternalServerError" x-codeSamples: - lang: Curl source: | curl -X DELETE 'http://localhost:8065/api/v4/exports/export.zip' \ -H 'Authorization: Bearer 9kg8nqrnxprd9jbykqeg4r51hw' security: - bearerAuth: [] components: securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: Token responses: Forbidden: description: Нет соответствующих разрешений content: application/json: schema: $ref: "#/components/schemas/AppError" Unauthorized: description: Токен доступа не предоставлен content: application/json: schema: $ref: "#/components/schemas/AppError" BadRequest: description: Неверные или отсутствующие параметры в URL или теле запроса content: application/json: schema: $ref: "#/components/schemas/AppError" NotFound: description: Ресурс не найден content: application/json: schema: $ref: "#/components/schemas/AppError" TooLarge: description: Содержимое слишком большое content: application/json: schema: $ref: "#/components/schemas/AppError" NotImplemented: description: Функция отключена content: application/json: schema: $ref: "#/components/schemas/AppError" TooManyRequests: description: Слишком много запросов content: application/json: schema: $ref: "#/components/schemas/AppError" InternalServerError: description: Что-то пошло не так с сервером content: application/json: schema: $ref: "#/components/schemas/AppError" schemas: User: type: object properties: id: type: string create_at: description: Время в миллисекундах, когда пользователь был создан type: integer format: int64 update_at: description: Время в миллисекундах, когда пользователь был в последний раз обновлён type: integer format: int64 delete_at: description: Время в миллисекундах, когда пользователь был удалён type: integer format: int64 username: type: string first_name: type: string last_name: type: string nickname: type: string email: type: string phone: type: string email_verified: type: boolean auth_service: type: string roles: type: string locale: type: string notify_props: $ref: "#/components/schemas/UserNotifyProps" props: $ref: "#/components/schemas/UserProps" last_password_update: type: integer format: int64 last_picture_update: type: integer format: int64 failed_attempts: type: integer mfa_active: type: boolean timezone: $ref: "#/components/schemas/Timezone" terms_of_service_id: description: > ID принятых условий использования, если таковые имеются. Это поле отсутствует, если оно пустое. type: string terms_of_service_create_at: description: > Время в миллисекундах, когда пользователь принял условия использования type: integer format: int64 disable_welcome_email: type: boolean position: description: > Позиция пользователя согласно сущности UserProfile, пустая, если пользователь деактивирован. Содержит описание из старого профиля. type: string external_id: type: string description: ExternalID - это ID во внешней системе аутентификации, указанной AuthService last_activity_at: type: integer format: int64 is_bot: type: boolean bot_description: type: string bot_last_icon_update: type: integer format: int64 profile: type: object $ref: "#/components/schemas/UserProfile" description: > Если активирован новый профиль, profile.position будет иметь соответствующее значение, деактивирован - из старого профиля модели User isBoosted: description: Флаг, указывающий, был ли результат повышен type: boolean required: - id - delete_at - username - first_name - last_name - nickname - email - auth_service - roles - locale - position UserProps: type: object properties: customStatus: type: string UserProfile: type: object properties: user_id: type: string phone: type: string description: > Номер телефона в формате E164 с префиксом `+`, https://wikipedia.org/wiki/E.164 is_public_phone: type: boolean description: Это поле определяет, нужно ли показывать `phone` другим пользователям. additional_contact_name: type: string additional_contact: type: string hide_additional_contact: type: boolean description: > Это поле определяет, нужно ли показывать `additional_contact` другим пользователям. schedule: type: string description: Рабочий график пользователя. hide_schedule: type: boolean description: > Это поле определяет, нужно ли показывать `schedule` другим пользователям. work_place: type: string work_scheme: type: string department: type: string position: type: string description: Содержит описание из нового профиля. birthday: type: string description: > День рождения в формате RFC3339, https://www.rfc-editor.org/rfc/rfc3339. profile_url: type: string description: Ссылка на профиль на другой платформе. required: - user_id - hide_additional_contact - hide_schedule - birthday UsersStats: type: object properties: total_users_count: type: integer Team: type: object properties: id: type: string create_at: description: Время в миллисекундах, когда команда была создана type: integer format: int64 update_at: description: Время в миллисекундах, когда команда была в последний раз обновлена type: integer format: int64 delete_at: description: Время в миллисекундах, когда команда была удалена type: integer format: int64 display_name: type: string name: type: string description: type: string email: type: string type: type: string deprecated: true company_name: type: string allowed_domains: type: string invite_id: type: string allow_open_invite: type: boolean last_team_icon_update: type: integer format: int64 scheme_id: type: string group_constrained: type: boolean policy_id: type: string description: > Политика хранения данных, назначенная этой команде. Если такой политики не существует или у вызывающего нет разрешения `sysconsole_read_compliance_data_retention`, это поле будет равно null. required: - id - create_at - update_at - delete_at - display_name - name - description - email - type - company_name - allowed_domains - invite_id - allow_open_invite TeamStats: type: object properties: team_id: type: string total_member_count: type: integer active_member_count: type: integer TeamExists: type: object properties: exists: type: boolean Channel: type: object properties: id: type: string create_at: description: Время в миллисекундах, когда канал был создан type: integer format: int64 update_at: description: Время в миллисекундах, когда канал был в последний раз обновлён type: integer format: int64 delete_at: description: Время в миллисекундах, когда канал был удалён type: integer format: int64 team_id: type: string type: $ref: "#/components/schemas/ChannelType" display_name: type: string name: type: string header: type: string purpose: type: string last_post_at: description: Время в миллисекундах последнего сообщения в канале type: integer format: int64 total_msg_count: type: integer format: int64 extra_update_at: type: integer format: int64 creator_id: type: string total_msg_count_root: type: integer format: int64 last_root_post_at: type: integer format: int64 isBoosted: description: Флаг, указывающий, был ли результат повышен type: boolean required: - id - create_at - update_at - delete_at - team_id - type - display_name - name - header - purpose - last_post_at - total_msg_count - extra_update_at - creator_id - total_msg_count_root - last_root_post_at ChannelType: type: string enum: - P - O - G - D x-enum-varnames: - Private - Open - Group - Direct ChannelTypeForTeam: type: string enum: - P - O - G x-enum-varnames: - Private - Open - Group NewChannelType: type: string enum: - P - O x-enum-varnames: - Private - Open ParticipantType: type: string enum: - user - bot x-enum-varnames: - User - Bot ChannelStats: type: object properties: channel_id: type: string member_count: type: integer format: int64 guest_count: type: integer format: int64 restricted_guest_count: type: integer format: int64 pinnedpost_count: type: integer format: int64 files_count: type: integer format: int64 required: - channel_id - member_count - guest_count - restricted_guest_count - pinnedpost_count - files_count ChannelMember: type: object properties: channel_id: type: string user_id: type: string roles: type: string last_viewed_at: description: > Время в миллисекундах, когда канал в последний раз просматривался пользователем type: integer format: int64 msg_count: type: integer format: int64 mention_count: type: integer format: int64 mention_count_root: type: integer format: int64 msg_count_root: type: integer format: int64 notify_props: $ref: "#/components/schemas/ChannelNotifyProps" last_update_at: description: > Время в миллисекундах, когда участник канала был в последний раз обновлён type: integer format: int64 scheme_restricted_guest: type: boolean scheme_guest: type: boolean scheme_user: type: boolean scheme_admin: type: boolean last_react_at: type: integer format: int64 explicit_roles: type: string required: - channel_id - user_id - roles - last_viewed_at - msg_count - mention_count - mention_count_root - msg_count_root - notify_props - last_update_at - scheme_restricted_guest - scheme_guest - scheme_user - scheme_admin - explicit_roles ChannelMemberWithError: type: object properties: user_id: type: string member: type: object $ref: "#/components/schemas/ChannelMember" error: type: object $ref: "#/components/schemas/AppError" ChannelMemberWithTeamData: allOf: - $ref: "#/components/schemas/ChannelMember" - type: object properties: team_display_name: type: string description: | Отображаемое имя команды, к которой принадлежит этот канал. team_name: type: string description: | Имя команды, к которой принадлежит этот канал. team_update_at: type: integer format: int64 description: > Время последнего обновления команды, к которой принадлежит этот канал. required: - team_display_name - team_name - team_update_at ChannelWithTeamData: allOf: - $ref: "#/components/schemas/Channel" - type: object properties: team_display_name: type: string description: | Отображаемое имя команды, к которой принадлежит этот канал. team_name: type: string description: | Имя команды, к которой принадлежит этот канал. team_update_at: type: integer description: > Время последнего обновления команды, к которой принадлежит этот канал. policy_id: type: string description: > Политика хранения данных, назначенная этой команде. Если такой политики не существует или у вызывающего нет разрешения `sysconsole_read_compliance_data_retention`, это поле будет равно null. ChannelListWithTeamData: type: array items: $ref: "#/components/schemas/ChannelWithTeamData" ChannelList: type: array items: $ref: "#/components/schemas/Channel" UserOrChannel: type: object properties: index: type: string user: $ref: "#/components/schemas/User" channel: $ref: "#/components/schemas/Channel" BoostedUserOrChannel: type: object allOf: - $ref: "#/components/schemas/UserOrChannel" - type: object properties: LastViewedAt: type: integer format: int64 isBoosted: type: boolean Post: type: object properties: id: type: string create_at: description: Время в миллисекундах, когда сообщение было создано type: integer format: int64 update_at: description: Время в миллисекундах, когда сообщение было в последний раз обновлено type: integer format: int64 edit_at: type: integer format: int64 delete_at: description: Время в миллисекундах, когда сообщение было удалено type: integer format: int64 is_pinned: type: boolean user_id: type: string channel_id: type: string root_id: type: string original_id: type: string peer: type: string message: type: string message_source: type: string type: type: string props: $ref: "#/components/schemas/PostProps" hashtags: type: string file_ids: type: array items: type: string pending_post_id: type: string has_reactions: type: boolean remote_id: type: string reply_count: type: integer format: int64 last_reply_at: type: integer format: int64 participants: type: array items: $ref: "#/components/schemas/PostParticipant" is_following: type: boolean metadata: $ref: "#/components/schemas/PostMetadata" required: - id - create_at - update_at - edit_at - delete_at - is_pinned - user_id - channel_id - root_id - original_id - message - type - props - hashtags - pending_post_id - reply_count - last_reply_at PostParticipant: type: object properties: id: type: string required: - id PostProps: type: object properties: quote_post_id: type: string team_id: type: string from_bot: type: boolean from_plugin: type: boolean FileInfoList: type: object properties: order: type: array items: type: string example: - file_info_id1 - file_info_id2 file_infos: type: object additionalProperties: $ref: "#/components/schemas/FileInfo" next_file_info_id: type: string description: > ID следующей информации о файле. Не опускается, когда пусто или не актуально. prev_file_info_id: type: string description: > ID предыдущей информации о файле. Не опускается, когда пусто или не актуально. required: - order - file_infos - next_file_info_id - prev_file_info_id PostList: type: object properties: order: type: array items: type: string posts: type: object additionalProperties: $ref: "#/components/schemas/Post" next_post_id: type: string description: > ID следующего сообщения. Не опускается, когда пусто или не актуально. prev_post_id: type: string description: > ID предыдущего сообщения. Не опускается, когда пусто или не актуально. has_next: type: boolean description: Есть ли еще элементы после этой страницы. required: - order - posts - next_post_id - prev_post_id - has_next PostSearchResults: allOf: - $ref: "#/components/schemas/PostList" - type: object properties: matches: description: > Сопоставление ID сообщений со списком совпавших терминов в сообщении. Это поле будет заполнено только на серверах версии 5.1 или выше с включенным Elasticsearch. type: object additionalProperties: type: array items: type: string required: - matches PostMetadata: type: object description: Дополнительная информация, используемая для отображения сообщения. properties: embeds: type: array description: > Информация о содержимом, встроенном в сообщение, включая предварительные просмотры OpenGraph, предварительные просмотры ссылок на изображения и вложения сообщений. Это поле будет null, если сообщение не содержит встроенного содержимого. items: type: object properties: type: type: string description: Тип содержимого, встроенного в это сообщение. enum: - image - message_attachment - opengraph - link - quote - permalink url: type: string description: URL встроенного содержимого, если он существует. data: $ref: "#/components/schemas/PostEmbedData" description: > Любая дополнительная информация о встроенном содержимом. В настоящее время используется только для хранения метаданных OpenGraph. Это поле будет null для не-OpenGraph встраиваний. emojis: type: array description: > Пользовательские эмодзи, которые появляются в этом сообщении или были использованы в реакциях на это сообщение. Это поле будет null, если сообщение не содержит пользовательских эмодзи. items: $ref: "#/components/schemas/Emoji" files: type: array description: > Объекты FileInfo для любых файлов, прикрепленных к сообщению. Это поле будет null, если сообщение не имеет вложений файлов. items: $ref: "#/components/schemas/FileInfo" images: type: object description: > Объект, сопоставляющий URL внешнего изображения с объектом, содержащим размеры этого изображения. Это поле будет null, если сообщение или его встроенное содержимое не ссылается на внешние изображения. additionalProperties: $ref: "#/components/schemas/PostImage" reactions: type: array description: > Любые реакции на это сообщение. Это поле будет null, если на это сообщение не было реакций. items: $ref: "#/components/schemas/Reaction" PostEmbedData: type: object properties: post_id: type: string post: $ref: "#/components/schemas/Post" team_name: type: string channel_display_name: type: string channel_type: $ref: "#/components/schemas/ChannelType" channel_id: type: string PostImage: type: object properties: width: type: integer height: type: integer format: type: string description: > Формат - это название формата изображения, используемого image/go, например, "png", "gif" или "jpeg". frame_count: type: integer description: > FrameCount хранит количество кадров в этом изображении, если это анимированный gif. Для других форматов будет 0. required: - width - height - format - frame_count TeamMap: type: object description: Сопоставление teamIds с командами. properties: team_id: $ref: "#/components/schemas/Team" TeamMember: type: object properties: team_id: description: ID команды, к которой принадлежит этот участник. type: string user_id: description: ID пользователя, к которому относится этот участник. type: string roles: description: > Полный список ролей, назначенных этому участнику команды, в виде списка имен ролей, разделенных пробелами, включая любые роли, предоставленные неявно через схемы разрешений. type: string delete_at: description: | Время в миллисекундах, когда этот участник команды был удален. type: integer format: int64 scheme_user: description: > Является ли этот участник команды обладателем роли пользователя по умолчанию, определенной схемой разрешений команды. type: boolean scheme_admin: description: > Является ли этот участник команды обладателем роли администратора по умолчанию, определенной схемой разрешений команды. type: boolean explicit_roles: description: > Список ролей, явно назначенных этому участнику команды, в виде списка имен ролей, разделенных пробелами. Этот список *не* включает роли, предоставленные неявно через схемы разрешений. type: string TeamMemberWithError: type: object properties: user_id: type: string member: type: object $ref: "#/components/schemas/TeamMember" error: type: object $ref: "#/components/schemas/AppError" TeamUnread: type: object properties: team_id: type: string msg_count: type: integer mention_count: type: integer mention_count_root: type: integer msg_count_root: type: integer thread_count: type: integer thread_mention_count: type: integer ChannelUnread: type: object properties: team_id: type: string channel_id: type: string msg_count: type: integer mention_count: type: integer ChannelUnreadAt: type: object properties: team_id: description: ID команды, к которой принадлежит канал. type: string channel_id: description: ID канала, к которому пользователь имеет доступ. type: string msg_count: description: Количество сообщений, которые пользователь уже прочитал. type: integer mention_count: description: > Количество упоминаний пользователя в непрочитанных сообщениях канала. type: integer last_viewed_at: description: > Время в миллисекундах, когда пользователь в последний раз просматривал канал. type: integer format: int64 Session: type: object properties: create_at: description: Время в миллисекундах, когда сессия была создана type: integer format: int64 device_id: type: string expires_at: description: Время в миллисекундах, когда сессия истечет type: integer format: int64 id: type: string is_oauth: type: boolean last_activity_at: description: | Время в миллисекундах последней активности сессии type: integer format: int64 props: type: object roles: type: string team_members: type: array items: $ref: "#/components/schemas/TeamMember" token: type: string user_id: type: string FileInfo: type: object properties: id: description: Уникальный идентификатор для этого файла type: string user_id: description: ID пользователя, который загрузил этот файл type: string post_id: description: Если этот файл прикреплен к сообщению, ID этого сообщения type: string channel_id: description: ID канала, к которому принадлежит файл type: string create_at: description: Время в миллисекундах, когда файл был создан type: integer format: int64 update_at: description: Время в миллисекундах, когда файл был в последний раз обновлен type: integer format: int64 delete_at: description: Время в миллисекундах, когда файл был удален type: integer format: int64 name: description: Имя файла type: string extension: description: Расширение в конце имени файла type: string size: description: Размер файла в байтах type: integer format: int64 mime_type: description: MIME-тип файла type: string width: description: Если этот файл является изображением, ширина файла type: integer height: description: Если этот файл является изображением, высота файла type: integer has_preview_image: description: > Если этот файл является изображением, есть ли у него версия предварительного просмотра type: boolean mini_preview: description: Если этот файл является изображением, Base64 версии предварительного просмотра type: string remote_id: type: string required: - id - user_id - channel_id - create_at - update_at - delete_at - name - extension - size - mime_type Preference: type: object properties: user_id: description: ID пользователя, которому принадлежит это предпочтение type: string category: type: string name: type: string value: type: string required: - user_id - category - name UserAuthData: type: object properties: auth_data: description: > Специфичные для сервиса данные аутентификации. Для ldap/saml это значение `ID attribute`, указанное в системной консоли. Например, это может быть значение поля objectGUID, закодированное в base64. type: string auth_service: description: | Сервис аутентификации, такой как "saml", "ldap" или "openid" type: string required: - auth_data - auth_service UserAutocomplete: type: object properties: users: description: Список пользователей, являющихся основным результатом запроса type: array items: $ref: "#/components/schemas/User" out_of_channel: description: > Особый список пользователей, возвращаемый при автозаполнении в конкретном канале. Опускается, когда пусто или не актуально type: array items: $ref: "#/components/schemas/User" required: - users IncomingWebhook: type: object properties: id: description: Уникальный идентификатор для этого входящего вебхука type: string create_at: description: | Время в миллисекундах, когда входящий вебхук был создан type: integer format: int64 update_at: description: > Время в миллисекундах, когда входящий вебхук был в последний раз обновлен type: integer format: int64 delete_at: description: | Время в миллисекундах, когда входящий вебхук был удален type: integer format: int64 channel_id: description: > ID публичного канала или приватной группы, которая получает полезные нагрузки вебхука type: string description: description: Описание для этого входящего вебхука type: string display_name: description: Отображаемое имя для этого входящего вебхука type: string OutgoingWebhook: type: object properties: id: description: Уникальный идентификатор для этого исходящего вебхука type: string create_at: description: Время в миллисекундах, когда исходящий вебхук был создан type: integer format: int64 update_at: description: > Время в миллисекундах, когда исходящий вебхук был в последний раз обновлен type: integer format: int64 delete_at: description: Время в миллисекундах, когда исходящий вебхук был удален type: integer format: int64 creator_id: description: ID пользователя, который создал вебхук type: string team_id: description: ID команды, за которой следит вебхук type: string channel_id: description: ID публичного канала, за которым следит вебхук type: string description: description: Описание для этого исходящего вебхука type: string display_name: description: Отображаемое имя для этого исходящего вебхука type: string trigger_words: description: Список слов, на которые срабатывает вебхук type: array items: type: string trigger_when: description: > Когда срабатывать вебхуку, `0` когда триггерное слово присутствует в любом месте и `1` если сообщение начинается с триггерного слова type: integer callback_urls: description: | URL-адреса для отправки полезных нагрузок, когда вебхук срабатывает type: array items: type: string content_type: description: > Формат для отправки данных, либо `application/json`, либо `application/x-www-form-urlencoded` default: application/x-www-form-urlencoded type: string Reaction: type: object properties: user_id: description: ID пользователя, который сделал эту реакцию type: string post_id: description: ID сообщения, на которое была сделана эта реакция type: string emoji_name: description: Имя эмодзи, которое было использовано для этой реакции type: string create_at: description: Время в миллисекундах, когда была сделана эта реакция type: integer format: int64 required: - user_id - post_id - emoji_name - create_at TopReaction: type: object properties: emoji_name: description: Имя эмодзи, использованного для этой реакции. type: string count: description: Количество раз, когда это эмодзи было использовано. type: integer format: int64 TopReactionList: type: object properties: has_next: description: > Указывает, есть ли еще одна страница реакций, которую можно получить. type: boolean items: description: Список реакций. type: array items: $ref: "#/components/schemas/TopReaction" TopChannel: type: object properties: id: type: string type: type: string display_name: type: string name: type: string team_id: type: string message_count: description: > Количество сообщений, опубликованных в канале пользователями за указанный период времени (не включая сообщения, опубликованные ботами). type: string TopChannelList: type: object properties: has_next: description: > Указывает, есть ли еще одна страница каналов, которую можно получить. type: boolean items: description: Список каналов. type: array items: $ref: "#/components/schemas/TopChannel" Emoji: type: object properties: id: description: ID эмодзи type: string creator_id: description: ID пользователя, который создал эмодзи type: string name: description: Имя эмодзи type: string create_at: description: Время в миллисекундах, когда эмодзи был создан type: integer format: int64 update_at: description: Время в миллисекундах, когда эмодзи был в последний раз обновлен type: integer format: int64 delete_at: description: Время в миллисекундах, когда эмодзи был удален type: integer format: int64 required: - id - creator_id - name - create_at - update_at - delete_at Command: type: object properties: id: description: ID слэш-команды type: string token: description: | Токен, используемый для проверки источника полезной нагрузки type: string create_at: description: Время в миллисекундах, когда команда была создана type: integer format: int64 update_at: description: Время в миллисекундах, когда команда была в последний раз обновлена type: integer format: int64 delete_at: description: > Время в миллисекундах, когда команда была удалена, 0 если никогда не удалялась type: integer format: int64 creator_id: description: ID пользователя, создавшего команду type: string team_id: description: ID команды, для которой настроена эта команда type: string trigger: description: Строка, которая запускает эту команду type: string method: description: | Запуск команды через HTTP Get ('G') или HTTP Post ('P') type: string username: description: Имя пользователя для ответа type: string icon_url: description: URL для поиска иконки аватара пользователя type: string auto_complete: description: Использовать автозаполнение для этой команды type: boolean auto_complete_desc: description: | Описание команды, отображаемое при выборе команды type: string auto_complete_hint: description: Подсказка для этой команды type: string display_name: description: Отображаемое имя команды type: string description: description: Описание команды type: string url: description: URL, который запускается type: string AutocompleteSuggestion: type: object properties: Complete: description: Завершенное предложение type: string Suggestion: description: Предполагаемый текст, который пользователь может захотеть ввести type: string Hint: description: Подсказка о предложенном вводе type: string Description: description: Описание предложенной команды type: string IconData: description: Base64-кодированное изображение svg type: string required: - Complete - Suggestion - Hint - Description - IconData CommandResponse: type: object properties: ResponseType: description: | Тип ответа: либо in_channel, либо ephemeral type: string Text: type: string Username: type: string IconURL: type: string GotoLocation: type: string Attachments: type: array items: $ref: "#/components/schemas/SlackAttachment" SlackAttachment: type: object properties: Id: type: string Fallback: type: string Color: type: string Pretext: type: string AuthorName: type: string AuthorLink: type: string AuthorIcon: type: string Title: type: string TitleLink: type: string Text: type: string Fields: type: array items: $ref: "#/components/schemas/SlackAttachmentField" ImageURL: type: string description: > Изображение должно иметь правильный content-type, 'octet-stream' не поддерживается ThumbURL: type: string description: > Изображение должно иметь правильный content-type, 'octet-stream' не поддерживается Footer: type: string FooterIcon: type: string Timestamp: description: | Временная метка вложения Slack, может быть строкой или целым числом type: string SlackAttachmentField: type: object properties: Title: type: string Value: description: > Значение вложения, установлено как строка, но совместимо с интерфейсом golang type: string Short: type: boolean StatusOK: type: object properties: status: description: > Будет содержать "ok", если запрос был успешным и больше нечего возвращать type: string OpenGraph: type: object description: Метаданные OpenGraph веб-страницы properties: type: type: string url: type: string title: type: string description: type: string determiner: type: string site_name: type: string locale: type: string locales_alternate: type: array items: type: string images: type: array items: type: object description: Объект изображения, используемый в метаданных OpenGraph веб-страницы properties: url: type: string secure_url: type: string type: type: string width: type: integer height: type: integer videos: type: array items: type: object description: Объект видео, используемый в метаданных OpenGraph веб-страницы properties: url: type: string secure_url: type: string type: type: string width: type: integer height: type: integer audios: type: array items: type: object description: Объект аудио, используемый в метаданных OpenGraph веб-страницы properties: url: type: string secure_url: type: string type: type: string article: type: object description: > Объект статьи, используемый в метаданных OpenGraph веб-страницы, если тип - статья properties: published_time: type: string modified_time: type: string expiration_time: type: string section: type: string tags: type: array items: type: string authors: type: array items: type: object properties: first_name: type: string last_name: type: string username: type: string gender: type: string book: type: object description: > Объект книги, используемый в метаданных OpenGraph веб-страницы, если тип - книга properties: isbn: type: string release_date: type: string tags: type: array items: type: string authors: type: array items: type: object properties: first_name: type: string last_name: type: string username: type: string gender: type: string profile: type: object properties: first_name: type: string last_name: type: string username: type: string gender: type: string Audit: type: object properties: id: type: string create_at: description: Время в миллисекундах, когда аудит был создан type: integer format: int64 user_id: type: string action: type: string extra_info: type: string ip_address: type: string session_id: type: string Config: type: object properties: ServiceSettings: type: object properties: SiteURL: type: string ListenAddress: type: string ConnectionSecurity: type: string TLSCertFile: type: string TLSKeyFile: type: string UseLetsEncrypt: type: boolean LetsEncryptCertificateCacheFile: type: string Forward80To443: type: boolean ReadTimeout: type: integer WriteTimeout: type: integer MaximumLoginAttempts: type: integer SegmentDeveloperKey: type: string GoogleDeveloperKey: type: string EnableOAuthServiceProvider: type: boolean EnableIncomingWebhooks: type: boolean EnableOutgoingWebhooks: type: boolean EnableCommands: type: boolean EnableOnlyAdminIntegrations: type: boolean EnablePostUsernameOverride: type: boolean EnablePostIconOverride: type: boolean EnableTesting: type: boolean EnableDeveloper: type: boolean EnableSecurityFixAlert: type: boolean EnableInsecureOutgoingConnections: type: boolean EnableMultifactorAuthentication: type: boolean EnforceMultifactorAuthentication: type: boolean AllowCorsFrom: type: string SessionLengthWebInDays: type: integer SessionLengthMobileInDays: type: integer SessionLengthSSOInDays: type: integer SessionCacheInMinutes: type: integer WebsocketSecurePort: type: integer WebsocketPort: type: integer WebserverMode: type: string EnableCustomEmoji: type: boolean RestrictCustomEmojiCreation: type: string TeamSettings: type: object properties: SiteName: type: string MaxUsersPerTeam: type: integer EnableTeamCreation: type: boolean EnableUserCreation: type: boolean EnableOpenServer: type: boolean RestrictCreationToDomains: type: string EnableCustomBrand: type: boolean CustomBrandText: type: string CustomDescriptionText: type: string RestrictDirectMessage: type: string RestrictTeamInvite: type: string RestrictPublicChannelManagement: type: string RestrictPrivateChannelManagement: type: string RestrictPublicChannelCreation: type: string RestrictPrivateChannelCreation: type: string RestrictPublicChannelDeletion: type: string RestrictPrivateChannelDeletion: type: string UserStatusAwayTimeout: type: integer MaxChannelsPerTeam: type: integer MaxNotificationsPerChannel: type: integer SqlSettings: type: object properties: DriverName: type: string DataSource: type: string DataSourceReplicas: type: array items: type: string MaxIdleConns: type: integer MaxOpenConns: type: integer Trace: type: boolean AtRestEncryptKey: type: string LogSettings: type: object properties: EnableConsole: type: boolean ConsoleLevel: type: string EnableFile: type: boolean FileLevel: type: string FileLocation: type: string EnableWebhookDebugging: type: boolean EnableDiagnostics: type: boolean PasswordSettings: type: object properties: MinimumLength: type: integer Lowercase: type: boolean Number: type: boolean Uppercase: type: boolean Symbol: type: boolean FileSettings: type: object properties: MaxFileSize: type: integer DriverName: type: string Directory: type: string EnablePublicLink: type: boolean PublicLinkSalt: type: string ThumbnailWidth: type: integer ThumbnailHeight: type: integer PreviewWidth: type: integer PreviewHeight: type: integer ProfileWidth: type: integer ProfileHeight: type: integer InitialFont: type: string AmazonS3AccessKeyId: type: string AmazonS3SecretAccessKey: type: string AmazonS3Bucket: type: string AmazonS3Region: type: string AmazonS3Endpoint: type: string AmazonS3SSL: type: boolean EmailSettings: type: object properties: EnableSignUpWithEmail: type: boolean EnableSignInWithEmail: type: boolean EnableSignInWithUsername: type: boolean SendEmailNotifications: type: boolean RequireEmailVerification: type: boolean FeedbackName: type: string FeedbackEmail: type: string FeedbackOrganization: type: string SMTPUsername: type: string SMTPPassword: type: string SMTPServer: type: string SMTPPort: type: string ConnectionSecurity: type: string InviteSalt: type: string PasswordResetSalt: type: string SendPushNotifications: type: boolean PushNotificationServer: type: string PushNotificationContents: type: string EnableEmailBatching: type: boolean EmailBatchingBufferSize: type: integer EmailBatchingInterval: type: integer RateLimitSettings: type: object properties: Enable: type: boolean PerSec: type: integer MaxBurst: type: integer MemoryStoreSize: type: integer VaryByRemoteAddr: type: boolean VaryByHeader: type: string PrivacySettings: type: object properties: ShowEmailAddress: type: boolean ShowFullName: type: boolean SupportSettings: type: object properties: TermsOfServiceLink: type: string PrivacyPolicyLink: type: string AboutLink: type: string HelpLink: type: string ReportAProblemLink: type: string SupportEmail: type: string LdapSettings: type: object properties: Enable: type: boolean LdapServer: type: string LdapPort: type: integer ConnectionSecurity: type: string BaseDN: type: string BindUsername: type: string BindPassword: type: string UserFilter: type: string FirstNameAttribute: type: string LastNameAttribute: type: string EmailAttribute: type: string UsernameAttribute: type: string NicknameAttribute: type: string IdAttribute: type: string PositionAttribute: type: string SyncIntervalMinutes: type: integer SkipCertificateVerification: type: boolean QueryTimeout: type: integer MaxPageSize: type: integer LoginFieldName: type: string ComplianceSettings: type: object properties: Enable: type: boolean Directory: type: string EnableDaily: type: boolean LocalizationSettings: type: object properties: DefaultServerLocale: type: string DefaultClientLocale: type: string AvailableLocales: type: string SamlSettings: type: object properties: Enable: type: boolean Verify: type: boolean Encrypt: type: boolean IdpUrl: type: string IdpDescriptorUrl: type: string AssertionConsumerServiceURL: type: string IdpCertificateFile: type: string PublicCertificateFile: type: string PrivateKeyFile: type: string FirstNameAttribute: type: string LastNameAttribute: type: string EmailAttribute: type: string UsernameAttribute: type: string NicknameAttribute: type: string LocaleAttribute: type: string PositionAttribute: type: string LoginButtonText: type: string NativeAppSettings: type: object properties: AppDownloadLink: type: string AndroidAppDownloadLink: type: string IosAppDownloadLink: type: string ClusterSettings: type: object properties: Enable: type: boolean InterNodeListenAddress: type: string InterNodeUrls: type: array items: type: string MetricsSettings: type: object properties: Enable: type: boolean BlockProfileRate: type: integer ListenAddress: type: string AnalyticsSettings: type: object properties: MaxUsersForStatistics: type: integer AuthConfig: type: object properties: AuthOrder: type: array items: type: string enum: - email - saml - ldap - openid EnableSignUpWithEmail: type: boolean EmailLoginButtonColor: type: string EmailLoginButtonBorderColor: type: string EmailLoginButtonTextColor: type: string EnableSignUpWithOpenId: type: boolean OpenIdButtonColor: type: string OpenIdButtonText: type: string EnableSignUpWithSaml: type: boolean EnableSaml: type: boolean SamlLoginButtonColor: type: string SamlLoginButtonBorderColor: type: string SamlLoginButtonTextColor: type: string SamlLoginButtonText: type: string EnableSignUpWithLdap: type: boolean EnableLdap: type: boolean FirstNameMaxLength: type: integer LastNameMaxLength: type: integer LdapLoginButtonColor: type: string LdapLoginButtonBorderColor: type: string LdapLoginButtonTextColor: type: string LdapLoginFieldName: type: string LoginMinimumLength: type: integer LoginMaximumLength: type: integer LoginRegex: type: string MaxImageResolution: type: integer description: > Максимально допустимое общее количество пикселей. Рассчитывается как Ширина*Высота. format: int64 ProfileImageMinWidth: type: integer ProfileImageMinHeight: type: integer MaxImageFileSize: type: integer description: Максимально допустимый размер файла в байтах ImageFileExtensions: type: string description: Разрешенные расширения изображений, разделенные точкой с запятой PasswordMinimumLength: type: integer PasswordMaximumLength: type: integer PasswordRequireLowercase: type: boolean PasswordRequireNumber: type: boolean PasswordRequireSymbol: type: boolean PasswordRequireUppercase: type: boolean PositionMaxLength: type: integer ConfigClient: type: object properties: WebsocketPort: type: integer WebsocketSecurePort: type: integer WebsocketURL: type: string required: - WebsocketPort - WebsocketSecurePort - WebsocketURL PushNotificationConfig: type: object properties: VapidPublicKey: type: string required: - VapidPublicKey EnvironmentConfig: type: object properties: ServiceSettings: type: object properties: SiteURL: type: boolean ListenAddress: type: boolean ConnectionSecurity: type: boolean TLSCertFile: type: boolean TLSKeyFile: type: boolean UseLetsEncrypt: type: boolean LetsEncryptCertificateCacheFile: type: boolean Forward80To443: type: boolean ReadTimeout: type: boolean WriteTimeout: type: boolean MaximumLoginAttempts: type: boolean SegmentDeveloperKey: type: boolean GoogleDeveloperKey: type: boolean EnableOAuthServiceProvider: type: boolean EnableIncomingWebhooks: type: boolean EnableOutgoingWebhooks: type: boolean EnableCommands: type: boolean EnableOnlyAdminIntegrations: type: boolean EnablePostUsernameOverride: type: boolean EnablePostIconOverride: type: boolean EnableTesting: type: boolean EnableDeveloper: type: boolean EnableSecurityFixAlert: type: boolean EnableInsecureOutgoingConnections: type: boolean EnableMultifactorAuthentication: type: boolean EnforceMultifactorAuthentication: type: boolean AllowCorsFrom: type: boolean SessionLengthWebInDays: type: boolean SessionLengthMobileInDays: type: boolean SessionLengthSSOInDays: type: boolean SessionCacheInMinutes: type: boolean WebsocketSecurePort: type: boolean WebsocketPort: type: boolean WebserverMode: type: boolean EnableCustomEmoji: type: boolean RestrictCustomEmojiCreation: type: boolean TeamSettings: type: object properties: SiteName: type: boolean MaxUsersPerTeam: type: boolean EnableTeamCreation: type: boolean EnableUserCreation: type: boolean EnableOpenServer: type: boolean RestrictCreationToDomains: type: boolean EnableCustomBrand: type: boolean CustomBrandText: type: boolean CustomDescriptionText: type: boolean RestrictDirectMessage: type: boolean RestrictTeamInvite: type: boolean RestrictPublicChannelManagement: type: boolean RestrictPrivateChannelManagement: type: boolean RestrictPublicChannelCreation: type: boolean RestrictPrivateChannelCreation: type: boolean RestrictPublicChannelDeletion: type: boolean RestrictPrivateChannelDeletion: type: boolean UserStatusAwayTimeout: type: boolean MaxChannelsPerTeam: type: boolean MaxNotificationsPerChannel: type: boolean SqlSettings: type: object properties: DriverName: type: boolean DataSource: type: boolean DataSourceReplicas: type: boolean MaxIdleConns: type: boolean MaxOpenConns: type: boolean Trace: type: boolean AtRestEncryptKey: type: boolean LogSettings: type: object properties: EnableConsole: type: boolean ConsoleLevel: type: boolean EnableFile: type: boolean FileLevel: type: boolean FileLocation: type: boolean EnableWebhookDebugging: type: boolean EnableDiagnostics: type: boolean PasswordSettings: type: object properties: MinimumLength: type: boolean Lowercase: type: boolean Number: type: boolean Uppercase: type: boolean Symbol: type: boolean FileSettings: type: object properties: MaxFileSize: type: boolean DriverName: type: boolean Directory: type: boolean EnablePublicLink: type: boolean PublicLinkSalt: type: boolean ThumbnailWidth: type: boolean ThumbnailHeight: type: boolean PreviewWidth: type: boolean PreviewHeight: type: boolean ProfileWidth: type: boolean ProfileHeight: type: boolean InitialFont: type: boolean AmazonS3AccessKeyId: type: boolean AmazonS3SecretAccessKey: type: boolean AmazonS3Bucket: type: boolean AmazonS3Region: type: boolean AmazonS3Endpoint: type: boolean AmazonS3SSL: type: boolean EmailSettings: type: object properties: EnableSignUpWithEmail: type: boolean EnableSignInWithEmail: type: boolean EnableSignInWithUsername: type: boolean SendEmailNotifications: type: boolean RequireEmailVerification: type: boolean FeedbackName: type: boolean FeedbackEmail: type: boolean FeedbackOrganization: type: boolean SMTPUsername: type: boolean SMTPPassword: type: boolean SMTPServer: type: boolean SMTPPort: type: boolean ConnectionSecurity: type: boolean InviteSalt: type: boolean PasswordResetSalt: type: boolean SendPushNotifications: type: boolean PushNotificationServer: type: boolean PushNotificationContents: type: boolean EnableEmailBatching: type: boolean EmailBatchingBufferSize: type: boolean EmailBatchingInterval: type: boolean RateLimitSettings: type: object properties: Enable: type: boolean PerSec: type: boolean MaxBurst: type: boolean MemoryStoreSize: type: boolean VaryByRemoteAddr: type: boolean VaryByHeader: type: boolean PrivacySettings: type: object properties: ShowEmailAddress: type: boolean ShowFullName: type: boolean SupportSettings: type: object properties: TermsOfServiceLink: type: boolean PrivacyPolicyLink: type: boolean AboutLink: type: boolean HelpLink: type: boolean ReportAProblemLink: type: boolean SupportEmail: type: boolean LdapSettings: type: object properties: Enable: type: boolean LdapServer: type: boolean LdapPort: type: boolean ConnectionSecurity: type: boolean BaseDN: type: boolean BindUsername: type: boolean BindPassword: type: boolean UserFilter: type: boolean FirstNameAttribute: type: boolean LastNameAttribute: type: boolean EmailAttribute: type: boolean UsernameAttribute: type: boolean NicknameAttribute: type: boolean IdAttribute: type: boolean PositionAttribute: type: boolean SyncIntervalMinutes: type: boolean SkipCertificateVerification: type: boolean QueryTimeout: type: boolean MaxPageSize: type: boolean LoginFieldName: type: boolean ComplianceSettings: type: object properties: Enable: type: boolean Directory: type: boolean EnableDaily: type: boolean LocalizationSettings: type: object properties: DefaultServerLocale: type: boolean DefaultClientLocale: type: boolean AvailableLocales: type: boolean SamlSettings: type: object properties: Enable: type: boolean Verify: type: boolean Encrypt: type: boolean IdpUrl: type: boolean IdpDescriptorUrl: type: boolean AssertionConsumerServiceURL: type: boolean IdpCertificateFile: type: boolean PublicCertificateFile: type: boolean PrivateKeyFile: type: boolean FirstNameAttribute: type: boolean LastNameAttribute: type: boolean EmailAttribute: type: boolean UsernameAttribute: type: boolean NicknameAttribute: type: boolean LocaleAttribute: type: boolean PositionAttribute: type: boolean LoginButtonText: type: boolean NativeAppSettings: type: object properties: AppDownloadLink: type: boolean AndroidAppDownloadLink: type: boolean IosAppDownloadLink: type: boolean ClusterSettings: type: object properties: Enable: type: boolean InterNodeListenAddress: type: boolean InterNodeUrls: type: boolean MetricsSettings: type: object properties: Enable: type: boolean BlockProfileRate: type: boolean ListenAddress: type: boolean AnalyticsSettings: type: object properties: MaxUsersForStatistics: type: boolean SamlCertificateStatus: type: object properties: idp_certificate_file: description: Статус хороший, когда `true` type: boolean public_certificate_file: description: Статус хороший, когда `true` type: boolean private_key_file: description: Статус хороший, когда `true` type: boolean Compliance: type: object properties: id: type: string create_at: type: integer format: int64 user_id: type: string status: type: string count: type: integer desc: type: string type: type: string start_at: type: integer format: int64 end_at: type: integer format: int64 keywords: type: string emails: type: string ClusterInfo: type: object properties: id: description: Уникальный ID для узла type: string version: description: Версия сервера, на которой находится узел type: string config_hash: description: Хэш файла конфигурации, который использует узел type: string internode_url: description: | URL, используемый для связи с этим узлом от других узлов type: string hostname: description: Имя хоста для этого узла type: string last_ping: description: Время последнего пинга к этому узлу type: integer format: int64 is_alive: description: Жив ли узел и в порядке type: boolean AppError: type: object properties: status_code: type: integer id: type: string message: type: string request_id: type: string Status: type: object properties: user_id: type: string status: type: string manual: type: boolean last_activity_at: type: integer format: int64 OAuthApp: type: object properties: id: type: string description: ID клиента приложения client_secret: type: string description: Секрет клиента приложения name: type: string description: Имя клиентского приложения description: type: string description: Краткое описание приложения icon_url: type: string description: URL иконки для отображения с приложением callback_urls: type: array items: type: string description: Список URL-адресов обратного вызова для приложения homepage: type: string description: Ссылка на веб-сайт приложения is_trusted: type: boolean description: > Установите это значение в `true`, чтобы пропустить запрос разрешения у пользователей create_at: type: integer description: Время регистрации приложения format: int64 update_at: type: integer description: Время последнего обновления приложения format: int64 Job: type: object properties: id: type: string description: Уникальный ID задания type: type: string description: Тип задания create_at: type: integer description: Время создания задания format: int64 start_at: type: integer description: Время начала задания format: int64 last_activity_at: type: integer description: Время последней активности задания format: int64 status: type: string description: Статус задания progress: type: integer description: Прогресс (в процентах) выполнения задания data: type: object description: > Поле данных свободной формы, содержащее дополнительную информацию о задании UserAccessToken: type: object properties: id: type: string description: Уникальный идентификатор токена token: type: string description: Токен, используемый для аутентификации user_id: type: string description: Пользователь, для которого аутентифицируется токен description: type: string description: Описание использования токена UserAccessTokenSanitized: type: object properties: id: type: string description: Уникальный идентификатор токена user_id: type: string description: Пользователь, для которого аутентифицируется токен description: type: string description: Описание использования токена is_active: type: boolean description: Указывает, активен ли токен GlobalDataRetentionPolicy: type: object properties: message_deletion_enabled: type: boolean description: > Указывает, включено ли глобальное удаление сообщений по политике хранения данных. file_deletion_enabled: type: boolean description: > Указывает, включено ли глобальное удаление вложений файлов по политике хранения данных. message_retention_cutoff: type: integer description: > Текущая метка времени сервера, до которой сообщения должны быть удалены. file_retention_cutoff: type: integer description: | Текущая метка времени сервера, до которой файлы должны быть удалены. DataRetentionPolicyWithoutId: type: object properties: display_name: type: string description: Отображаемое имя для этой политики хранения. post_duration: type: integer description: > Количество дней, в течение которых сообщение будет храниться перед удалением по этой политике. Если это значение меньше 0, политика имеет бесконечное хранение (т.е. сообщения никогда не удаляются). DataRetentionPolicy: allOf: - $ref: "#/components/schemas/DataRetentionPolicyWithoutId" - type: object properties: id: type: string description: ID этой политики хранения. DataRetentionPolicyWithTeamAndChannelCounts: allOf: - $ref: "#/components/schemas/DataRetentionPolicy" - type: object properties: team_count: type: integer description: | Количество команд, к которым применяется эта политика. channel_count: type: integer description: | Количество каналов, к которым применяется эта политика. DataRetentionPolicyWithTeamAndChannelIds: allOf: - $ref: "#/components/schemas/DataRetentionPolicyWithoutId" - type: object properties: team_ids: type: array items: type: string description: | ID команд, к которым должна быть применена эта политика. channel_ids: type: array items: type: string description: | ID каналов, к которым должна быть применена эта политика. DataRetentionPolicyCreate: allOf: - $ref: "#/components/schemas/DataRetentionPolicyWithTeamAndChannelIds" required: - display_name - post_duration DataRetentionPolicyForTeam: type: object properties: team_id: type: string description: ID команды. post_duration: type: integer description: > Количество дней, в течение которых сообщение будет храниться перед удалением по этой политике. RetentionPolicyForTeamList: type: object properties: policies: type: array items: $ref: "#/components/schemas/DataRetentionPolicyForTeam" description: Список политик для команд. total_count: type: integer description: Общее количество политик для команд. DataRetentionPolicyForChannel: type: object properties: channel_id: type: string description: ID канала. post_duration: type: integer description: > Количество дней, в течение которых сообщение будет храниться перед удалением по этой политике. RetentionPolicyForChannelList: type: object properties: policies: type: array items: $ref: "#/components/schemas/DataRetentionPolicyForChannel" description: Список политик для каналов. total_count: type: integer description: Общее количество политик для каналов. UserNotifyProps: type: object properties: email: type: string description: > Установите "true", чтобы включить уведомления по электронной почте, "false", чтобы отключить. По умолчанию "true". push: $ref: "#/components/schemas/UserMentionNotificationType" default: mention description: > Установите "all", чтобы получать push-уведомления обо всей активности, "mention" только для упоминаний и личных сообщений, и "none", чтобы отключить. По умолчанию "mention". desktop: $ref: "#/components/schemas/UserMentionNotificationType" default: mention description: > Установите "all", чтобы получать уведомления на рабочем столе обо всей активности, "mention" только для упоминаний и личных сообщений, и "none", чтобы отключить. По умолчанию "mention". desktop_sound: type: string description: > Установите "true", чтобы включить звук уведомлений на рабочем столе, "false", чтобы отключить. По умолчанию "true". mention_keys: type: string description: > Список слов, разделенных запятыми, которые считаются упоминаниями. По умолчанию имя пользователя и @имя_пользователя. channel: type: string description: > Установите "true", чтобы включить уведомления для всего канала (@channel, @all, и т.д.), "false", чтобы отключить. По умолчанию "true". first_name: type: string description: > Установите "true", чтобы включить упоминания по имени. По умолчанию "true", если имя установлено, "false" в противном случае. desktop_threads: $ref: "#/components/schemas/UserMentionNotificationType" default: all description: > Установите "all", чтобы получать уведомления на рабочем столе обо всей активности, "mention" только для упоминаний и личных сообщений, и "none", чтобы отключить. По умолчанию "all". push_threads: $ref: "#/components/schemas/UserMentionNotificationType" default: all description: > Установите "all", чтобы получать уведомления обо всей активности в теме, "mention" только для упоминаний и личных сообщений, и "none", чтобы отключить. По умолчанию "all". desktop_reactions: $ref: "#/components/schemas/UserReactionsNotificationType" default: none nullable: true description: > Установите "conversation", чтобы получать уведомления о реакциях в личных и групповых каналах, "direct" только для реакций в личных каналах, и "none", чтобы отключить. По умолчанию "none" или не существует. push_reactions: $ref: "#/components/schemas/UserReactionsNotificationType" default: none nullable: true description: > Установите "conversation", чтобы получать уведомления о реакциях в личных и групповых каналах, "direct" только для реакций в личных каналах, и "none", чтобы отключить. По умолчанию "none" или не существует. required: - email - push - desktop - desktop_sound - channel - first_name - desktop_threads - push_threads Timezone: type: object properties: useAutomaticTimezone: type: boolean description: > Установите "true", чтобы использовать часовой пояс браузера/системы, "false", чтобы установить вручную. По умолчанию "true". manualTimezone: type: string description: > Значение при ручной установке часового пояса, например, "Europe/Berlin". automaticTimezone: type: string description: > Это значение устанавливается автоматически, когда "useAutomaticTimezone" установлено в "true". required: - useAutomaticTimezone - manualTimezone - automaticTimezone ChannelNotifyProps: type: object properties: email: type: string description: > Установите "true", чтобы включить уведомления по электронной почте, "false", чтобы отключить, или "default", чтобы использовать глобальную настройку уведомлений пользователя. push: type: string description: > Установите "all", чтобы получать push-уведомления обо всей активности, "mention" только для упоминаний и личных сообщений, "none", чтобы отключить, или "default", чтобы использовать глобальную настройку уведомлений пользователя. desktop: type: string description: > Установите "all", чтобы получать уведомления на рабочем столе обо всей активности, "mention" только для упоминаний и личных сообщений, "none", чтобы отключить, или "default", чтобы использовать глобальную настройку уведомлений пользователя. mark_unread: type: string description: > Установите "all", чтобы отмечать канал как непрочитанный для любого нового сообщения, "mention" чтобы отмечать как непрочитанный только для новых упоминаний. По умолчанию "all". PluginManifest: type: object properties: id: type: string description: Глобально уникальный идентификатор, представляющий плагин. name: type: string description: Название плагина. description: type: string description: Описание того, что представляет собой плагин и что он делает. version: type: string description: Номер версии плагина. min_server_version: type: string description: | Минимальная версия сервера Time, необходимая для плагина. Доступно с версией сервера 5.6. backend: type: object properties: executable: type: string description: Путь к исполняемому файлу. server: type: object properties: executables: type: object description: > Пути к исполняемым файлам, указывающие несколько точек входа для разных платформ при объединении в один плагин. properties: linux-amd64: type: string darwin-amd64: type: string windows-amd64: type: string executable: type: string description: Путь к исполняемому файлу. webapp: type: object properties: bundle_path: type: string description: Путь к JavaScript-бандлу веб-приложения. settings_schema: type: object description: > Схема настроек, используемая для определения интерфейса системной консоли для плагина. MarketplacePlugin: type: object properties: homepage_url: type: string description: URL, ведущий на домашнюю страницу плагина. icon_data: type: string description: Base64-кодирование иконки плагина в формате SVG. download_url: type: string description: URL для загрузки плагина. release_notes_url: type: string description: URL, ведущий к заметкам о выпуске плагина. labels: type: array items: type: string description: Список меток плагина. signature: type: string description: Base64-кодированная подпись плагина. manifest: $ref: "#/components/schemas/PluginManifest" installed_version: type: string description: Номер версии уже установленного плагина, если таковой имеется. PushNotification: type: object properties: ack_id: type: string platform: type: string server_id: type: string device_id: type: string post_id: type: string category: type: string sound: type: string message: type: string badge: type: integer cont_ava: type: integer team_id: type: string channel_id: type: string root_id: type: string channel_name: type: string type: type: string sender_id: type: string sender_name: type: string override_username: type: string override_icon_url: type: string from_webhook: type: string version: type: string is_id_loaded: type: boolean PushNotificationAck: type: object properties: id: type: string description: ack_id, полученный в уведомлении received_at: type: integer format: int64 description: Время в миллисекундах, когда уведомление было получено platform: type: string description: Мобильная платформа (android/ios) type: type: string description: Тип уведомления (реакция, сообщение и т.д.) post_id: type: string description: post_id, полученный в уведомлении is_id_loaded: type: boolean description: is_id_loaded post_id, полученный в уведомлении required: - id - platform - type PluginStatus: type: object properties: plugin_id: type: string description: Глобально уникальный идентификатор, представляющий плагин. name: type: string description: Название плагина. description: type: string description: Описание того, что представляет собой плагин и что он делает. version: type: string description: Номер версии плагина. cluster_id: type: string description: ID кластера, в котором работает плагин plugin_path: type: string description: Путь к плагину на сервере state: type: integer enum: - 0 - 1 - 2 - 3 - 4 - 5 x-enum-varnames: - NotRunning - Starting - Running - FailedToStart - FailedToStayRunning - Stopping description: | Состояние плагина: * 0 Не работает * 1 Запускается * 2 Работает * 3 Не удалось запустить * 4 Не удалось оставаться работающим * 5 Останавливается LicenseUsage: type: object properties: active_users: type: integer description: Количество активных пользователей (включая ботов и системных администраторов). license_users: type: integer description: Общее количество лицензий пользователей. active_restricted_guests: type: integer description: Количество активных гостей. license_restricted_guests: type: integer description: Общее количество лицензий гостей. active_guests: type: integer description: Количество активных гостей+. license_guests: type: integer description: Общее количество лицензий гостей+. license_id: type: string description: Уникальный идентификатор лицензии. system_admins: type: integer description: Количество активных системных администраторов. PluginManifestWebapp: type: object properties: id: type: string description: Глобально уникальный идентификатор, представляющий плагин. version: type: string description: Номер версии плагина. webapp: type: object properties: bundle_path: type: string description: Путь к JavaScript-бандлу веб-приложения. Role: type: object properties: id: type: string description: Уникальный идентификатор роли. name: type: string description: > Уникальное имя роли, используемое при назначении ролей пользователям/группам в контекстах. display_name: type: string description: Читаемое имя роли. description: type: string description: Читаемое описание роли. permissions: type: array items: type: string description: | Список уникальных имен разрешений, предоставляемых этой ролью. scheme_managed: type: boolean description: > указывает, управляется ли эта роль схемой (true), или является самостоятельной пользовательской ролью (false). Scheme: type: object properties: id: type: string description: Уникальный идентификатор схемы. name: type: string description: Читаемое имя схемы. description: type: string description: Читаемое описание схемы. create_at: type: integer format: int64 description: Время создания схемы. update_at: type: integer format: int64 description: Время последнего обновления схемы. delete_at: type: integer format: int64 description: Время удаления схемы. scope: type: string description: | Область применения схемы, либо "team" либо "channel". default_team_admin_role: type: string description: ID роли администратора команды по умолчанию для этой схемы. default_team_user_role: type: string description: ID роли пользователя команды по умолчанию для этой схемы. default_team_guest_role: type: string description: ID роли гостя команды по умолчанию для этой схемы. default_team_restricted_guest_role: type: string description: ID роли ограниченного гостя команды по умолчанию для этой схемы. default_channel_admin_role: type: string description: | ID роли администратора канала по умолчанию для этой схемы. default_channel_user_role: type: string description: | ID роли пользователя канала по умолчанию для этой схемы. default_channel_guest_role: type: string description: ID роли гостя канала по умолчанию для этой схемы. default_channel_restricted_guest_role: type: string description: ID роли ограниченного гостя канала по умолчанию для этой схемы. TermsOfService: type: object properties: id: type: string description: Уникальный идентификатор условий использования. create_at: type: integer format: int64 description: Время создания условий использования. user_id: type: string description: > Уникальный идентификатор пользователя, который создал эти условия использования. text: type: string description: Текст условий использования. Поддерживает Markdown. UserTermsOfService: type: object properties: user_id: type: string description: > Уникальный идентификатор пользователя, который выполнил это действие по условиям использования. terms_of_service_id: type: string description: > Уникальный идентификатор условий использования, на которые было выполнено действие. create_at: description: | Время в миллисекундах, когда было выполнено это действие. type: integer format: int64 PostIdToReactionsMap: type: object additionalProperties: type: array items: $ref: "#/components/schemas/Reaction" Product: type: object properties: id: type: string name: type: string description: type: string price_per_seat: type: string add_ons: type: array items: $ref: "#/components/schemas/AddOn" AddOn: type: object properties: id: type: string name: type: string display_name: type: string price_per_seat: type: string ProductLimits: type: object properties: boards: $ref: "#/components/schemas/BoardsLimits" nullable: true files: $ref: "#/components/schemas/FilesLimits" nullable: true integrations: $ref: "#/components/schemas/IntegrationsLimits" nullable: true messages: $ref: "#/components/schemas/MessagesLimits" nullable: true teams: $ref: "#/components/schemas/TeamsLimits" nullable: true BoardsLimits: type: object properties: cards: type: integer nullable: true views: type: integer nullable: true FilesLimits: type: object properties: total_storage: type: integer format: int64 nullable: true IntegrationsLimits: type: object properties: enabled: type: integer nullable: true MessagesLimits: type: object properties: history: type: integer nullable: true TeamsLimits: type: object properties: active: type: integer nullable: true PaymentSetupIntent: type: object properties: id: type: string client_secret: type: string PaymentMethod: type: object properties: type: type: string last_four: type: integer exp_month: type: integer exp_year: type: integer card_brand: type: string name: type: string Address: type: object properties: city: type: string country: type: string line1: type: string line2: type: string postal_code: type: string state: type: string CloudCustomer: type: object properties: id: type: string creator_id: type: string create_at: type: integer format: int64 email: type: string name: type: string num_employees: type: string contact_first_name: type: string contact_last_name: type: string billing_address: $ref: "#/components/schemas/Address" company_address: $ref: "#/components/schemas/Address" payment_method: $ref: "#/components/schemas/PaymentMethod" Subscription: type: object properties: id: type: string customer_id: type: string product_id: type: string add_ons: type: array items: type: string start_at: type: integer format: int64 end_at: type: integer format: int64 create_at: type: integer format: int64 seats: type: integer dns: type: string SubscriptionStats: type: object properties: remaining_seats: type: integer is_paid_tier: type: string Invoice: type: object properties: id: type: string number: type: string create_at: type: integer format: int64 total: type: integer format: int64 tax: type: integer format: int64 status: type: string period_start: type: integer format: int64 period_end: type: integer format: int64 subscription_id: type: string item: type: array items: $ref: "#/components/schemas/InvoiceLineItem" InvoiceLineItem: type: object properties: price_id: type: string total: type: integer format: int64 quantity: type: integer format: int64 price_per_unit: type: integer format: int64 description: type: string metadata: type: array items: type: string Group: type: object properties: id: type: string name: type: string display_name: type: string description: type: string source: $ref: "#/components/schemas/GroupSource" remote_id: type: string create_at: type: integer format: int64 update_at: type: integer format: int64 delete_at: type: integer format: int64 has_syncables: type: boolean member_count: type: integer allow_reference: type: boolean required: - id - display_name - description - source - create_at - update_at - delete_at - has_syncables - allow_reference GroupSource: type: string enum: - ldap - custom x-enum-varnames: - Ldap - Custom GroupSyncableTeam: type: object properties: team_id: type: string group_id: type: string auto_add: type: boolean create_at: type: integer format: int64 delete_at: type: integer format: int64 update_at: type: integer format: int64 GroupSyncableChannel: type: object properties: channel_id: type: string group_id: type: string auto_add: type: boolean create_at: type: integer format: int64 delete_at: type: integer format: int64 update_at: type: integer format: int64 GroupSyncableTeams: type: object properties: team_id: type: string team_display_name: type: string team_allow_open_invite: type: boolean team_type: type: string deprecated: true group_id: type: string auto_add: type: boolean create_at: type: integer format: int64 delete_at: type: integer format: int64 update_at: type: integer format: int64 GroupSyncableChannels: type: object properties: channel_id: type: string channel_display_name: type: string channel_type: type: string team_id: type: string team_display_name: type: string team_allow_open_invite: type: boolean team_type: type: string deprecated: true group_id: type: string auto_add: type: boolean create_at: type: integer format: int64 delete_at: type: integer format: int64 update_at: type: integer format: int64 ChannelModeration: type: object properties: name: type: string roles: $ref: "#/components/schemas/ChannelModeratedRoles" exclude_user_ids: type: array items: type: string ChannelModeratedRoles: type: object properties: restricted_guests: $ref: "#/components/schemas/ChannelModeratedRole" guests: $ref: "#/components/schemas/ChannelModeratedRole" members: $ref: "#/components/schemas/ChannelModeratedRole" ChannelModeratedRole: type: object properties: value: type: boolean enabled: type: boolean ChannelModeratedRolesPatch: type: object properties: restricted_guests: type: boolean guests: type: boolean members: type: boolean ChannelModerationPatch: type: object properties: name: type: string roles: $ref: "#/components/schemas/ChannelModeratedRolesPatch" exclude_user_ids: type: array items: type: string ChannelMemberCountByGroup: description: | Объект, описывающий информацию о членах группы в канале type: object properties: group_id: type: string description: ID группы channel_member_count: type: integer format: int64 description: Общее количество членов группы в канале channel_member_timezones_count: type: integer format: int64 description: > Общее количество уникальных часовых поясов для членов группы в канале required: - group_id - channel_member_count - channel_member_timezones_count LDAPGroupsPaged: description: Постраничный список LDAP групп type: object properties: count: type: integer description: Общее количество групп groups: type: array items: $ref: "#/components/schemas/LDAPGroup" LDAPGroup: description: LDAP группа type: object properties: has_syncables: type: boolean mattermost_group_id: type: string primary_key: type: string name: type: string SidebarCategoryType: type: string enum: - channels - custom - direct_messages - favorites x-enum-varnames: - Channels - Custom - DirectMessages - Favorites SidebarCategorySorting: type: string enum: - "" - manual - recent - alpha x-enum-varnames: - Default - Manual - Recent - Alphabetical SidebarCategory: description: Категория боковой панели пользователя type: object properties: id: type: string user_id: type: string team_id: type: string sort_order: type: integer format: int64 sorting: $ref: "#/components/schemas/SidebarCategorySorting" type: $ref: "#/components/schemas/SidebarCategoryType" display_name: type: string muted: type: boolean collapsed: type: boolean required: - id - user_id - team_id - sort_order - sorting - type - display_name - muted - collapsed SidebarCategoryWithChannels: description: Категория боковой панели пользователя с её каналами allOf: - $ref: "#/components/schemas/SidebarCategory" - type: object properties: channel_ids: type: array items: type: string required: - channel_ids OrderedSidebarCategories: description: Список категорий пользователя с их каналами type: object properties: order: type: array items: type: string categories: type: array items: $ref: "#/components/schemas/SidebarCategoryWithChannels" required: - order - categories Bot: description: Учетная запись бота type: object properties: user_id: description: ID пользователя, связанного с записью. type: string create_at: description: Время в миллисекундах, когда бот был создан type: integer format: int64 update_at: description: Время в миллисекундах, когда бот был в последний раз обновлен type: integer format: int64 delete_at: description: Время в миллисекундах, когда бот был удален type: integer format: int64 username: type: string display_name: type: string description: type: string owner_id: description: ID пользователя, который в настоящее время владеет этим ботом. type: string Server_Busy: type: object properties: busy: description: True, если сервер помечен как занятый (под высокой нагрузкой) type: boolean expires: description: временная метка - количество секунд с 1 января 1970 года UTC. type: integer format: int64 GroupWithSchemeAdmin: description: группа с добавленной информацией об администраторе схемы type: object properties: group: $ref: "#/components/schemas/Group" scheme_admin: type: boolean GroupsAssociatedToChannels: description: > карта id канала(ов) к набору групп, которые ограничивают соответствующий канал в команде type: object additionalProperties: type: array items: $ref: "#/components/schemas/GroupWithSchemeAdmin" OrphanedRecord: description: объект, содержащий информацию об осиротевшей записи. type: object properties: parent_id: type: string description: id записи родительского отношения (таблицы). child_id: type: string description: id записи дочернего отношения (таблицы). UserThread: description: поток, который пользователь отслеживает type: object properties: id: type: string description: ID сообщения, которое является корнем этого потока reply_count: type: integer format: int64 description: количество ответов в этом потоке last_reply_at: type: integer format: int64 description: временная метка последнего сообщения в этом потоке last_viewed_at: type: integer format: int64 description: временная метка последнего просмотра пользователем этого потока participants: type: array description: > список пользователей, участвующих в этом потоке. включает только ID, если 'extended' не был установлен в 'true' items: $ref: "#/components/schemas/User" post: $ref: "#/components/schemas/Post" unread_replies: type: integer format: int64 unread_mentions: type: integer format: int64 required: - id - reply_count - last_reply_at - last_viewed_at - participants - post - unread_replies - unread_mentions RelationalIntegrityCheckData: description: | объект, содержащий результаты проверки целостности отношений. type: object properties: parent_name: type: string description: имя родительского отношения (таблицы). child_name: type: string description: имя дочернего отношения (таблицы). parent_id_attr: type: string description: | имя атрибута (столбца), содержащего id родителя. child_id_attr: type: string description: | имя атрибута (столбца), содержащего id дочернего элемента. records: description: список найденных осиротевших записей. type: array items: $ref: "#/components/schemas/OrphanedRecord" IntegrityCheckResult: description: объект с результатом проверки целостности. type: object properties: data: $ref: "#/components/schemas/RelationalIntegrityCheckData" err: type: string description: строковое значение, установленное в случае ошибки. UploadSession: description: > объект, содержащий информацию, используемую для отслеживания загрузки файла. type: object properties: id: description: Уникальный идентификатор загрузки. type: string type: description: Тип загрузки. type: string enum: - attachment - import create_at: description: Время создания загрузки в миллисекундах. type: integer format: int64 user_id: description: ID пользователя, выполняющего загрузку. type: string channel_id: description: ID канала для загрузки. type: string filename: description: Имя файла для загрузки. type: string file_size: description: Размер файла для загрузки в байтах. type: integer format: int64 file_offset: description: Количество загруженных данных в байтах. type: integer format: int64 Notice: type: object properties: id: description: ID уведомления type: string sysAdminOnly: description: Применяется ли это уведомление только к системным администраторам type: boolean teamAdminOnly: description: Применяется ли это уведомление только к администраторам команды type: boolean action: description: > Необязательное действие для выполнения при нажатии кнопки действия. (по умолчанию закрытие уведомления) type: string actionParam: description: > Необязательный параметр действия. Пример: {"action": "url", actionParam: "/console/some-page"} type: string actionText: description: | Необязательная замена текста кнопки действия (по умолчанию OK) type: string description: description: > Содержание уведомления. Используйте {{Time}} вместо обычного текста для поддержки белой маркировки. Текст поддерживает Markdown. type: string image: description: URL изображения для отображения type: string title: description: > Заголовок уведомления. Используйте {{Time}} вместо обычного текста для поддержки белой маркировки. Текст поддерживает Markdown. type: string AnnouncementBanner: type: object properties: version: description: Последняя версия баннера объявления type: integer enable: description: Включить баннер объявления type: boolean text: description: Текст баннера объявления type: string banner_color: description: Цвет баннера объявления type: string text_color: description: Цвет текста баннера объявления type: string allow_dismissal: description: Разрешить закрытие баннера type: boolean SharedChannel: type: object properties: id: description: ID канала общего канала type: string team_id: type: string home: description: Является ли это домашним кластером для общего канала type: boolean readonly: description: Является ли этот общий канал доступным только для чтения type: boolean name: description: > Имя канала, как оно отображается (может отличаться от оригинального имени канала) type: string display_name: description: Отображаемое имя канала, как оно отображается локально type: string purpose: type: string header: type: string creator_id: description: ID пользователя, который поделился каналом type: string create_at: description: Время в миллисекундах, когда канал был общим type: integer format: int64 update_at: description: > Время в миллисекундах, когда запись общего канала была в последний раз обновлена type: integer format: int64 remote_id: description: | ID удаленного кластера, где находится общий канал type: string RemoteClusterInfo: type: object properties: display_name: description: Отображаемое имя для удаленного кластера type: string create_at: description: Время в миллисекундах, когда удаленный кластер был создан type: integer format: int64 last_ping_at: description: > Время в миллисекундах, когда удаленный кластер был в последний раз успешно пингован type: integer format: int64 SystemStatusResponse: type: object properties: AndroidLatestVersion: description: Последняя поддерживаемая версия Android type: string AndroidMinVersion: description: Минимальная поддерживаемая версия Android type: string DesktopLatestVersion: description: Последняя поддерживаемая версия для настольных ПК type: string DesktopMinVersion: description: Минимальная поддерживаемая версия для настольных ПК type: string IosLatestVersion: description: Последняя поддерживаемая версия iOS type: string IosMinVersion: description: Минимальная поддерживаемая версия iOS type: string database_status: description: > Статус базы данных ("OK" или "UNHEALTHY"). Включено, когда параметр get_server_status установлен. type: string filestore_status: description: > Статус файлового хранилища ("OK" или "UNHEALTHY"). Включено, когда параметр get_server_status установлен. type: string status: description: > Статус сервера ("OK" или "UNHEALTHY"). Включено, когда параметр get_server_status установлен. type: string CanReceiveNotifications: description: > Может ли предоставленный ID устройства получать уведомления ("true", "false" или "unknown"). Включено, когда параметр device_id установлен. type: string UserThreads: type: object properties: total: description: Общее количество потоков (используется для постраничного вывода) type: integer format: int64 total_unread_threads: description: Общее количество непрочитанных потоков type: integer format: int64 unread_threads_o_channel: description: Количество непрочитанных потоков в каналах типа Open type: integer format: int64 unread_threads_p_channel: description: Количество непрочитанных потоков в каналах типа Private type: integer format: int64 unread_threads_d_channel: description: Количество непрочитанных потоков в каналах типа Direct type: integer format: int64 unread_threads_g_channel: description: Количество непрочитанных потоков в каналах типа Group type: integer format: int64 total_unread_mentions: description: Общее количество непрочитанных упоминаний type: integer format: int64 unread_mentions_o_channel: description: Количество непрочитанных упоминаний в каналах типа Open type: integer format: int64 unread_mentions_p_channel: description: Количество непрочитанных упоминаний в каналах типа Private type: integer format: int64 unread_mentions_d_channel: description: Количество непрочитанных упоминаний в каналах типа Direct type: integer format: int64 unread_mentions_g_channel: description: Количество непрочитанных упоминаний в каналах типа Group type: integer format: int64 threads: description: Массив потоков type: array items: $ref: "#/components/schemas/UserThread" required: - total - total_unread_threads - unread_threads_o_channel - unread_threads_p_channel - unread_threads_d_channel - unread_threads_g_channel - total_unread_mentions - unread_mentions_o_channel - unread_mentions_p_channel - unread_mentions_d_channel - unread_mentions_g_channel - threads UserThreadsStats: type: object properties: total_unread_mentions: description: Количество непрочитанных упоминаний type: integer has_unread_treads: description: Флаг непрочитанных потоков type: boolean LicenseRenewalLink: type: object properties: renewal_link: description: Ссылка на продление лицензии type: string System: type: object properties: name: description: Имя системного свойства type: string value: description: Значение системного свойства type: string Pagination: type: object properties: next_page_token: type: string description: Токен для получения следующих сообщений. ActivityFeed: type: object properties: items: type: array items: type: object properties: type: type: string description: | Тип элемента: * `mention` для сообщения с упоминанием * `reaction` для сообщения с реакциями enum: - mention - reaction item: type: object properties: team_id: type: string description: > ID команды, к которой принадлежит сообщение. Пусто для сообщения в личном. post: $ref: "#/components/schemas/Post" pagination: $ref: "#/components/schemas/Pagination" ChannelSuggestion: type: object properties: type: type: string description: | Тип элемента: * `channel` для частного, открытого и группового канала * `user` для личного канала enum: - channel - user channel: $ref: "#/components/schemas/Channel" user: $ref: "#/components/schemas/User" required: - type - channel ChannelSuggestionList: type: array items: $ref: "#/components/schemas/ChannelSuggestion" EmailInviteWithError: type: object properties: user_id: type: string description: ID пользователя email: type: string description: email got_invite_earlier: type: string description: пользователь уже имеет приглашение в этой команде sent: type: boolean description: Приглашение было отправлено added: type: boolean description: Пользователь был добавлен в каналы error: allOf: - $ref: "#/components/schemas/AppError" - type: object properties: params: type: object properties: retry_after_second: type: integer description: Время в секундах для повторной отправки приглашения remaining_sendings: type: integer description: > Указывает количество приглашений по электронной почте, которые пользователь все еще может попытаться отправить в рамках текущих ограничений скорости. EmailInviteWithErrorList: type: array items: $ref: "#/components/schemas/EmailInviteWithError" SearchIndexType: type: string enum: - post - file - channel - user - hashtag ConfcallTokenResponse: type: object properties: token: type: string description: Токен для присоединения к конференц-звонку IDWithErrorList: type: object properties: id: type: string description: ID элемента error: type: object $ref: "#/components/schemas/AppError" required: - id IncomingWebhookRequest: type: object description: Полезная нагрузка для входящего запроса вебхука. properties: text: type: string description: Обязательно, если `attachments` не установлен. username: type: string icon_url: type: string format: uri channel: type: string props: type: object attachments: type: array description: Обязательно, если `text` не установлен. items: $ref: "#/components/schemas/SlackAttachment" type: type: string icon_emoji: type: string UserCustomStatus: type: object required: - emoji - text - expires_at properties: emoji: type: string description: Любой эмодзи text: type: string description: Любой текст пользовательского статуса duration: $ref: "#/components/schemas/StatusDuration" description: > Продолжительность пользовательского статуса, может быть `thirty_minutes`, `one_hour`, `four_hours`, `today`, `this_week` или `date_and_time` expires_at: type: string description: > Время, когда пользовательский статус должен истечь. Должно быть в формате ISO. StatusDuration: type: string enum: - thirty_minutes - one_hour - four_hours - today - this_week - date_and_time x-enum-varnames: - ThirtyMinutes - OneHour - FourHours - Today - ThisWeek - DateAndTime UserStatus: type: string enum: - online - away - offline - dnd x-enum-varnames: - Online - Away - Offline - Dnd UserMentionNotificationType: type: string enum: - all - mention - none x-enum-varnames: - All - Mention - None UserReactionsNotificationType: type: string enum: - conversation - direct - none x-enum-varnames: - Conversation - Direct - None Workflow: type: object required: - author - channel_id - steps - title - trigger - type - id properties: author: type: string channel_id: type: string description: type: string steps: type: array items: $ref: "#/components/schemas/WorkflowStep" title: type: string trigger: type: string enum: - time - manual - userJoinedChannel - reaction x-enum-varnames: - Time - Manual - UserJoinedChannel - Reaction trigger_detail: type: string description: Зависит от триггера. type: type: string enum: - sendMessageToChannel - sendTemplateMessage x-enum-varnames: - SendMessageToChannel - SendTemplateMessage id: type: string WorkflowCreateRequest: type: object properties: user_id: type: string channel_id: type: string workflow: $ref: "#/components/schemas/Workflow" WorkflowMap: description: возвращает словарь элементов additionalProperties: $ref: "#/components/schemas/Workflow" type: object WorkflowStep: type: object required: - id - type properties: id: type: string name: type: string type: type: string enum: - sendMessageToChannel - sendTemplateMessage x-enum-varnames: - SendMessageToChannel - SendTemplateMessage form_fields: type: array description: Элементы ввода, см. https://docs.time-messenger.ru/integrations/interactive_dialogs/ items: $ref: "#/components/schemas/WorkflowFormField" channel_id: type: string template: $ref: "#/components/schemas/WorkflowTemplate" variables: type: array items: $ref: "#/components/schemas/WorkflowVariable" WorkflowFormField: type: object required: - display_name - name - type - optional properties: display_name: type: string name: type: string type: type: string enum: - select - text - textarea - bool - radio x-enum-varnames: - Select - Text - TextArea - Bool - Radio subtype: type: string default: type: string placeholder: type: string help_text: type: string optional: type: boolean min_length: type: integer max_length: type: integer data_source: type: string enum: - users - channels x-enum-varnames: - Users - Channels options: type: array items: $ref: "#/components/schemas/WorkflowOption" WorkflowOption: type: object required: - text - value properties: text: type: string value: type: string WorkflowTemplate: type: object properties: template: type: string type: type: string enum: - me - channel - user - otherChannel - otherUser x-enum-varnames: - Me - Channel - User - OtherChannel - OtherUser to: type: string WorkflowVariable: type: object properties: name: type: string expr: type: string WorkflowExportTask: type: object properties: workflow_id: type: string